{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-deprecations #-}

module Cardano.Ledger.Api.Tx.Body (
  -- | Building and inspecting transaction outputs
  module Cardano.Ledger.Api.Tx.Out,
  -- | Working with Timelock scripts and Plutus scripts
  module Cardano.Ledger.Api.Scripts,
  EraTxBody (TxBody),
  mkBasicTxBody,
  inputsTxBodyL,
  outputsTxBodyL,
  feeTxBodyL,
  withdrawalsTxBodyL,
  Withdrawals (..),
  auxDataHashTxBodyL,
  TxAuxDataHash (..),
  spendableInputsTxBodyF,
  allInputsTxBodyF,
  evalBalanceTxBody,
  txIdTxBody,

  -- * Any Era
  AnyEraTxBody (..),

  -- * Shelley Era
  ShelleyEraTxBody,
  ttlTxBodyL,
  updateTxBodyL,
  certsTxBodyL,

  -- * Allegra Era
  AllegraEraTxBody,
  vldtTxBodyL,
  ValidityInterval (..),
  invalidBeforeL,
  invalidHereAfterL,

  -- * Mary Era
  MaryEraTxBody,
  mintTxBodyL,
  mintValueTxBodyF,
  mintedTxBodyF,

  -- * Alonzo Era
  AlonzoEraTxBody,
  collateralInputsTxBodyL,
  reqSignerHashesTxBodyL,
  scriptIntegrityHashTxBodyL,
  ScriptIntegrityHash,
  networkIdTxBodyL,
  redeemerPointer,
  redeemerPointerInverse,

  -- * Babbage Era
  BabbageEraTxBody,
  sizedOutputsTxBodyL,
  referenceInputsTxBodyL,
  totalCollateralTxBodyL,
  collateralReturnTxBodyL,
  sizedCollateralReturnTxBodyL,
  allSizedOutputsTxBodyF,

  -- * Conway Era
  ConwayEraTxBody,
  votingProceduresTxBodyL,
  VotingProcedure (..),
  VotingProcedures (..),
  proposalProceduresTxBodyL,
  ProposalProcedure (..),
  currentTreasuryValueTxBodyL,
  treasuryDonationTxBodyL,

  -- * Dijstra Era
  DijkstraEraTxBody,
  guardsTxBodyL,

  -- * Upgrade
  binaryUpgradeTxBody,
  upgradeTxBody,
) where

import Cardano.Ledger.Address (Withdrawals (..))
import Cardano.Ledger.Allegra.Core (AllegraEraTxBody (..))
import Cardano.Ledger.Allegra.Scripts (invalidBeforeL, invalidHereAfterL)
import Cardano.Ledger.Alonzo.TxBody (AlonzoEraTxBody (..), ScriptIntegrityHash)
import Cardano.Ledger.Api.Era
import Cardano.Ledger.Api.Scripts
import Cardano.Ledger.Api.Tx.Cert
import Cardano.Ledger.Api.Tx.Out
import Cardano.Ledger.Babbage.TxBody (BabbageEraTxBody (..))
import Cardano.Ledger.BaseTypes (Network, strictMaybeToMaybe)
import Cardano.Ledger.Binary.Decoding (Sized)
import Cardano.Ledger.Coin (Coin)
import Cardano.Ledger.Conway.Governance (
  ProposalProcedure (..),
  VotingProcedure (..),
  VotingProcedures (..),
 )
import Cardano.Ledger.Conway.TxBody (ConwayEraTxBody (..))
import Cardano.Ledger.Core (
  EraTxBody (..),
  PParams,
  TxAuxDataHash (..),
  TxLevel (..),
  Value,
  binaryUpgradeTxBody,
  txIdTxBody,
 )
import Cardano.Ledger.Credential (Credential (KeyHashObj))
import Cardano.Ledger.Dijkstra.TxBody (DijkstraEraTxBody (..))
import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..))
import Cardano.Ledger.Mary.Core (MaryEraTxBody (..))
import Cardano.Ledger.Mary.Value (MultiAsset)
import Cardano.Ledger.Shelley.Core (ShelleyEraTxBody (..))
import Cardano.Ledger.Shelley.PParams (Update)
import Cardano.Ledger.Shelley.UTxO (getProducedValue)
import Cardano.Ledger.State (EraUTxO (getConsumedValue), UTxO)
import Cardano.Ledger.TxIn (TxIn)
import Cardano.Ledger.Val ((<->))
import Data.OSet.Strict (OSet)
import qualified Data.OSet.Strict as OSet (fromSet)
import Data.Sequence.Strict (StrictSeq)
import Data.Set (Set)
import qualified Data.Set as Set (map)
import Lens.Micro (SimpleGetter, to)

class (EraTxBody era, AnyEraTxOut era, AnyEraTxCert era) => AnyEraTxBody era where
  updateTxBodyG :: SimpleGetter (TxBody TopTx era) (Maybe (Maybe (Update era)))
  updateTxBodyG = (TxBody TopTx era -> Maybe (Maybe (Update era)))
-> SimpleGetter (TxBody TopTx era) (Maybe (Maybe (Update era)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (Update era))
-> TxBody TopTx era -> Maybe (Maybe (Update era))
forall a b. a -> b -> a
const Maybe (Maybe (Update era))
forall a. Maybe a
Nothing)

  vldtTxBodyG :: SimpleGetter (TxBody TopTx era) ValidityInterval
  default vldtTxBodyG ::
    AllegraEraTxBody era => SimpleGetter (TxBody TopTx era) ValidityInterval
  vldtTxBodyG = (ValidityInterval -> Const r ValidityInterval)
-> TxBody TopTx era -> Const r (TxBody TopTx era)
forall era (l :: TxLevel).
AllegraEraTxBody era =>
Lens' (TxBody l era) ValidityInterval
forall (l :: TxLevel). Lens' (TxBody l era) ValidityInterval
vldtTxBodyL

  mintTxBodyG :: SimpleGetter (TxBody l era) (Maybe MultiAsset)
  default mintTxBodyG ::
    MaryEraTxBody era => SimpleGetter (TxBody l era) (Maybe MultiAsset)
  mintTxBodyG = (MultiAsset -> Const r MultiAsset)
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
MaryEraTxBody era =>
Lens' (TxBody l era) MultiAsset
forall (l :: TxLevel). Lens' (TxBody l era) MultiAsset
mintTxBodyL ((MultiAsset -> Const r MultiAsset)
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe MultiAsset -> Const r (Maybe MultiAsset))
    -> MultiAsset -> Const r MultiAsset)
-> (Maybe MultiAsset -> Const r (Maybe MultiAsset))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (MultiAsset -> Maybe MultiAsset)
-> SimpleGetter MultiAsset (Maybe MultiAsset)
forall s a. (s -> a) -> SimpleGetter s a
to MultiAsset -> Maybe MultiAsset
forall a. a -> Maybe a
Just

  collateralInputsTxBodyG :: SimpleGetter (TxBody TopTx era) (Maybe (Set TxIn))
  default collateralInputsTxBodyG ::
    AlonzoEraTxBody era => SimpleGetter (TxBody TopTx era) (Maybe (Set TxIn))
  collateralInputsTxBodyG = (Set TxIn -> Const r (Set TxIn))
-> TxBody TopTx era -> Const r (TxBody TopTx era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody TopTx era) (Set TxIn)
Lens' (TxBody TopTx era) (Set TxIn)
collateralInputsTxBodyL ((Set TxIn -> Const r (Set TxIn))
 -> TxBody TopTx era -> Const r (TxBody TopTx era))
-> ((Maybe (Set TxIn) -> Const r (Maybe (Set TxIn)))
    -> Set TxIn -> Const r (Set TxIn))
-> (Maybe (Set TxIn) -> Const r (Maybe (Set TxIn)))
-> TxBody TopTx era
-> Const r (TxBody TopTx era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> Maybe (Set TxIn))
-> SimpleGetter (Set TxIn) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to Set TxIn -> Maybe (Set TxIn)
forall a. a -> Maybe a
Just

  scriptIntegrityHashTxBodyG ::
    SimpleGetter (TxBody l era) (Maybe (Maybe ScriptIntegrityHash))
  default scriptIntegrityHashTxBodyG ::
    AlonzoEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (Maybe ScriptIntegrityHash))
  scriptIntegrityHashTxBodyG = (StrictMaybe ScriptIntegrityHash
 -> Const r (StrictMaybe ScriptIntegrityHash))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash)
forall (l :: TxLevel).
Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
  -> Const r (StrictMaybe ScriptIntegrityHash))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (Maybe ScriptIntegrityHash)
     -> Const r (Maybe (Maybe ScriptIntegrityHash)))
    -> StrictMaybe ScriptIntegrityHash
    -> Const r (StrictMaybe ScriptIntegrityHash))
-> (Maybe (Maybe ScriptIntegrityHash)
    -> Const r (Maybe (Maybe ScriptIntegrityHash)))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe ScriptIntegrityHash
 -> Maybe (Maybe ScriptIntegrityHash))
-> SimpleGetter
     (StrictMaybe ScriptIntegrityHash)
     (Maybe (Maybe ScriptIntegrityHash))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe ScriptIntegrityHash -> Maybe (Maybe ScriptIntegrityHash)
forall a. a -> Maybe a
Just (Maybe ScriptIntegrityHash -> Maybe (Maybe ScriptIntegrityHash))
-> (StrictMaybe ScriptIntegrityHash -> Maybe ScriptIntegrityHash)
-> StrictMaybe ScriptIntegrityHash
-> Maybe (Maybe ScriptIntegrityHash)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe ScriptIntegrityHash -> Maybe ScriptIntegrityHash
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)

  networkIdTxBodyG :: SimpleGetter (TxBody l era) (Maybe (Maybe Network))
  default networkIdTxBodyG ::
    AlonzoEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (Maybe Network))
  networkIdTxBodyG = (StrictMaybe Network -> Const r (StrictMaybe Network))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Network)
forall (l :: TxLevel). Lens' (TxBody l era) (StrictMaybe Network)
networkIdTxBodyL ((StrictMaybe Network -> Const r (StrictMaybe Network))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (Maybe Network) -> Const r (Maybe (Maybe Network)))
    -> StrictMaybe Network -> Const r (StrictMaybe Network))
-> (Maybe (Maybe Network) -> Const r (Maybe (Maybe Network)))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Network -> Maybe (Maybe Network))
-> SimpleGetter (StrictMaybe Network) (Maybe (Maybe Network))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Network -> Maybe (Maybe Network)
forall a. a -> Maybe a
Just (Maybe Network -> Maybe (Maybe Network))
-> (StrictMaybe Network -> Maybe Network)
-> StrictMaybe Network
-> Maybe (Maybe Network)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe Network -> Maybe Network
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)

  sizedOutputsTxBodyG :: SimpleGetter (TxBody l era) (Maybe (StrictSeq (Sized (TxOut era))))
  default sizedOutputsTxBodyG ::
    BabbageEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (StrictSeq (Sized (TxOut era))))
  sizedOutputsTxBodyG = (StrictSeq (Sized (TxOut era))
 -> Const r (StrictSeq (Sized (TxOut era))))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
BabbageEraTxBody era =>
Lens' (TxBody l era) (StrictSeq (Sized (TxOut era)))
forall (l :: TxLevel).
Lens' (TxBody l era) (StrictSeq (Sized (TxOut era)))
sizedOutputsTxBodyL ((StrictSeq (Sized (TxOut era))
  -> Const r (StrictSeq (Sized (TxOut era))))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (StrictSeq (Sized (TxOut era)))
     -> Const r (Maybe (StrictSeq (Sized (TxOut era)))))
    -> StrictSeq (Sized (TxOut era))
    -> Const r (StrictSeq (Sized (TxOut era))))
-> (Maybe (StrictSeq (Sized (TxOut era)))
    -> Const r (Maybe (StrictSeq (Sized (TxOut era)))))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictSeq (Sized (TxOut era))
 -> Maybe (StrictSeq (Sized (TxOut era))))
-> SimpleGetter
     (StrictSeq (Sized (TxOut era)))
     (Maybe (StrictSeq (Sized (TxOut era))))
forall s a. (s -> a) -> SimpleGetter s a
to StrictSeq (Sized (TxOut era))
-> Maybe (StrictSeq (Sized (TxOut era)))
forall a. a -> Maybe a
Just

  referenceInputsTxBodyG :: SimpleGetter (TxBody l era) (Maybe (Set TxIn))
  default referenceInputsTxBodyG ::
    BabbageEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (Set TxIn))
  referenceInputsTxBodyG = (Set TxIn -> Const r (Set TxIn))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
BabbageEraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l era) (Set TxIn)
referenceInputsTxBodyL ((Set TxIn -> Const r (Set TxIn))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (Set TxIn) -> Const r (Maybe (Set TxIn)))
    -> Set TxIn -> Const r (Set TxIn))
-> (Maybe (Set TxIn) -> Const r (Maybe (Set TxIn)))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> Maybe (Set TxIn))
-> SimpleGetter (Set TxIn) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to Set TxIn -> Maybe (Set TxIn)
forall a. a -> Maybe a
Just

  totalCollateralTxBodyG :: SimpleGetter (TxBody TopTx era) (Maybe (Maybe Coin))
  default totalCollateralTxBodyG ::
    BabbageEraTxBody era =>
    SimpleGetter (TxBody TopTx era) (Maybe (Maybe Coin))
  totalCollateralTxBodyG = (StrictMaybe Coin -> Const r (StrictMaybe Coin))
-> TxBody TopTx era -> Const r (TxBody TopTx era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe Coin)
Lens' (TxBody TopTx era) (StrictMaybe Coin)
totalCollateralTxBodyL ((StrictMaybe Coin -> Const r (StrictMaybe Coin))
 -> TxBody TopTx era -> Const r (TxBody TopTx era))
-> ((Maybe (Maybe Coin) -> Const r (Maybe (Maybe Coin)))
    -> StrictMaybe Coin -> Const r (StrictMaybe Coin))
-> (Maybe (Maybe Coin) -> Const r (Maybe (Maybe Coin)))
-> TxBody TopTx era
-> Const r (TxBody TopTx era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Coin -> Maybe (Maybe Coin))
-> SimpleGetter (StrictMaybe Coin) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> Maybe (Maybe Coin)
forall a. a -> Maybe a
Just (Maybe Coin -> Maybe (Maybe Coin))
-> (StrictMaybe Coin -> Maybe Coin)
-> StrictMaybe Coin
-> Maybe (Maybe Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe Coin -> Maybe Coin
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)

  collateralReturnTxBodyG :: SimpleGetter (TxBody TopTx era) (Maybe (Maybe (TxOut era)))
  default collateralReturnTxBodyG ::
    BabbageEraTxBody era =>
    SimpleGetter (TxBody TopTx era) (Maybe (Maybe (TxOut era)))
  collateralReturnTxBodyG = (StrictMaybe (TxOut era) -> Const r (StrictMaybe (TxOut era)))
-> TxBody TopTx era -> Const r (TxBody TopTx era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (TxOut era))
Lens' (TxBody TopTx era) (StrictMaybe (TxOut era))
collateralReturnTxBodyL ((StrictMaybe (TxOut era) -> Const r (StrictMaybe (TxOut era)))
 -> TxBody TopTx era -> Const r (TxBody TopTx era))
-> ((Maybe (Maybe (TxOut era))
     -> Const r (Maybe (Maybe (TxOut era))))
    -> StrictMaybe (TxOut era) -> Const r (StrictMaybe (TxOut era)))
-> (Maybe (Maybe (TxOut era))
    -> Const r (Maybe (Maybe (TxOut era))))
-> TxBody TopTx era
-> Const r (TxBody TopTx era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (TxOut era) -> Maybe (Maybe (TxOut era)))
-> SimpleGetter
     (StrictMaybe (TxOut era)) (Maybe (Maybe (TxOut era)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (TxOut era) -> Maybe (Maybe (TxOut era))
forall a. a -> Maybe a
Just (Maybe (TxOut era) -> Maybe (Maybe (TxOut era)))
-> (StrictMaybe (TxOut era) -> Maybe (TxOut era))
-> StrictMaybe (TxOut era)
-> Maybe (Maybe (TxOut era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (TxOut era) -> Maybe (TxOut era)
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)

  sizedCollateralReturnTxBodyG :: SimpleGetter (TxBody TopTx era) (Maybe (Maybe (Sized (TxOut era))))
  default sizedCollateralReturnTxBodyG ::
    BabbageEraTxBody era =>
    SimpleGetter (TxBody TopTx era) (Maybe (Maybe (Sized (TxOut era))))
  sizedCollateralReturnTxBodyG = (StrictMaybe (Sized (TxOut era))
 -> Const r (StrictMaybe (Sized (TxOut era))))
-> TxBody TopTx era -> Const r (TxBody TopTx era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (Sized (TxOut era)))
Lens' (TxBody TopTx era) (StrictMaybe (Sized (TxOut era)))
sizedCollateralReturnTxBodyL ((StrictMaybe (Sized (TxOut era))
  -> Const r (StrictMaybe (Sized (TxOut era))))
 -> TxBody TopTx era -> Const r (TxBody TopTx era))
-> ((Maybe (Maybe (Sized (TxOut era)))
     -> Const r (Maybe (Maybe (Sized (TxOut era)))))
    -> StrictMaybe (Sized (TxOut era))
    -> Const r (StrictMaybe (Sized (TxOut era))))
-> (Maybe (Maybe (Sized (TxOut era)))
    -> Const r (Maybe (Maybe (Sized (TxOut era)))))
-> TxBody TopTx era
-> Const r (TxBody TopTx era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (Sized (TxOut era))
 -> Maybe (Maybe (Sized (TxOut era))))
-> SimpleGetter
     (StrictMaybe (Sized (TxOut era)))
     (Maybe (Maybe (Sized (TxOut era))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Sized (TxOut era)) -> Maybe (Maybe (Sized (TxOut era)))
forall a. a -> Maybe a
Just (Maybe (Sized (TxOut era)) -> Maybe (Maybe (Sized (TxOut era))))
-> (StrictMaybe (Sized (TxOut era)) -> Maybe (Sized (TxOut era)))
-> StrictMaybe (Sized (TxOut era))
-> Maybe (Maybe (Sized (TxOut era)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (Sized (TxOut era)) -> Maybe (Sized (TxOut era))
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)

  currentTreasuryValueTxBodyG :: SimpleGetter (TxBody l era) (Maybe (Maybe Coin))
  default currentTreasuryValueTxBodyG ::
    ConwayEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (Maybe Coin))
  currentTreasuryValueTxBodyG = (StrictMaybe Coin -> Const r (StrictMaybe Coin))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Coin)
forall (l :: TxLevel). Lens' (TxBody l era) (StrictMaybe Coin)
currentTreasuryValueTxBodyL ((StrictMaybe Coin -> Const r (StrictMaybe Coin))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (Maybe Coin) -> Const r (Maybe (Maybe Coin)))
    -> StrictMaybe Coin -> Const r (StrictMaybe Coin))
-> (Maybe (Maybe Coin) -> Const r (Maybe (Maybe Coin)))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Coin -> Maybe (Maybe Coin))
-> SimpleGetter (StrictMaybe Coin) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> Maybe (Maybe Coin)
forall a. a -> Maybe a
Just (Maybe Coin -> Maybe (Maybe Coin))
-> (StrictMaybe Coin -> Maybe Coin)
-> StrictMaybe Coin
-> Maybe (Maybe Coin)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe Coin -> Maybe Coin
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)

  votingProceduresTxBodyG :: SimpleGetter (TxBody l era) (Maybe (VotingProcedures era))
  default votingProceduresTxBodyG ::
    ConwayEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (VotingProcedures era))
  votingProceduresTxBodyG = (VotingProcedures era -> Const r (VotingProcedures era))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (VotingProcedures era)
forall (l :: TxLevel). Lens' (TxBody l era) (VotingProcedures era)
votingProceduresTxBodyL ((VotingProcedures era -> Const r (VotingProcedures era))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (VotingProcedures era)
     -> Const r (Maybe (VotingProcedures era)))
    -> VotingProcedures era -> Const r (VotingProcedures era))
-> (Maybe (VotingProcedures era)
    -> Const r (Maybe (VotingProcedures era)))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VotingProcedures era -> Maybe (VotingProcedures era))
-> SimpleGetter
     (VotingProcedures era) (Maybe (VotingProcedures era))
forall s a. (s -> a) -> SimpleGetter s a
to VotingProcedures era -> Maybe (VotingProcedures era)
forall a. a -> Maybe a
Just

  proposalProceduresTxBodyG :: SimpleGetter (TxBody l era) (Maybe (OSet (ProposalProcedure era)))
  default proposalProceduresTxBodyG ::
    ConwayEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (OSet (ProposalProcedure era)))
  proposalProceduresTxBodyG = (OSet (ProposalProcedure era)
 -> Const r (OSet (ProposalProcedure era)))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (OSet (ProposalProcedure era))
forall (l :: TxLevel).
Lens' (TxBody l era) (OSet (ProposalProcedure era))
proposalProceduresTxBodyL ((OSet (ProposalProcedure era)
  -> Const r (OSet (ProposalProcedure era)))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (OSet (ProposalProcedure era))
     -> Const r (Maybe (OSet (ProposalProcedure era))))
    -> OSet (ProposalProcedure era)
    -> Const r (OSet (ProposalProcedure era)))
-> (Maybe (OSet (ProposalProcedure era))
    -> Const r (Maybe (OSet (ProposalProcedure era))))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (ProposalProcedure era)
 -> Maybe (OSet (ProposalProcedure era)))
-> SimpleGetter
     (OSet (ProposalProcedure era))
     (Maybe (OSet (ProposalProcedure era)))
forall s a. (s -> a) -> SimpleGetter s a
to OSet (ProposalProcedure era)
-> Maybe (OSet (ProposalProcedure era))
forall a. a -> Maybe a
Just

  treasuryDonationTxBodyG :: SimpleGetter (TxBody l era) (Maybe Coin)
  default treasuryDonationTxBodyG :: ConwayEraTxBody era => SimpleGetter (TxBody l era) (Maybe Coin)
  treasuryDonationTxBodyG = (Coin -> Const r Coin) -> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) Coin
forall (l :: TxLevel). Lens' (TxBody l era) Coin
treasuryDonationTxBodyL ((Coin -> Const r Coin) -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe Coin -> Const r (Maybe Coin)) -> Coin -> Const r Coin)
-> (Maybe Coin -> Const r (Maybe Coin))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Coin -> Maybe Coin) -> SimpleGetter Coin (Maybe Coin)
forall s a. (s -> a) -> SimpleGetter s a
to Coin -> Maybe Coin
forall a. a -> Maybe a
Just

  guardsTxBodyG :: SimpleGetter (TxBody l era) (Maybe (OSet (Credential Guard)))
  default guardsTxBodyG ::
    DijkstraEraTxBody era =>
    SimpleGetter (TxBody l era) (Maybe (OSet (Credential Guard)))
  guardsTxBodyG = (OSet (Credential Guard) -> Const r (OSet (Credential Guard)))
-> TxBody l era -> Const r (TxBody l era)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l era) (OSet (Credential Guard))
guardsTxBodyL ((OSet (Credential Guard) -> Const r (OSet (Credential Guard)))
 -> TxBody l era -> Const r (TxBody l era))
-> ((Maybe (OSet (Credential Guard))
     -> Const r (Maybe (OSet (Credential Guard))))
    -> OSet (Credential Guard) -> Const r (OSet (Credential Guard)))
-> (Maybe (OSet (Credential Guard))
    -> Const r (Maybe (OSet (Credential Guard))))
-> TxBody l era
-> Const r (TxBody l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (Credential Guard) -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (OSet (Credential Guard)) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to OSet (Credential Guard) -> Maybe (OSet (Credential Guard))
forall a. a -> Maybe a
Just

instance AnyEraTxBody ShelleyEra where
  updateTxBodyG :: SimpleGetter
  (TxBody TopTx ShelleyEra) (Maybe (Maybe (Update ShelleyEra)))
updateTxBodyG = (StrictMaybe (Update ShelleyEra)
 -> Const r (StrictMaybe (Update ShelleyEra)))
-> TxBody TopTx ShelleyEra -> Const r (TxBody TopTx ShelleyEra)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (Update era))
Lens' (TxBody TopTx ShelleyEra) (StrictMaybe (Update ShelleyEra))
updateTxBodyL ((StrictMaybe (Update ShelleyEra)
  -> Const r (StrictMaybe (Update ShelleyEra)))
 -> TxBody TopTx ShelleyEra -> Const r (TxBody TopTx ShelleyEra))
-> ((Maybe (Maybe (Update ShelleyEra))
     -> Const r (Maybe (Maybe (Update ShelleyEra))))
    -> StrictMaybe (Update ShelleyEra)
    -> Const r (StrictMaybe (Update ShelleyEra)))
-> (Maybe (Maybe (Update ShelleyEra))
    -> Const r (Maybe (Maybe (Update ShelleyEra))))
-> TxBody TopTx ShelleyEra
-> Const r (TxBody TopTx ShelleyEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (Update ShelleyEra)
 -> Maybe (Maybe (Update ShelleyEra)))
-> SimpleGetter
     (StrictMaybe (Update ShelleyEra))
     (Maybe (Maybe (Update ShelleyEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Update ShelleyEra) -> Maybe (Maybe (Update ShelleyEra))
forall a. a -> Maybe a
Just (Maybe (Update ShelleyEra) -> Maybe (Maybe (Update ShelleyEra)))
-> (StrictMaybe (Update ShelleyEra) -> Maybe (Update ShelleyEra))
-> StrictMaybe (Update ShelleyEra)
-> Maybe (Maybe (Update ShelleyEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (Update ShelleyEra) -> Maybe (Update ShelleyEra)
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)
  vldtTxBodyG :: SimpleGetter (TxBody TopTx ShelleyEra) ValidityInterval
vldtTxBodyG = (SlotNo -> Const r SlotNo)
-> TxBody TopTx ShelleyEra -> Const r (TxBody TopTx ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody TopTx era) SlotNo
Lens' (TxBody TopTx ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Const r SlotNo)
 -> TxBody TopTx ShelleyEra -> Const r (TxBody TopTx ShelleyEra))
-> ((ValidityInterval -> Const r ValidityInterval)
    -> SlotNo -> Const r SlotNo)
-> (ValidityInterval -> Const r ValidityInterval)
-> TxBody TopTx ShelleyEra
-> Const r (TxBody TopTx ShelleyEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SlotNo -> ValidityInterval)
-> SimpleGetter SlotNo ValidityInterval
forall s a. (s -> a) -> SimpleGetter s a
to SlotNo -> ValidityInterval
ttlToValidityInterval
  mintTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l ShelleyEra) (Maybe MultiAsset)
mintTxBodyG = (TxBody l ShelleyEra -> Maybe MultiAsset)
-> SimpleGetter (TxBody l ShelleyEra) (Maybe MultiAsset)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe MultiAsset -> TxBody l ShelleyEra -> Maybe MultiAsset
forall a b. a -> b -> a
const Maybe MultiAsset
forall a. Maybe a
Nothing)
  collateralInputsTxBodyG :: SimpleGetter (TxBody TopTx ShelleyEra) (Maybe (Set TxIn))
collateralInputsTxBodyG = (TxBody TopTx ShelleyEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody TopTx ShelleyEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody TopTx ShelleyEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  scriptIntegrityHashTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l ShelleyEra) (Maybe (Maybe ScriptIntegrityHash))
scriptIntegrityHashTxBodyG = (TxBody l ShelleyEra -> Maybe (Maybe ScriptIntegrityHash))
-> SimpleGetter
     (TxBody l ShelleyEra) (Maybe (Maybe ScriptIntegrityHash))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe ScriptIntegrityHash)
-> TxBody l ShelleyEra -> Maybe (Maybe ScriptIntegrityHash)
forall a b. a -> b -> a
const Maybe (Maybe ScriptIntegrityHash)
forall a. Maybe a
Nothing)
  networkIdTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l ShelleyEra) (Maybe (Maybe Network))
networkIdTxBodyG = (TxBody l ShelleyEra -> Maybe (Maybe Network))
-> SimpleGetter (TxBody l ShelleyEra) (Maybe (Maybe Network))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Network)
-> TxBody l ShelleyEra -> Maybe (Maybe Network)
forall a b. a -> b -> a
const Maybe (Maybe Network)
forall a. Maybe a
Nothing)
  sizedOutputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l ShelleyEra)
  (Maybe (StrictSeq (Sized (TxOut ShelleyEra))))
sizedOutputsTxBodyG = (TxBody l ShelleyEra
 -> Maybe (StrictSeq (Sized (ShelleyTxOut ShelleyEra))))
-> SimpleGetter
     (TxBody l ShelleyEra)
     (Maybe (StrictSeq (Sized (ShelleyTxOut ShelleyEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (StrictSeq (Sized (ShelleyTxOut ShelleyEra)))
-> TxBody l ShelleyEra
-> Maybe (StrictSeq (Sized (ShelleyTxOut ShelleyEra)))
forall a b. a -> b -> a
const Maybe (StrictSeq (Sized (ShelleyTxOut ShelleyEra)))
forall a. Maybe a
Nothing)
  referenceInputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l ShelleyEra) (Maybe (Set TxIn))
referenceInputsTxBodyG = (TxBody l ShelleyEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody l ShelleyEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody l ShelleyEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  totalCollateralTxBodyG :: SimpleGetter (TxBody TopTx ShelleyEra) (Maybe (Maybe Coin))
totalCollateralTxBodyG = (TxBody TopTx ShelleyEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody TopTx ShelleyEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody TopTx ShelleyEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  collateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx ShelleyEra) (Maybe (Maybe (TxOut ShelleyEra)))
collateralReturnTxBodyG = (TxBody TopTx ShelleyEra
 -> Maybe (Maybe (ShelleyTxOut ShelleyEra)))
-> SimpleGetter
     (TxBody TopTx ShelleyEra) (Maybe (Maybe (ShelleyTxOut ShelleyEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (ShelleyTxOut ShelleyEra))
-> TxBody TopTx ShelleyEra
-> Maybe (Maybe (ShelleyTxOut ShelleyEra))
forall a b. a -> b -> a
const Maybe (Maybe (ShelleyTxOut ShelleyEra))
forall a. Maybe a
Nothing)
  sizedCollateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx ShelleyEra)
  (Maybe (Maybe (Sized (TxOut ShelleyEra))))
sizedCollateralReturnTxBodyG = (TxBody TopTx ShelleyEra
 -> Maybe (Maybe (Sized (ShelleyTxOut ShelleyEra))))
-> SimpleGetter
     (TxBody TopTx ShelleyEra)
     (Maybe (Maybe (Sized (ShelleyTxOut ShelleyEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (Sized (ShelleyTxOut ShelleyEra)))
-> TxBody TopTx ShelleyEra
-> Maybe (Maybe (Sized (ShelleyTxOut ShelleyEra)))
forall a b. a -> b -> a
const Maybe (Maybe (Sized (ShelleyTxOut ShelleyEra)))
forall a. Maybe a
Nothing)
  currentTreasuryValueTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l ShelleyEra) (Maybe (Maybe Coin))
currentTreasuryValueTxBodyG = (TxBody l ShelleyEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody l ShelleyEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody l ShelleyEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  votingProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l ShelleyEra) (Maybe (VotingProcedures ShelleyEra))
votingProceduresTxBodyG = (TxBody l ShelleyEra -> Maybe (VotingProcedures ShelleyEra))
-> SimpleGetter
     (TxBody l ShelleyEra) (Maybe (VotingProcedures ShelleyEra))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (VotingProcedures ShelleyEra)
-> TxBody l ShelleyEra -> Maybe (VotingProcedures ShelleyEra)
forall a b. a -> b -> a
const Maybe (VotingProcedures ShelleyEra)
forall a. Maybe a
Nothing)
  proposalProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l ShelleyEra) (Maybe (OSet (ProposalProcedure ShelleyEra)))
proposalProceduresTxBodyG = (TxBody l ShelleyEra
 -> Maybe (OSet (ProposalProcedure ShelleyEra)))
-> SimpleGetter
     (TxBody l ShelleyEra) (Maybe (OSet (ProposalProcedure ShelleyEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (ProposalProcedure ShelleyEra))
-> TxBody l ShelleyEra
-> Maybe (OSet (ProposalProcedure ShelleyEra))
forall a b. a -> b -> a
const Maybe (OSet (ProposalProcedure ShelleyEra))
forall a. Maybe a
Nothing)
  treasuryDonationTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l ShelleyEra) (Maybe Coin)
treasuryDonationTxBodyG = (TxBody l ShelleyEra -> Maybe Coin)
-> SimpleGetter (TxBody l ShelleyEra) (Maybe Coin)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> TxBody l ShelleyEra -> Maybe Coin
forall a b. a -> b -> a
const Maybe Coin
forall a. Maybe a
Nothing)
  guardsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l ShelleyEra) (Maybe (OSet (Credential Guard)))
guardsTxBodyG = (TxBody l ShelleyEra -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (TxBody l ShelleyEra) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (Credential Guard))
-> TxBody l ShelleyEra -> Maybe (OSet (Credential Guard))
forall a b. a -> b -> a
const Maybe (OSet (Credential Guard))
forall a. Maybe a
Nothing)

instance AnyEraTxBody AllegraEra where
  updateTxBodyG :: SimpleGetter
  (TxBody TopTx AllegraEra) (Maybe (Maybe (Update AllegraEra)))
updateTxBodyG = (StrictMaybe (Update AllegraEra)
 -> Const r (StrictMaybe (Update AllegraEra)))
-> TxBody TopTx AllegraEra -> Const r (TxBody TopTx AllegraEra)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (Update era))
Lens' (TxBody TopTx AllegraEra) (StrictMaybe (Update AllegraEra))
updateTxBodyL ((StrictMaybe (Update AllegraEra)
  -> Const r (StrictMaybe (Update AllegraEra)))
 -> TxBody TopTx AllegraEra -> Const r (TxBody TopTx AllegraEra))
-> ((Maybe (Maybe (Update AllegraEra))
     -> Const r (Maybe (Maybe (Update AllegraEra))))
    -> StrictMaybe (Update AllegraEra)
    -> Const r (StrictMaybe (Update AllegraEra)))
-> (Maybe (Maybe (Update AllegraEra))
    -> Const r (Maybe (Maybe (Update AllegraEra))))
-> TxBody TopTx AllegraEra
-> Const r (TxBody TopTx AllegraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (Update AllegraEra)
 -> Maybe (Maybe (Update AllegraEra)))
-> SimpleGetter
     (StrictMaybe (Update AllegraEra))
     (Maybe (Maybe (Update AllegraEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Update AllegraEra) -> Maybe (Maybe (Update AllegraEra))
forall a. a -> Maybe a
Just (Maybe (Update AllegraEra) -> Maybe (Maybe (Update AllegraEra)))
-> (StrictMaybe (Update AllegraEra) -> Maybe (Update AllegraEra))
-> StrictMaybe (Update AllegraEra)
-> Maybe (Maybe (Update AllegraEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (Update AllegraEra) -> Maybe (Update AllegraEra)
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)
  mintTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AllegraEra) (Maybe MultiAsset)
mintTxBodyG = (TxBody l AllegraEra -> Maybe MultiAsset)
-> SimpleGetter (TxBody l AllegraEra) (Maybe MultiAsset)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe MultiAsset -> TxBody l AllegraEra -> Maybe MultiAsset
forall a b. a -> b -> a
const Maybe MultiAsset
forall a. Maybe a
Nothing)
  collateralInputsTxBodyG :: SimpleGetter (TxBody TopTx AllegraEra) (Maybe (Set TxIn))
collateralInputsTxBodyG = (TxBody TopTx AllegraEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody TopTx AllegraEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody TopTx AllegraEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  scriptIntegrityHashTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AllegraEra) (Maybe (Maybe ScriptIntegrityHash))
scriptIntegrityHashTxBodyG = (TxBody l AllegraEra -> Maybe (Maybe ScriptIntegrityHash))
-> SimpleGetter
     (TxBody l AllegraEra) (Maybe (Maybe ScriptIntegrityHash))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe ScriptIntegrityHash)
-> TxBody l AllegraEra -> Maybe (Maybe ScriptIntegrityHash)
forall a b. a -> b -> a
const Maybe (Maybe ScriptIntegrityHash)
forall a. Maybe a
Nothing)
  networkIdTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AllegraEra) (Maybe (Maybe Network))
networkIdTxBodyG = (TxBody l AllegraEra -> Maybe (Maybe Network))
-> SimpleGetter (TxBody l AllegraEra) (Maybe (Maybe Network))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Network)
-> TxBody l AllegraEra -> Maybe (Maybe Network)
forall a b. a -> b -> a
const Maybe (Maybe Network)
forall a. Maybe a
Nothing)
  sizedOutputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AllegraEra)
  (Maybe (StrictSeq (Sized (TxOut AllegraEra))))
sizedOutputsTxBodyG = (TxBody l AllegraEra
 -> Maybe (StrictSeq (Sized (ShelleyTxOut AllegraEra))))
-> SimpleGetter
     (TxBody l AllegraEra)
     (Maybe (StrictSeq (Sized (ShelleyTxOut AllegraEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (StrictSeq (Sized (ShelleyTxOut AllegraEra)))
-> TxBody l AllegraEra
-> Maybe (StrictSeq (Sized (ShelleyTxOut AllegraEra)))
forall a b. a -> b -> a
const Maybe (StrictSeq (Sized (ShelleyTxOut AllegraEra)))
forall a. Maybe a
Nothing)
  referenceInputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AllegraEra) (Maybe (Set TxIn))
referenceInputsTxBodyG = (TxBody l AllegraEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody l AllegraEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody l AllegraEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  totalCollateralTxBodyG :: SimpleGetter (TxBody TopTx AllegraEra) (Maybe (Maybe Coin))
totalCollateralTxBodyG = (TxBody TopTx AllegraEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody TopTx AllegraEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody TopTx AllegraEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  collateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx AllegraEra) (Maybe (Maybe (TxOut AllegraEra)))
collateralReturnTxBodyG = (TxBody TopTx AllegraEra
 -> Maybe (Maybe (ShelleyTxOut AllegraEra)))
-> SimpleGetter
     (TxBody TopTx AllegraEra) (Maybe (Maybe (ShelleyTxOut AllegraEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (ShelleyTxOut AllegraEra))
-> TxBody TopTx AllegraEra
-> Maybe (Maybe (ShelleyTxOut AllegraEra))
forall a b. a -> b -> a
const Maybe (Maybe (ShelleyTxOut AllegraEra))
forall a. Maybe a
Nothing)
  sizedCollateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx AllegraEra)
  (Maybe (Maybe (Sized (TxOut AllegraEra))))
sizedCollateralReturnTxBodyG = (TxBody TopTx AllegraEra
 -> Maybe (Maybe (Sized (ShelleyTxOut AllegraEra))))
-> SimpleGetter
     (TxBody TopTx AllegraEra)
     (Maybe (Maybe (Sized (ShelleyTxOut AllegraEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (Sized (ShelleyTxOut AllegraEra)))
-> TxBody TopTx AllegraEra
-> Maybe (Maybe (Sized (ShelleyTxOut AllegraEra)))
forall a b. a -> b -> a
const Maybe (Maybe (Sized (ShelleyTxOut AllegraEra)))
forall a. Maybe a
Nothing)
  currentTreasuryValueTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AllegraEra) (Maybe (Maybe Coin))
currentTreasuryValueTxBodyG = (TxBody l AllegraEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody l AllegraEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody l AllegraEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  votingProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AllegraEra) (Maybe (VotingProcedures AllegraEra))
votingProceduresTxBodyG = (TxBody l AllegraEra -> Maybe (VotingProcedures AllegraEra))
-> SimpleGetter
     (TxBody l AllegraEra) (Maybe (VotingProcedures AllegraEra))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (VotingProcedures AllegraEra)
-> TxBody l AllegraEra -> Maybe (VotingProcedures AllegraEra)
forall a b. a -> b -> a
const Maybe (VotingProcedures AllegraEra)
forall a. Maybe a
Nothing)
  proposalProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AllegraEra) (Maybe (OSet (ProposalProcedure AllegraEra)))
proposalProceduresTxBodyG = (TxBody l AllegraEra
 -> Maybe (OSet (ProposalProcedure AllegraEra)))
-> SimpleGetter
     (TxBody l AllegraEra) (Maybe (OSet (ProposalProcedure AllegraEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (ProposalProcedure AllegraEra))
-> TxBody l AllegraEra
-> Maybe (OSet (ProposalProcedure AllegraEra))
forall a b. a -> b -> a
const Maybe (OSet (ProposalProcedure AllegraEra))
forall a. Maybe a
Nothing)
  treasuryDonationTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AllegraEra) (Maybe Coin)
treasuryDonationTxBodyG = (TxBody l AllegraEra -> Maybe Coin)
-> SimpleGetter (TxBody l AllegraEra) (Maybe Coin)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> TxBody l AllegraEra -> Maybe Coin
forall a b. a -> b -> a
const Maybe Coin
forall a. Maybe a
Nothing)
  guardsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AllegraEra) (Maybe (OSet (Credential Guard)))
guardsTxBodyG = (TxBody l AllegraEra -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (TxBody l AllegraEra) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (Credential Guard))
-> TxBody l AllegraEra -> Maybe (OSet (Credential Guard))
forall a b. a -> b -> a
const Maybe (OSet (Credential Guard))
forall a. Maybe a
Nothing)

instance AnyEraTxBody MaryEra where
  updateTxBodyG :: SimpleGetter
  (TxBody TopTx MaryEra) (Maybe (Maybe (Update MaryEra)))
updateTxBodyG = (StrictMaybe (Update MaryEra)
 -> Const r (StrictMaybe (Update MaryEra)))
-> TxBody TopTx MaryEra -> Const r (TxBody TopTx MaryEra)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (Update era))
Lens' (TxBody TopTx MaryEra) (StrictMaybe (Update MaryEra))
updateTxBodyL ((StrictMaybe (Update MaryEra)
  -> Const r (StrictMaybe (Update MaryEra)))
 -> TxBody TopTx MaryEra -> Const r (TxBody TopTx MaryEra))
-> ((Maybe (Maybe (Update MaryEra))
     -> Const r (Maybe (Maybe (Update MaryEra))))
    -> StrictMaybe (Update MaryEra)
    -> Const r (StrictMaybe (Update MaryEra)))
-> (Maybe (Maybe (Update MaryEra))
    -> Const r (Maybe (Maybe (Update MaryEra))))
-> TxBody TopTx MaryEra
-> Const r (TxBody TopTx MaryEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (Update MaryEra) -> Maybe (Maybe (Update MaryEra)))
-> SimpleGetter
     (StrictMaybe (Update MaryEra)) (Maybe (Maybe (Update MaryEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Update MaryEra) -> Maybe (Maybe (Update MaryEra))
forall a. a -> Maybe a
Just (Maybe (Update MaryEra) -> Maybe (Maybe (Update MaryEra)))
-> (StrictMaybe (Update MaryEra) -> Maybe (Update MaryEra))
-> StrictMaybe (Update MaryEra)
-> Maybe (Maybe (Update MaryEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (Update MaryEra) -> Maybe (Update MaryEra)
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)
  collateralInputsTxBodyG :: SimpleGetter (TxBody TopTx MaryEra) (Maybe (Set TxIn))
collateralInputsTxBodyG = (TxBody TopTx MaryEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody TopTx MaryEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody TopTx MaryEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  scriptIntegrityHashTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l MaryEra) (Maybe (Maybe ScriptIntegrityHash))
scriptIntegrityHashTxBodyG = (TxBody l MaryEra -> Maybe (Maybe ScriptIntegrityHash))
-> SimpleGetter
     (TxBody l MaryEra) (Maybe (Maybe ScriptIntegrityHash))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe ScriptIntegrityHash)
-> TxBody l MaryEra -> Maybe (Maybe ScriptIntegrityHash)
forall a b. a -> b -> a
const Maybe (Maybe ScriptIntegrityHash)
forall a. Maybe a
Nothing)
  networkIdTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l MaryEra) (Maybe (Maybe Network))
networkIdTxBodyG = (TxBody l MaryEra -> Maybe (Maybe Network))
-> SimpleGetter (TxBody l MaryEra) (Maybe (Maybe Network))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Network) -> TxBody l MaryEra -> Maybe (Maybe Network)
forall a b. a -> b -> a
const Maybe (Maybe Network)
forall a. Maybe a
Nothing)
  sizedOutputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l MaryEra) (Maybe (StrictSeq (Sized (TxOut MaryEra))))
sizedOutputsTxBodyG = (TxBody l MaryEra
 -> Maybe (StrictSeq (Sized (ShelleyTxOut MaryEra))))
-> SimpleGetter
     (TxBody l MaryEra)
     (Maybe (StrictSeq (Sized (ShelleyTxOut MaryEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (StrictSeq (Sized (ShelleyTxOut MaryEra)))
-> TxBody l MaryEra
-> Maybe (StrictSeq (Sized (ShelleyTxOut MaryEra)))
forall a b. a -> b -> a
const Maybe (StrictSeq (Sized (ShelleyTxOut MaryEra)))
forall a. Maybe a
Nothing)
  referenceInputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l MaryEra) (Maybe (Set TxIn))
referenceInputsTxBodyG = (TxBody l MaryEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody l MaryEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody l MaryEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  totalCollateralTxBodyG :: SimpleGetter (TxBody TopTx MaryEra) (Maybe (Maybe Coin))
totalCollateralTxBodyG = (TxBody TopTx MaryEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody TopTx MaryEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody TopTx MaryEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  collateralReturnTxBodyG :: SimpleGetter (TxBody TopTx MaryEra) (Maybe (Maybe (TxOut MaryEra)))
collateralReturnTxBodyG = (TxBody TopTx MaryEra -> Maybe (Maybe (ShelleyTxOut MaryEra)))
-> SimpleGetter
     (TxBody TopTx MaryEra) (Maybe (Maybe (ShelleyTxOut MaryEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (ShelleyTxOut MaryEra))
-> TxBody TopTx MaryEra -> Maybe (Maybe (ShelleyTxOut MaryEra))
forall a b. a -> b -> a
const Maybe (Maybe (ShelleyTxOut MaryEra))
forall a. Maybe a
Nothing)
  sizedCollateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx MaryEra) (Maybe (Maybe (Sized (TxOut MaryEra))))
sizedCollateralReturnTxBodyG = (TxBody TopTx MaryEra
 -> Maybe (Maybe (Sized (ShelleyTxOut MaryEra))))
-> SimpleGetter
     (TxBody TopTx MaryEra)
     (Maybe (Maybe (Sized (ShelleyTxOut MaryEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (Sized (ShelleyTxOut MaryEra)))
-> TxBody TopTx MaryEra
-> Maybe (Maybe (Sized (ShelleyTxOut MaryEra)))
forall a b. a -> b -> a
const Maybe (Maybe (Sized (ShelleyTxOut MaryEra)))
forall a. Maybe a
Nothing)
  currentTreasuryValueTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l MaryEra) (Maybe (Maybe Coin))
currentTreasuryValueTxBodyG = (TxBody l MaryEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody l MaryEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody l MaryEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  votingProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l MaryEra) (Maybe (VotingProcedures MaryEra))
votingProceduresTxBodyG = (TxBody l MaryEra -> Maybe (VotingProcedures MaryEra))
-> SimpleGetter
     (TxBody l MaryEra) (Maybe (VotingProcedures MaryEra))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (VotingProcedures MaryEra)
-> TxBody l MaryEra -> Maybe (VotingProcedures MaryEra)
forall a b. a -> b -> a
const Maybe (VotingProcedures MaryEra)
forall a. Maybe a
Nothing)
  proposalProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l MaryEra) (Maybe (OSet (ProposalProcedure MaryEra)))
proposalProceduresTxBodyG = (TxBody l MaryEra -> Maybe (OSet (ProposalProcedure MaryEra)))
-> SimpleGetter
     (TxBody l MaryEra) (Maybe (OSet (ProposalProcedure MaryEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (ProposalProcedure MaryEra))
-> TxBody l MaryEra -> Maybe (OSet (ProposalProcedure MaryEra))
forall a b. a -> b -> a
const Maybe (OSet (ProposalProcedure MaryEra))
forall a. Maybe a
Nothing)
  treasuryDonationTxBodyG :: forall (l :: TxLevel). SimpleGetter (TxBody l MaryEra) (Maybe Coin)
treasuryDonationTxBodyG = (TxBody l MaryEra -> Maybe Coin)
-> SimpleGetter (TxBody l MaryEra) (Maybe Coin)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> TxBody l MaryEra -> Maybe Coin
forall a b. a -> b -> a
const Maybe Coin
forall a. Maybe a
Nothing)
  guardsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l MaryEra) (Maybe (OSet (Credential Guard)))
guardsTxBodyG = (TxBody l MaryEra -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (TxBody l MaryEra) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (Credential Guard))
-> TxBody l MaryEra -> Maybe (OSet (Credential Guard))
forall a b. a -> b -> a
const Maybe (OSet (Credential Guard))
forall a. Maybe a
Nothing)

instance AnyEraTxBody AlonzoEra where
  updateTxBodyG :: SimpleGetter
  (TxBody TopTx AlonzoEra) (Maybe (Maybe (Update AlonzoEra)))
updateTxBodyG = (StrictMaybe (Update AlonzoEra)
 -> Const r (StrictMaybe (Update AlonzoEra)))
-> TxBody TopTx AlonzoEra -> Const r (TxBody TopTx AlonzoEra)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (Update era))
Lens' (TxBody TopTx AlonzoEra) (StrictMaybe (Update AlonzoEra))
updateTxBodyL ((StrictMaybe (Update AlonzoEra)
  -> Const r (StrictMaybe (Update AlonzoEra)))
 -> TxBody TopTx AlonzoEra -> Const r (TxBody TopTx AlonzoEra))
-> ((Maybe (Maybe (Update AlonzoEra))
     -> Const r (Maybe (Maybe (Update AlonzoEra))))
    -> StrictMaybe (Update AlonzoEra)
    -> Const r (StrictMaybe (Update AlonzoEra)))
-> (Maybe (Maybe (Update AlonzoEra))
    -> Const r (Maybe (Maybe (Update AlonzoEra))))
-> TxBody TopTx AlonzoEra
-> Const r (TxBody TopTx AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (Update AlonzoEra)
 -> Maybe (Maybe (Update AlonzoEra)))
-> SimpleGetter
     (StrictMaybe (Update AlonzoEra)) (Maybe (Maybe (Update AlonzoEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Update AlonzoEra) -> Maybe (Maybe (Update AlonzoEra))
forall a. a -> Maybe a
Just (Maybe (Update AlonzoEra) -> Maybe (Maybe (Update AlonzoEra)))
-> (StrictMaybe (Update AlonzoEra) -> Maybe (Update AlonzoEra))
-> StrictMaybe (Update AlonzoEra)
-> Maybe (Maybe (Update AlonzoEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (Update AlonzoEra) -> Maybe (Update AlonzoEra)
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)
  sizedOutputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AlonzoEra) (Maybe (StrictSeq (Sized (TxOut AlonzoEra))))
sizedOutputsTxBodyG = (TxBody l AlonzoEra
 -> Maybe (StrictSeq (Sized (AlonzoTxOut AlonzoEra))))
-> SimpleGetter
     (TxBody l AlonzoEra)
     (Maybe (StrictSeq (Sized (AlonzoTxOut AlonzoEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (StrictSeq (Sized (AlonzoTxOut AlonzoEra)))
-> TxBody l AlonzoEra
-> Maybe (StrictSeq (Sized (AlonzoTxOut AlonzoEra)))
forall a b. a -> b -> a
const Maybe (StrictSeq (Sized (AlonzoTxOut AlonzoEra)))
forall a. Maybe a
Nothing)
  referenceInputsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AlonzoEra) (Maybe (Set TxIn))
referenceInputsTxBodyG = (TxBody l AlonzoEra -> Maybe (Set TxIn))
-> SimpleGetter (TxBody l AlonzoEra) (Maybe (Set TxIn))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Set TxIn) -> TxBody l AlonzoEra -> Maybe (Set TxIn)
forall a b. a -> b -> a
const Maybe (Set TxIn)
forall a. Maybe a
Nothing)
  totalCollateralTxBodyG :: SimpleGetter (TxBody TopTx AlonzoEra) (Maybe (Maybe Coin))
totalCollateralTxBodyG = (TxBody TopTx AlonzoEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody TopTx AlonzoEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody TopTx AlonzoEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  collateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx AlonzoEra) (Maybe (Maybe (TxOut AlonzoEra)))
collateralReturnTxBodyG = (TxBody TopTx AlonzoEra -> Maybe (Maybe (AlonzoTxOut AlonzoEra)))
-> SimpleGetter
     (TxBody TopTx AlonzoEra) (Maybe (Maybe (AlonzoTxOut AlonzoEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (AlonzoTxOut AlonzoEra))
-> TxBody TopTx AlonzoEra -> Maybe (Maybe (AlonzoTxOut AlonzoEra))
forall a b. a -> b -> a
const Maybe (Maybe (AlonzoTxOut AlonzoEra))
forall a. Maybe a
Nothing)
  sizedCollateralReturnTxBodyG :: SimpleGetter
  (TxBody TopTx AlonzoEra) (Maybe (Maybe (Sized (TxOut AlonzoEra))))
sizedCollateralReturnTxBodyG = (TxBody TopTx AlonzoEra
 -> Maybe (Maybe (Sized (AlonzoTxOut AlonzoEra))))
-> SimpleGetter
     (TxBody TopTx AlonzoEra)
     (Maybe (Maybe (Sized (AlonzoTxOut AlonzoEra))))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe (Sized (AlonzoTxOut AlonzoEra)))
-> TxBody TopTx AlonzoEra
-> Maybe (Maybe (Sized (AlonzoTxOut AlonzoEra)))
forall a b. a -> b -> a
const Maybe (Maybe (Sized (AlonzoTxOut AlonzoEra)))
forall a. Maybe a
Nothing)
  currentTreasuryValueTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AlonzoEra) (Maybe (Maybe Coin))
currentTreasuryValueTxBodyG = (TxBody l AlonzoEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody l AlonzoEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody l AlonzoEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  votingProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AlonzoEra) (Maybe (VotingProcedures AlonzoEra))
votingProceduresTxBodyG = (TxBody l AlonzoEra -> Maybe (VotingProcedures AlonzoEra))
-> SimpleGetter
     (TxBody l AlonzoEra) (Maybe (VotingProcedures AlonzoEra))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (VotingProcedures AlonzoEra)
-> TxBody l AlonzoEra -> Maybe (VotingProcedures AlonzoEra)
forall a b. a -> b -> a
const Maybe (VotingProcedures AlonzoEra)
forall a. Maybe a
Nothing)
  proposalProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l AlonzoEra) (Maybe (OSet (ProposalProcedure AlonzoEra)))
proposalProceduresTxBodyG = (TxBody l AlonzoEra -> Maybe (OSet (ProposalProcedure AlonzoEra)))
-> SimpleGetter
     (TxBody l AlonzoEra) (Maybe (OSet (ProposalProcedure AlonzoEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (ProposalProcedure AlonzoEra))
-> TxBody l AlonzoEra -> Maybe (OSet (ProposalProcedure AlonzoEra))
forall a b. a -> b -> a
const Maybe (OSet (ProposalProcedure AlonzoEra))
forall a. Maybe a
Nothing)
  treasuryDonationTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AlonzoEra) (Maybe Coin)
treasuryDonationTxBodyG = (TxBody l AlonzoEra -> Maybe Coin)
-> SimpleGetter (TxBody l AlonzoEra) (Maybe Coin)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> TxBody l AlonzoEra -> Maybe Coin
forall a b. a -> b -> a
const Maybe Coin
forall a. Maybe a
Nothing)
  guardsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l AlonzoEra) (Maybe (OSet (Credential Guard)))
guardsTxBodyG =
    Getting r (TxBody l AlonzoEra) (Set (KeyHash Guard))
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
SimpleGetter (TxBody l era) (Set (KeyHash Guard))
forall (l :: TxLevel).
SimpleGetter (TxBody l AlonzoEra) (Set (KeyHash Guard))
reqSignerHashesTxBodyG Getting r (TxBody l AlonzoEra) (Set (KeyHash Guard))
-> ((Maybe (OSet (Credential Guard))
     -> Const r (Maybe (OSet (Credential Guard))))
    -> Set (KeyHash Guard) -> Const r (Set (KeyHash Guard)))
-> (Maybe (OSet (Credential Guard))
    -> Const r (Maybe (OSet (Credential Guard))))
-> TxBody l AlonzoEra
-> Const r (TxBody l AlonzoEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (KeyHash Guard) -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (Set (KeyHash Guard)) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to (OSet (Credential Guard) -> Maybe (OSet (Credential Guard))
forall a. a -> Maybe a
Just (OSet (Credential Guard) -> Maybe (OSet (Credential Guard)))
-> (Set (KeyHash Guard) -> OSet (Credential Guard))
-> Set (KeyHash Guard)
-> Maybe (OSet (Credential Guard))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Set (Credential Guard) -> OSet (Credential Guard)
forall a. Set a -> OSet a
OSet.fromSet (Set (Credential Guard) -> OSet (Credential Guard))
-> (Set (KeyHash Guard) -> Set (Credential Guard))
-> Set (KeyHash Guard)
-> OSet (Credential Guard)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (KeyHash Guard -> Credential Guard)
-> Set (KeyHash Guard) -> Set (Credential Guard)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map KeyHash Guard -> Credential Guard
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj)

instance AnyEraTxBody BabbageEra where
  updateTxBodyG :: SimpleGetter
  (TxBody TopTx BabbageEra) (Maybe (Maybe (Update BabbageEra)))
updateTxBodyG = (StrictMaybe (Update BabbageEra)
 -> Const r (StrictMaybe (Update BabbageEra)))
-> TxBody TopTx BabbageEra -> Const r (TxBody TopTx BabbageEra)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (Update era))
Lens' (TxBody TopTx BabbageEra) (StrictMaybe (Update BabbageEra))
updateTxBodyL ((StrictMaybe (Update BabbageEra)
  -> Const r (StrictMaybe (Update BabbageEra)))
 -> TxBody TopTx BabbageEra -> Const r (TxBody TopTx BabbageEra))
-> ((Maybe (Maybe (Update BabbageEra))
     -> Const r (Maybe (Maybe (Update BabbageEra))))
    -> StrictMaybe (Update BabbageEra)
    -> Const r (StrictMaybe (Update BabbageEra)))
-> (Maybe (Maybe (Update BabbageEra))
    -> Const r (Maybe (Maybe (Update BabbageEra))))
-> TxBody TopTx BabbageEra
-> Const r (TxBody TopTx BabbageEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (Update BabbageEra)
 -> Maybe (Maybe (Update BabbageEra)))
-> SimpleGetter
     (StrictMaybe (Update BabbageEra))
     (Maybe (Maybe (Update BabbageEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Update BabbageEra) -> Maybe (Maybe (Update BabbageEra))
forall a. a -> Maybe a
Just (Maybe (Update BabbageEra) -> Maybe (Maybe (Update BabbageEra)))
-> (StrictMaybe (Update BabbageEra) -> Maybe (Update BabbageEra))
-> StrictMaybe (Update BabbageEra)
-> Maybe (Maybe (Update BabbageEra))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe (Update BabbageEra) -> Maybe (Update BabbageEra)
forall a. StrictMaybe a -> Maybe a
strictMaybeToMaybe)
  currentTreasuryValueTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l BabbageEra) (Maybe (Maybe Coin))
currentTreasuryValueTxBodyG = (TxBody l BabbageEra -> Maybe (Maybe Coin))
-> SimpleGetter (TxBody l BabbageEra) (Maybe (Maybe Coin))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (Maybe Coin) -> TxBody l BabbageEra -> Maybe (Maybe Coin)
forall a b. a -> b -> a
const Maybe (Maybe Coin)
forall a. Maybe a
Nothing)
  votingProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l BabbageEra) (Maybe (VotingProcedures BabbageEra))
votingProceduresTxBodyG = (TxBody l BabbageEra -> Maybe (VotingProcedures BabbageEra))
-> SimpleGetter
     (TxBody l BabbageEra) (Maybe (VotingProcedures BabbageEra))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (VotingProcedures BabbageEra)
-> TxBody l BabbageEra -> Maybe (VotingProcedures BabbageEra)
forall a b. a -> b -> a
const Maybe (VotingProcedures BabbageEra)
forall a. Maybe a
Nothing)
  proposalProceduresTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l BabbageEra) (Maybe (OSet (ProposalProcedure BabbageEra)))
proposalProceduresTxBodyG = (TxBody l BabbageEra
 -> Maybe (OSet (ProposalProcedure BabbageEra)))
-> SimpleGetter
     (TxBody l BabbageEra) (Maybe (OSet (ProposalProcedure BabbageEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe (OSet (ProposalProcedure BabbageEra))
-> TxBody l BabbageEra
-> Maybe (OSet (ProposalProcedure BabbageEra))
forall a b. a -> b -> a
const Maybe (OSet (ProposalProcedure BabbageEra))
forall a. Maybe a
Nothing)
  treasuryDonationTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l BabbageEra) (Maybe Coin)
treasuryDonationTxBodyG = (TxBody l BabbageEra -> Maybe Coin)
-> SimpleGetter (TxBody l BabbageEra) (Maybe Coin)
forall s a. (s -> a) -> SimpleGetter s a
to (Maybe Coin -> TxBody l BabbageEra -> Maybe Coin
forall a b. a -> b -> a
const Maybe Coin
forall a. Maybe a
Nothing)
  guardsTxBodyG :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l BabbageEra) (Maybe (OSet (Credential Guard)))
guardsTxBodyG =
    Getting r (TxBody l BabbageEra) (Set (KeyHash Guard))
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
SimpleGetter (TxBody l era) (Set (KeyHash Guard))
forall (l :: TxLevel).
SimpleGetter (TxBody l BabbageEra) (Set (KeyHash Guard))
reqSignerHashesTxBodyG Getting r (TxBody l BabbageEra) (Set (KeyHash Guard))
-> ((Maybe (OSet (Credential Guard))
     -> Const r (Maybe (OSet (Credential Guard))))
    -> Set (KeyHash Guard) -> Const r (Set (KeyHash Guard)))
-> (Maybe (OSet (Credential Guard))
    -> Const r (Maybe (OSet (Credential Guard))))
-> TxBody l BabbageEra
-> Const r (TxBody l BabbageEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (KeyHash Guard) -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (Set (KeyHash Guard)) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to (OSet (Credential Guard) -> Maybe (OSet (Credential Guard))
forall a. a -> Maybe a
Just (OSet (Credential Guard) -> Maybe (OSet (Credential Guard)))
-> (Set (KeyHash Guard) -> OSet (Credential Guard))
-> Set (KeyHash Guard)
-> Maybe (OSet (Credential Guard))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Set (Credential Guard) -> OSet (Credential Guard)
forall a. Set a -> OSet a
OSet.fromSet (Set (Credential Guard) -> OSet (Credential Guard))
-> (Set (KeyHash Guard) -> Set (Credential Guard))
-> Set (KeyHash Guard)
-> OSet (Credential Guard)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (KeyHash Guard -> Credential Guard)
-> Set (KeyHash Guard) -> Set (Credential Guard)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map KeyHash Guard -> Credential Guard
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj)

instance AnyEraTxBody ConwayEra where
  guardsTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l ConwayEra) (Maybe (OSet (Credential Guard)))
guardsTxBodyG =
    Getting r (TxBody l ConwayEra) (Set (KeyHash Guard))
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
SimpleGetter (TxBody l era) (Set (KeyHash Guard))
forall (l :: TxLevel).
SimpleGetter (TxBody l ConwayEra) (Set (KeyHash Guard))
reqSignerHashesTxBodyG Getting r (TxBody l ConwayEra) (Set (KeyHash Guard))
-> ((Maybe (OSet (Credential Guard))
     -> Const r (Maybe (OSet (Credential Guard))))
    -> Set (KeyHash Guard) -> Const r (Set (KeyHash Guard)))
-> (Maybe (OSet (Credential Guard))
    -> Const r (Maybe (OSet (Credential Guard))))
-> TxBody l ConwayEra
-> Const r (TxBody l ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (KeyHash Guard) -> Maybe (OSet (Credential Guard)))
-> SimpleGetter
     (Set (KeyHash Guard)) (Maybe (OSet (Credential Guard)))
forall s a. (s -> a) -> SimpleGetter s a
to (OSet (Credential Guard) -> Maybe (OSet (Credential Guard))
forall a. a -> Maybe a
Just (OSet (Credential Guard) -> Maybe (OSet (Credential Guard)))
-> (Set (KeyHash Guard) -> OSet (Credential Guard))
-> Set (KeyHash Guard)
-> Maybe (OSet (Credential Guard))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Set (Credential Guard) -> OSet (Credential Guard)
forall a. Set a -> OSet a
OSet.fromSet (Set (Credential Guard) -> OSet (Credential Guard))
-> (Set (KeyHash Guard) -> Set (Credential Guard))
-> Set (KeyHash Guard)
-> OSet (Credential Guard)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (KeyHash Guard -> Credential Guard)
-> Set (KeyHash Guard) -> Set (Credential Guard)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map KeyHash Guard -> Credential Guard
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj)

instance AnyEraTxBody DijkstraEra

-- | Evaluate the difference between the value currently being consumed by a transaction
-- and the total value being produced. This value will be zero for a valid transaction.
--
-- In case when full `Cardano.Ledger.CertState` is available then this can be simplified to:
--
-- > let lookupRefund = lookupDepositDState (certDState dpState)
-- > let isRegPoolId = (`Map.member` psStakePools (certPState dpState))
-- > evalBalanceTxBody pp lookupRefund isRegPoolId utxo txBody
evalBalanceTxBody ::
  EraUTxO era =>
  -- | Current protocol parameters
  PParams era ->
  -- | Lookup current deposit amount for a registered stake credential delegation. This
  -- function must produce valid answer for all of the stake credentials present in any of
  -- the `DeRegKey` delegation certificates in the supplied `TxBody`. In other words,
  -- there is no requirement to know about all of the delegation certificates in the
  -- ledger state, just the ones this transaction cares about.
  (Credential Staking -> Maybe Coin) ->
  -- | Lookup current deposit amount for a registered DRep credential. This
  -- function must produce valid answer for all of the DRep credentials present in any of
  -- the `UnRegDRep` certificates in the supplied `TxBody`. In other words,
  -- there is no requirement to know about all of the DRep registrations in the
  -- ledger state, just the ones this transaction cares about.
  (Credential DRepRole -> Maybe Coin) ->
  -- | Check whether a pool with a supplied PoolStakeId is already registered. There is no
  -- requirement to answer this question for all stake pool credentials, just for the ones
  -- that have the registration certificates included in the supplied `TxBody`
  (KeyHash StakePool -> Bool) ->
  -- | The UTxO relevant to the transaction.
  UTxO era ->
  -- | The transaction being evaluated for balance.
  TxBody l era ->
  -- | The difference between what the transaction consumes and what it produces.
  Value era
evalBalanceTxBody :: forall era (l :: TxLevel).
EraUTxO era =>
PParams era
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> (KeyHash StakePool -> Bool)
-> UTxO era
-> TxBody l era
-> Value era
evalBalanceTxBody PParams era
pp Credential Staking -> Maybe Coin
lookupKeyRefund Credential DRepRole -> Maybe Coin
lookupDRepRefund KeyHash StakePool -> Bool
isRegPoolId UTxO era
utxo TxBody l era
txBody =
  PParams era
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> UTxO era
-> TxBody l era
-> Value era
forall era (t :: TxLevel).
EraUTxO era =>
PParams era
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> UTxO era
-> TxBody t era
-> Value era
forall (t :: TxLevel).
PParams era
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> UTxO era
-> TxBody t era
-> Value era
getConsumedValue PParams era
pp Credential Staking -> Maybe Coin
lookupKeyRefund Credential DRepRole -> Maybe Coin
lookupDRepRefund UTxO era
utxo TxBody l era
txBody
    Value era -> Value era -> Value era
forall t. Val t => t -> t -> t
<-> PParams era
-> (KeyHash StakePool -> Bool) -> TxBody l era -> Value era
forall era (t :: TxLevel).
EraUTxO era =>
PParams era
-> (KeyHash StakePool -> Bool) -> TxBody t era -> Value era
forall (t :: TxLevel).
PParams era
-> (KeyHash StakePool -> Bool) -> TxBody t era -> Value era
getProducedValue PParams era
pp KeyHash StakePool -> Bool
isRegPoolId TxBody l era
txBody