{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Data.Morpheus.Server.Types.Types
  ( Undefined (..),
    Pair (..),
    TypeGuard (..),
    Arg (..),
    __typenameUndefined,
  )
where

import Data.Kind (Type)
import Data.Morpheus.Types.Internal.AST (TypeName)
import GHC.Generics
  ( Generic,
  )
import GHC.TypeLits (Symbol)
import Prelude (Bool, Show)

__typenameUndefined :: TypeName
__typenameUndefined :: TypeName
__typenameUndefined = TypeName
"Undefined"

newtype Undefined (m :: Type -> Type) = Undefined Bool deriving (Int -> Undefined m -> ShowS
[Undefined m] -> ShowS
Undefined m -> String
(Int -> Undefined m -> ShowS)
-> (Undefined m -> String)
-> ([Undefined m] -> ShowS)
-> Show (Undefined m)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (m :: * -> *). Int -> Undefined m -> ShowS
forall (m :: * -> *). [Undefined m] -> ShowS
forall (m :: * -> *). Undefined m -> String
$cshowsPrec :: forall (m :: * -> *). Int -> Undefined m -> ShowS
showsPrec :: Int -> Undefined m -> ShowS
$cshow :: forall (m :: * -> *). Undefined m -> String
show :: Undefined m -> String
$cshowList :: forall (m :: * -> *). [Undefined m] -> ShowS
showList :: [Undefined m] -> ShowS
Show, (forall x. Undefined m -> Rep (Undefined m) x)
-> (forall x. Rep (Undefined m) x -> Undefined m)
-> Generic (Undefined m)
forall x. Rep (Undefined m) x -> Undefined m
forall x. Undefined m -> Rep (Undefined m) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (m :: * -> *) x. Rep (Undefined m) x -> Undefined m
forall (m :: * -> *) x. Undefined m -> Rep (Undefined m) x
$cfrom :: forall (m :: * -> *) x. Undefined m -> Rep (Undefined m) x
from :: forall x. Undefined m -> Rep (Undefined m) x
$cto :: forall (m :: * -> *) x. Rep (Undefined m) x -> Undefined m
to :: forall x. Rep (Undefined m) x -> Undefined m
Generic)

data Pair k v = Pair k v deriving ((forall x. Pair k v -> Rep (Pair k v) x)
-> (forall x. Rep (Pair k v) x -> Pair k v) -> Generic (Pair k v)
forall x. Rep (Pair k v) x -> Pair k v
forall x. Pair k v -> Rep (Pair k v) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k v x. Rep (Pair k v) x -> Pair k v
forall k v x. Pair k v -> Rep (Pair k v) x
$cfrom :: forall k v x. Pair k v -> Rep (Pair k v) x
from :: forall x. Pair k v -> Rep (Pair k v) x
$cto :: forall k v x. Rep (Pair k v) x -> Pair k v
to :: forall x. Rep (Pair k v) x -> Pair k v
Generic)

data TypeGuard interface union
  = ResolveInterface interface
  | ResolveType union

newtype Arg (name :: Symbol) a = Arg {forall (name :: Symbol) a. Arg name a -> a
argValue :: a}
  deriving
    ( Int -> Arg name a -> ShowS
[Arg name a] -> ShowS
Arg name a -> String
(Int -> Arg name a -> ShowS)
-> (Arg name a -> String)
-> ([Arg name a] -> ShowS)
-> Show (Arg name a)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (name :: Symbol) a. Show a => Int -> Arg name a -> ShowS
forall (name :: Symbol) a. Show a => [Arg name a] -> ShowS
forall (name :: Symbol) a. Show a => Arg name a -> String
$cshowsPrec :: forall (name :: Symbol) a. Show a => Int -> Arg name a -> ShowS
showsPrec :: Int -> Arg name a -> ShowS
$cshow :: forall (name :: Symbol) a. Show a => Arg name a -> String
show :: Arg name a -> String
$cshowList :: forall (name :: Symbol) a. Show a => [Arg name a] -> ShowS
showList :: [Arg name a] -> ShowS
Show,
      (forall x. Arg name a -> Rep (Arg name a) x)
-> (forall x. Rep (Arg name a) x -> Arg name a)
-> Generic (Arg name a)
forall x. Rep (Arg name a) x -> Arg name a
forall x. Arg name a -> Rep (Arg name a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (name :: Symbol) a x. Rep (Arg name a) x -> Arg name a
forall (name :: Symbol) a x. Arg name a -> Rep (Arg name a) x
$cfrom :: forall (name :: Symbol) a x. Arg name a -> Rep (Arg name a) x
from :: forall x. Arg name a -> Rep (Arg name a) x
$cto :: forall (name :: Symbol) a x. Rep (Arg name a) x -> Arg name a
to :: forall x. Rep (Arg name a) x -> Arg name a
Generic
    )