module Potoki.Core.Transform
(
  Transform(..),
  consume,
  produce,
  mapFetch,
  -- * Basics
  ioTransform,
  take,
  takeWhile,
  drop,
  mapFilter,
  filter,
  just,
  list,
  vector,
  batch,
  distinctBy,
  distinct,
  executeIO,
  mapInIO,
  reportProgress,
  handleProgressAndCountOnInterval,
  uniquify,
  -- * ByteString
  builderChunks,
  extractLines,
  extractLinesWithoutTrail,
  extractLinesConcurrently,
  -- * State
  R.runState,
  R.execState,
  R.evalState,
  -- * Parsing
  B.scan,
  A.parseBytes,
  A.parseText,
  A.parseLineBytesConcurrently,
  A.parseNonEmptyLineBytesConcurrently,
  -- * Concurrency
  N.bufferize,
  N.bufferizeFlushing,
  N.concurrently,
  N.concurrentlyInOrder,
  N.unsafeConcurrently,
  N.async,
  N.concurrentlyWithBatching,
  N.concurrentlyInOrderWithBatching,
  -- * File IO
  deleteFile,
  appendBytesToFile,
  writeTextToFile,
  -- * Debugging
  count,
  mapInIOWithCounter,
  handleCount,
  handleCountOnInterval,
  traceWithCounter,
)
where

import Potoki.Core.Types
import Potoki.Core.Transform.Basic
import Potoki.Core.Transform.FileIO
import Potoki.Core.Transform.ByteString
import qualified Potoki.Core.Transform.Attoparsec as A
import qualified Potoki.Core.Transform.Scanner as B
import qualified Potoki.Core.Transform.Concurrency as N
import qualified Potoki.Core.Transform.State as R