{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Mary.TxAuxData (
module Cardano.Ledger.Allegra.TxAuxData,
) where
import Cardano.Ledger.Allegra.TxAuxData (
AllegraEraTxAuxData (..),
AllegraTxAuxData (..),
metadataAllegraTxAuxDataL,
timelockScriptsAllegraTxAuxDataL,
)
import Cardano.Ledger.Core
import Cardano.Ledger.Mary.Era (MaryEra)
import Cardano.Ledger.Mary.Scripts ()
import Cardano.Ledger.Shelley.TxAuxData (validMetadatum)
import Control.DeepSeq (deepseq)
instance EraTxAuxData MaryEra where
type TxAuxData MaryEra = AllegraTxAuxData MaryEra
mkBasicTxAuxData :: TxAuxData MaryEra
mkBasicTxAuxData = Map Word64 Metadatum
-> StrictSeq (Timelock MaryEra) -> AllegraTxAuxData MaryEra
forall era.
Era era =>
Map Word64 Metadatum
-> StrictSeq (Timelock era) -> AllegraTxAuxData era
AllegraTxAuxData Map Word64 Metadatum
forall a. Monoid a => a
mempty StrictSeq (Timelock MaryEra)
forall a. Monoid a => a
mempty
metadataTxAuxDataL :: Lens' (TxAuxData MaryEra) (Map Word64 Metadatum)
metadataTxAuxDataL = (Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> AllegraTxAuxData MaryEra -> f (AllegraTxAuxData MaryEra)
(Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> TxAuxData MaryEra -> f (TxAuxData MaryEra)
forall era.
Era era =>
Lens' (AllegraTxAuxData era) (Map Word64 Metadatum)
Lens' (AllegraTxAuxData MaryEra) (Map Word64 Metadatum)
metadataAllegraTxAuxDataL
upgradeTxAuxData :: EraTxAuxData (PreviousEra MaryEra) =>
TxAuxData (PreviousEra MaryEra) -> TxAuxData MaryEra
upgradeTxAuxData (AllegraTxAuxData Map Word64 Metadatum
md StrictSeq (Timelock AllegraEra)
scripts) = Map Word64 Metadatum
-> StrictSeq (Timelock MaryEra) -> AllegraTxAuxData MaryEra
forall era.
Era era =>
Map Word64 Metadatum
-> StrictSeq (Timelock era) -> AllegraTxAuxData era
AllegraTxAuxData Map Word64 Metadatum
md (StrictSeq (Timelock MaryEra) -> AllegraTxAuxData MaryEra)
-> StrictSeq (Timelock MaryEra) -> AllegraTxAuxData MaryEra
forall a b. (a -> b) -> a -> b
$ Timelock AllegraEra -> Timelock MaryEra
Script (PreviousEra MaryEra) -> Script MaryEra
forall era.
(EraScript era, EraScript (PreviousEra era)) =>
Script (PreviousEra era) -> Script era
upgradeScript (Timelock AllegraEra -> Timelock MaryEra)
-> StrictSeq (Timelock AllegraEra) -> StrictSeq (Timelock MaryEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StrictSeq (Timelock AllegraEra)
scripts
validateTxAuxData :: ProtVer -> TxAuxData MaryEra -> Bool
validateTxAuxData ProtVer
_ (AllegraTxAuxData Map Word64 Metadatum
md StrictSeq (Timelock MaryEra)
as) = StrictSeq (Timelock MaryEra)
as StrictSeq (Timelock MaryEra) -> Bool -> Bool
forall a b. NFData a => a -> b -> b
`deepseq` (Metadatum -> Bool) -> Map Word64 Metadatum -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Metadatum -> Bool
validMetadatum Map Word64 Metadatum
md
instance AllegraEraTxAuxData MaryEra where
timelockScriptsTxAuxDataL :: Lens' (TxAuxData MaryEra) (StrictSeq (Timelock MaryEra))
timelockScriptsTxAuxDataL = (StrictSeq (Timelock MaryEra) -> f (StrictSeq (Timelock MaryEra)))
-> AllegraTxAuxData MaryEra -> f (AllegraTxAuxData MaryEra)
(StrictSeq (Timelock MaryEra) -> f (StrictSeq (Timelock MaryEra)))
-> TxAuxData MaryEra -> f (TxAuxData MaryEra)
forall era.
Era era =>
Lens' (AllegraTxAuxData era) (StrictSeq (Timelock era))
Lens' (AllegraTxAuxData MaryEra) (StrictSeq (Timelock MaryEra))
timelockScriptsAllegraTxAuxDataL