{-# LANGUAGE MultiParamTypeClasses #-}

module Data.Morpheus.Wrapper
  ( GQLRoot(..)
  , EnumOf
  , ScalarOf
  , (::->)(..)
  , wrap
  , unwrap
  ) where

import           Data.Morpheus.Types.Describer ((::->) (Resolver), EnumOf (..), ScalarOf (..))
import           Data.Morpheus.Types.Types     (GQLRoot (..))

class Wrapper m where
  wrap :: a -> m a
  unwrap :: m a -> a

instance Wrapper EnumOf where
  wrap = EnumOf
  unwrap (EnumOf x) = x

instance Wrapper ScalarOf where
  wrap = ScalarOf
  unwrap (ScalarOf x) = x