{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilyDependencies #-}
{-# LANGUAGE UndecidableInstances #-}
module Cardano.Ledger.Core
(
TxOut,
TxBody,
Value,
Script,
AuxiliaryData,
PParams,
PParamsDelta,
Witnesses,
Tx,
ChainData,
SerialisableData,
AnnotatedData,
EraRule,
)
where
import Cardano.Binary (Annotator, FromCBOR (..), ToCBOR (..))
import Data.Kind (Type)
import Data.Typeable (Typeable)
import GHC.TypeLits (Symbol)
import NoThunks.Class (NoThunks)
type family Tx era = (r :: Type) | r -> era
type family TxOut era = (r :: Type) | r -> era
type family Value era :: Type
type family TxBody era = (r :: Type) | r -> era
type family Script era :: Type
type family AuxiliaryData era = (r :: Type) | r -> era
type family PParams era = (r :: Type) | r -> era
type family PParamsDelta era = (r :: Type) | r -> era
type family Witnesses era = (r :: Type) | r -> era
type ChainData t = (Eq t, Show t, NoThunks t, Typeable t)
type SerialisableData t = (FromCBOR t, ToCBOR t)
type AnnotatedData t = (FromCBOR (Annotator t), ToCBOR t)
type family EraRule (k :: Symbol) era :: Type