module Data.Morpheus.Types
  ( resolver
  , mutResolver
  , toMutResolver
  
  , IORes
  , IOMutRes
  , IOSubRes
  , Resolver
  , SubRootRes
  , SubResolver(..)
  , Event(..)
  
  , GQLType(KIND, description)
  , GQLScalar(parseValue, serialize)
  
  , GQLRequest(..)
  , GQLResponse(..)
  , ID(..)
  , ScalarValue(..)
  , GQLRootResolver(..)
  , constRes
  ) where
import           Data.Morpheus.Types.GQLScalar      (GQLScalar (parseValue, serialize))
import           Data.Morpheus.Types.GQLType        (GQLType (KIND, description))
import           Data.Morpheus.Types.ID             (ID (..))
import           Data.Morpheus.Types.Internal.Value (ScalarValue (..))
import           Data.Morpheus.Types.IO             (GQLRequest (..), GQLResponse (..))
import           Data.Morpheus.Types.Resolver       (Event (..), GQLRootResolver (..), MutResolver, Resolver,
                                                     SubResolver (..), SubRootRes, mutResolver, resolver, toMutResolver)
constRes :: Monad m => b -> a -> m b
constRes = const . return
type IORes = Resolver IO
type IOMutRes e c = MutResolver IO e c
type IOSubRes e c = SubResolver IO e c