{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
module Cardano.Ledger.Shelley where
import Cardano.Ledger.Compactible
import Cardano.Ledger.Core
import qualified Cardano.Ledger.Crypto as CryptoClass
import Cardano.Ledger.Era
import Cardano.Ledger.Torsor (Torsor (..))
import Cardano.Ledger.Val (Val)
import Shelley.Spec.Ledger.Coin (Coin)
import Shelley.Spec.Ledger.Hashing (EraIndependentTxBody, HashAnnotated (..))
data ShelleyEra c
instance CryptoClass.Crypto c => Era (ShelleyEra c) where
type Crypto (ShelleyEra c) = c
type instance Value (ShelleyEra c) = Coin
type TxBodyConstraints era =
( ChainData (TxBody era),
AnnotatedData (TxBody era),
HashAnnotated (TxBody era) era,
HashIndex (TxBody era) ~ EraIndependentTxBody
)
type ShelleyBased era =
( Era era,
Val (Value era),
Compactible (Value era),
ChainData (Value era),
SerialisableData (Value era),
SerialisableData (CompactForm (Value era)),
ChainData (Delta (Value era)),
SerialisableData (Delta (Value era)),
Torsor (Value era),
TxBodyConstraints era,
ChainData (Script era),
AnnotatedData (Script era)
)