{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.App.Internal.Resolving
  ( Resolver,
    LiftOperation,
    runRootResolverValue,
    lift,
    Failure,
    ResponseEvent (..),
    ResponseStream,
    cleanEvents,
    Result (..),
    ResultT (..),
    ObjectTypeResolver (..),
    WithOperation,
    PushEvents (..),
    subscribe,
    ResolverContext (..),
    unsafeInternalContext,
    RootResolverValue (..),
    resultOr,
    withArguments,
    -- Dynamic Resolver
    mkBoolean,
    mkFloat,
    mkInt,
    mkList,
    mkNull,
    mkString,
    mkValue,
    mkEnum,
    mkUnion,
    mkObject,
    SubscriptionField (..),
    getArguments,
    ResolverState,
    liftResolverState,
    ResolverEntry,
    sortErrors,
    EventHandler (..),
    requireObject,
    ResolverValue (..),
    NamedResolver (..),
    NamedResolverResult (..),
    NamedResolverRef (..),
  )
where

import Data.Morpheus.App.Internal.Resolving.Event
import Data.Morpheus.App.Internal.Resolving.Resolver
import Data.Morpheus.App.Internal.Resolving.ResolverState
import Data.Morpheus.App.Internal.Resolving.RootResolverValue
import Data.Morpheus.App.Internal.Resolving.Types
import Data.Morpheus.App.Internal.Resolving.Utils
import Data.Morpheus.Internal.Ext