{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Babbage.TxAuxData () where

import Cardano.Ledger.Alonzo.Core
import Cardano.Ledger.Alonzo.TxAuxData (
  AlonzoTxAuxData (..),
  metadataAlonzoTxAuxDataL,
  plutusScriptsAllegraTxAuxDataL,
  timelockScriptsAlonzoTxAuxDataL,
  translateAlonzoTxAuxData,
  validateAlonzoTxAuxData,
 )
import Cardano.Ledger.Babbage.Era
import Cardano.Ledger.Babbage.Scripts ()

instance EraTxAuxData BabbageEra where
  type TxAuxData BabbageEra = AlonzoTxAuxData BabbageEra

  mkBasicTxAuxData :: TxAuxData BabbageEra
mkBasicTxAuxData = Map Word64 Metadatum
-> StrictSeq (Timelock BabbageEra)
-> Map Language (NonEmpty PlutusBinary)
-> AlonzoTxAuxData BabbageEra
forall era.
(HasCallStack, AlonzoEraScript era) =>
Map Word64 Metadatum
-> StrictSeq (Timelock era)
-> Map Language (NonEmpty PlutusBinary)
-> AlonzoTxAuxData era
AlonzoTxAuxData Map Word64 Metadatum
forall a. Monoid a => a
mempty StrictSeq (Timelock BabbageEra)
forall a. Monoid a => a
mempty Map Language (NonEmpty PlutusBinary)
forall a. Monoid a => a
mempty

  metadataTxAuxDataL :: Lens' (TxAuxData BabbageEra) (Map Word64 Metadatum)
metadataTxAuxDataL = (Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> TxAuxData BabbageEra -> f (TxAuxData BabbageEra)
(Map Word64 Metadatum -> f (Map Word64 Metadatum))
-> AlonzoTxAuxData BabbageEra -> f (AlonzoTxAuxData BabbageEra)
forall era.
Era era =>
Lens' (AlonzoTxAuxData era) (Map Word64 Metadatum)
Lens' (AlonzoTxAuxData BabbageEra) (Map Word64 Metadatum)
metadataAlonzoTxAuxDataL

  upgradeTxAuxData :: EraTxAuxData (PreviousEra BabbageEra) =>
TxAuxData (PreviousEra BabbageEra) -> TxAuxData BabbageEra
upgradeTxAuxData = TxAuxData (PreviousEra BabbageEra) -> TxAuxData BabbageEra
AlonzoTxAuxData AlonzoEra -> AlonzoTxAuxData BabbageEra
forall era1 era2.
(AlonzoEraScript era1, AlonzoEraScript era2) =>
AlonzoTxAuxData era1 -> AlonzoTxAuxData era2
translateAlonzoTxAuxData

  validateTxAuxData :: ProtVer -> TxAuxData BabbageEra -> Bool
validateTxAuxData = ProtVer -> TxAuxData BabbageEra -> Bool
ProtVer -> AlonzoTxAuxData BabbageEra -> Bool
forall era.
(AlonzoEraScript era, Script era ~ AlonzoScript era) =>
ProtVer -> AlonzoTxAuxData era -> Bool
validateAlonzoTxAuxData

instance AllegraEraTxAuxData BabbageEra where
  timelockScriptsTxAuxDataL :: Lens' (TxAuxData BabbageEra) (StrictSeq (Timelock BabbageEra))
timelockScriptsTxAuxDataL = (StrictSeq (Timelock BabbageEra)
 -> f (StrictSeq (Timelock BabbageEra)))
-> TxAuxData BabbageEra -> f (TxAuxData BabbageEra)
(StrictSeq (Timelock BabbageEra)
 -> f (StrictSeq (Timelock BabbageEra)))
-> AlonzoTxAuxData BabbageEra -> f (AlonzoTxAuxData BabbageEra)
forall era.
Era era =>
Lens' (AlonzoTxAuxData era) (StrictSeq (Timelock era))
Lens'
  (AlonzoTxAuxData BabbageEra) (StrictSeq (Timelock BabbageEra))
timelockScriptsAlonzoTxAuxDataL

instance AlonzoEraTxAuxData BabbageEra where
  plutusScriptsTxAuxDataL :: Lens' (TxAuxData BabbageEra) (Map Language (NonEmpty PlutusBinary))
plutusScriptsTxAuxDataL = (Map Language (NonEmpty PlutusBinary)
 -> f (Map Language (NonEmpty PlutusBinary)))
-> TxAuxData BabbageEra -> f (TxAuxData BabbageEra)
(Map Language (NonEmpty PlutusBinary)
 -> f (Map Language (NonEmpty PlutusBinary)))
-> AlonzoTxAuxData BabbageEra -> f (AlonzoTxAuxData BabbageEra)
forall era.
Era era =>
Lens' (AlonzoTxAuxData era) (Map Language (NonEmpty PlutusBinary))
Lens'
  (AlonzoTxAuxData BabbageEra) (Map Language (NonEmpty PlutusBinary))
plutusScriptsAllegraTxAuxDataL