module Data.CryptoID.Class.ImplicitNamespace
( E.MonadCrypto(..)
, CryptoIDNamespace
, HasCryptoID
, CryptoID, pattern E.CryptoID, E.ciphertext
, encrypt, decrypt
) where
import qualified Data.CryptoID.Class as E
import qualified Data.CryptoID as E
import GHC.TypeLits (Symbol)
type family CryptoIDNamespace (ciphertext :: *) (plaintext :: *) :: Symbol
type HasCryptoID ciphertext plaintext = E.HasCryptoID (CryptoIDNamespace ciphertext plaintext) ciphertext plaintext
type CryptoID ciphertext plaintext = E.CryptoID (CryptoIDNamespace ciphertext plaintext) ciphertext
encrypt :: HasCryptoID ciphertext plaintext m => plaintext -> m (CryptoID ciphertext plaintext)
encrypt = E.encrypt
decrypt :: HasCryptoID ciphertext plaintext m => CryptoID ciphertext plaintext -> m plaintext
decrypt = E.decrypt