content: -- | Lifted "Control.Concurrent.Chan".
  --
  -- @since 0.1.0.0
  module UnliftIO.Chan
    ( Chan
    , newChan
    , writeChan
    , readChan
    , dupChan
    , getChanContents
    , writeList2Chan
    ) where
  
  import Control.Monad.IO.Unlift
  import Control.Concurrent.Chan (Chan)
  import qualified Control.Concurrent.Chan as C
  
  -- | Lifted 'C.newChan'.
  --
  -- @since 0.1.0.0
  newChan :: MonadIO m => m (Chan a)
  newChan = liftIO C.newChan
  
  -- | Lifted 'C.writeChan'.
  --
  -- @since 0.1.0.0
  writeChan :: MonadIO m => Chan a -> a -> m ()
  writeChan c = liftIO . C.writeChan c
  
  -- | Lifted 'C.readChan'.
  --
  -- @since 0.1.0.0
  readChan :: MonadIO m => Chan a -> m a
  readChan = liftIO . C.readChan
  
  -- | Lifted 'C.dupChan'.
  --
  -- @since 0.1.0.0
  dupChan :: MonadIO m => Chan a -> m (Chan a)
  dupChan = liftIO . C.dupChan
  
  -- | Lifted 'C.getChanContents'.
  --
  -- @since 0.1.0.0
  getChanContents :: MonadIO m => Chan a -> m [a]
  getChanContents = liftIO . C.getChanContents
  
  -- | Lifted 'C.writeList2Chan'.
  --
  -- @since 0.1.0.0
  writeList2Chan :: MonadIO m => Chan a -> [a] -> m ()
  writeList2Chan c = liftIO . C.writeList2Chan c
  