module Heart.Core.Prelude
  ( module Prelude
  , Alternative (..)
  , Coercible
  , FromJSON (..)
  , FromJSONKey
  , Generic
  , Getter
  , HasCallStack
  , Exception (..)
  , Hashable (..)
  , HashMap
  , HashSet
  , Identity (..)
  , Int64
  , Iso'
  , IsList
  , IsString
  , Lens'
  , ListT (..)
  , Map
  , MonadCatch (..)
  , MonadFail (..)
  , MonadIO (..)
  , MonadMask (..)
  , MonadReader (..)
  , MonadState (..)
  , MonadThrow (..)
  , MonadTrans (..)
  , MonadUnliftIO (..)
  , Newtype
  , NFData
  , Prism'
  , Proxy (..)
  , Rep
  , Seq (..)
  , Set
  , Setter'
  , SomeException
  , Text
  , ToJSON (..)
  , ToJSONKey
  , Typeable
  , UnliftIO (..)
  , Void
  , ap
  , asum
  , catchJust
  , cast
  , coerce
  , coerced
  , foldl'
  , foldM
  , for
  , for_
  , iso
  , makeLenses
  , makePrisms
  , modifying
  , over
  , review
  , set
  , simple
  , toList
  , unless
  , use
  , view
  , when
  ) where

import Control.Applicative (Alternative (..))
import Control.DeepSeq (NFData)
import Control.Exception (Exception (..), SomeException)
import Control.Lens (Getter, Iso', Lens', Prism', Setter', coerced, iso, modifying, over, review, set, simple, use,
                     view)
import Control.Lens.TH (makeLenses, makePrisms)
import Control.Monad (ap, foldM, unless, when)
import Control.Monad.Catch (MonadCatch (..), MonadMask (..), MonadThrow (..), catchJust)
import Control.Monad.Fail (MonadFail (..))
import Control.Monad.Identity (Identity (..))
import Control.Monad.IO.Class (MonadIO (..))
import Control.Monad.IO.Unlift (MonadUnliftIO (..), UnliftIO (..))
import Control.Monad.Reader (MonadReader (..))
import Control.Monad.State (MonadState (..))
import Control.Monad.Trans (MonadTrans (..))
import Control.Newtype.Generics (Newtype)
import Data.Aeson (FromJSON (..), FromJSONKey, ToJSON (..), ToJSONKey)
import Data.Coerce (Coercible, coerce)
import Data.Foldable (asum, for_, toList)
import Data.Hashable (Hashable (..))
import Data.HashMap.Strict (HashMap)
import Data.HashSet (HashSet)
import Data.Int (Int64)
import Data.List (foldl')
import Data.Map.Strict (Map)
import Data.Proxy (Proxy (..))
import Data.Sequence (Seq (..))
import Data.Set (Set)
import Data.String (IsString)
import Data.Text (Text)
import Data.Traversable (for)
import Data.Typeable (Typeable, cast)
import Data.Void (Void)
import GHC.Exts (IsList)
import GHC.Generics (Generic, Rep)
import GHC.Stack (HasCallStack)
import ListT (ListT (..))
import Prelude hiding (fail, log)