content: {-# LANGUAGE RankNTypes #-}
  {-# LANGUAGE DeriveFunctor #-}
  {-# LANGUAGE FlexibleContexts #-}
  -- | If this is your first time with conduit, you should probably start with
  -- the tutorial:
  -- <https://github.com/snoyberg/conduit#readme>.
  module Data.Conduit
      ( -- * Core interface
        -- ** Types
        ConduitT
        -- *** Deprecated
      , Source
      , Conduit
      , Sink
      , ConduitM
        -- ** Connect/fuse operators
      , (.|)
      , connect
      , fuse
        -- *** Deprecated
      , ($$)
      , ($=)
      , (=$)
      , (=$=)
  
        -- *** Fuse with upstream results
      , fuseBoth
      , fuseBothMaybe
      , fuseUpstream
  
        -- ** Primitives
      , await
      , yield
      , yieldM
      , leftover
      , runConduit
      , runConduitPure
      , runConduitRes
  
        -- ** Finalization
      , bracketP
  
        -- ** Exception handling
      , catchC
      , handleC
      , tryC
  
        -- * Generalized conduit types
      , Producer
      , Consumer
      , toProducer
      , toConsumer
  
        -- * Utility functions
      , awaitForever
      , transPipe
      , mapOutput
      , mapOutputMaybe
      , mapInput
      , mapInputM
      , mergeSource
      , passthroughSink
      , sourceToList
  
        -- * Connect-and-resume
      , SealedConduitT
      , sealConduitT
      , unsealConduitT
      , ($$+)
      , ($$++)
      , ($$+-)
      , ($=+)
  
        -- ** For @Conduit@s
      , (=$$+)
      , (=$$++)
      , (=$$+-)
  
        -- * Fusion with leftovers
      , fuseLeftovers
      , fuseReturnLeftovers
  
        -- * Flushing
      , Flush (..)
  
        -- * Newtype wrappers
        -- ** ZipSource
      , ZipSource (..)
      , sequenceSources
  
        -- ** ZipSink
      , ZipSink (..)
      , sequenceSinks
  
        -- ** ZipConduit
      , ZipConduit (..)
      , sequenceConduits
  
        -- * Convenience reexports
      , Void -- FIXME consider instead relaxing type of runConduit
      ) where
  
  import Data.Conduit.Internal.Conduit
  import Data.Void (Void)
  import Data.Functor.Identity (Identity, runIdentity)
  import Control.Monad.Trans.Resource (ResourceT, runResourceT)
  import Control.Monad.IO.Unlift (MonadUnliftIO)
  