{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE FlexibleContexts #-}
module Data.Conduit
    ( 
      
      ConduitT
      
    , Source
    , Conduit
    , Sink
    , ConduitM
      
    , (.|)
    , connect
    , fuse
      
    , ($$)
    , ($=)
    , (=$)
    , (=$=)
      
    , fuseBoth
    , fuseBothMaybe
    , fuseUpstream
      
    , await
    , yield
    , yieldM
    , leftover
    , runConduit
    , runConduitPure
    , runConduitRes
      
    , bracketP
      
    , catchC
    , handleC
    , tryC
      
    , Producer
    , Consumer
    , toProducer
    , toConsumer
      
    , awaitForever
    , transPipe
    , mapOutput
    , mapOutputMaybe
    , mapInput
    , mapInputM
    , mergeSource
    , passthroughSink
    , sourceToList
      
    , SealedConduitT
    , sealConduitT
    , unsealConduitT
    , ($$+)
    , ($$++)
    , ($$+-)
    , ($=+)
      
    , (=$$+)
    , (=$$++)
    , (=$$+-)
      
    , fuseLeftovers
    , fuseReturnLeftovers
      
    , Flush (..)
      
      
    , ZipSource (..)
    , sequenceSources
      
    , ZipSink (..)
    , sequenceSinks
      
    , ZipConduit (..)
    , sequenceConduits
      
    , Void 
    ) 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)