    {-# OPTIONS_HADDOCK not-home #-}

    -- |
    -- Module      :  GHC.IO
    -- Copyright   :  (c) The University of Glasgow 1994-2023
    -- License     :  see libraries/base/LICENSE
    --
    -- Maintainer  :  ghc-devs@haskell.org
    -- Stability   :  internal
    -- Portability :  non-portable (GHC Extensions)
    --
    -- Definitions for the 'IO' monad and its friends.
    --
    -- /The API of this module is unstable and not meant to be consumed by the general public./
    -- If you absolutely must depend on it, make sure to use a tight upper
    -- bound, e.g., @base < 4.X@ rather than @base < 5@, because the interface can
    -- change rapidly without much warning.
    --

    module GHC.IO (
            IO(..), unIO, liftIO, mplusIO,
            unsafePerformIO, unsafeInterleaveIO,
            unsafeDupablePerformIO, unsafeDupableInterleaveIO,
            noDuplicate,

            -- To and from ST
            stToIO, ioToST, unsafeIOToST, unsafeSTToIO,

            FilePath,

            catch, catchException, catchAny, throwIO,
            mask, mask_, uninterruptibleMask, uninterruptibleMask_,
            MaskingState(..), getMaskingState,
            unsafeUnmask, interruptible,
            onException, bracket, finally, evaluate,
            mkUserError
        ) where

    import GHC.Internal.IO