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

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

import GHC.Generics
  ( Generic,
  )
import GHC.TypeLits (Symbol)
import Prelude
  ( Show,
  )

data Undefined (m :: * -> *) = Undefined 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
showList :: [Undefined m] -> ShowS
$cshowList :: forall (m :: * -> *). [Undefined m] -> ShowS
show :: Undefined m -> String
$cshow :: forall (m :: * -> *). Undefined m -> String
showsPrec :: Int -> Undefined m -> ShowS
$cshowsPrec :: forall (m :: * -> *). Int -> 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
$cto :: forall (m :: * -> *) x. Rep (Undefined m) x -> Undefined m
$cfrom :: forall (m :: * -> *) x. Undefined m -> Rep (Undefined m) x
Generic)

data Pair k v = Pair
  { Pair k v -> k
key :: k,
    Pair k v -> v
value :: 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
$cto :: forall k v x. Rep (Pair k v) x -> Pair k v
$cfrom :: forall k v x. Pair k v -> Rep (Pair k v) x
Generic)

data TypeGuard interface union
  = ResolveInterface interface
  | ResolveType union

newtype Arg (name :: Symbol) a = Arg {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
showList :: [Arg name a] -> ShowS
$cshowList :: forall (name :: Symbol) a. Show a => [Arg name a] -> ShowS
show :: Arg name a -> String
$cshow :: forall (name :: Symbol) a. Show a => Arg name a -> String
showsPrec :: Int -> Arg name a -> ShowS
$cshowsPrec :: forall (name :: Symbol) a. Show a => Int -> 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
$cto :: forall (name :: Symbol) a x. Rep (Arg name a) x -> Arg name a
$cfrom :: forall (name :: Symbol) a x. Arg name a -> Rep (Arg name a) x
Generic
    )