module Data.CryptoID
  ( CryptoID(..)
  ) where

import GHC.Generics (Generic)
import Data.Typeable (Typeable)
import Data.Data (Data)
import GHC.TypeLits (Symbol)

import Data.Binary (Binary)
import Foreign.Storable (Storable)

import Web.PathPieces (PathPiece)
import Web.HttpApiData (ToHttpApiData, FromHttpApiData)

newtype CryptoID (namespace :: Symbol) a = CryptoID { ciphertext :: a }
  deriving ( Eq, Ord
           , Read, Show
           , Binary, Storable
           , Data, Typeable, Generic
           , PathPiece, ToHttpApiData, FromHttpApiData
           )