{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE InstanceSigs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Conway.TxBody (
  ConwayEraTxBody (..),
  TxBody (
    MkConwayTxBody,
    ConwayTxBody,
    ctbSpendInputs,
    ctbCollateralInputs,
    ctbReferenceInputs,
    ctbOutputs,
    ctbCollateralReturn,
    ctbTotalCollateral,
    ctbCerts,
    ctbWithdrawals,
    ctbTxfee,
    ctbVldt,
    ctbReqSignerHashes,
    ctbMint,
    ctbScriptIntegrityHash,
    ctbAdHash,
    ctbTxNetworkId,
    ctbVotingProcedures,
    ctbProposalProcedures,
    ctbCurrentTreasuryValue,
    ctbTreasuryDonation
  ),
  ConwayTxBodyRaw (..),
  conwayTotalDepositsTxBody,
  conwayProposalsDeposits,
  conwayRedeemerPointer,
  conwayRedeemerPointerInverse,
  upgradeBabbageTxOut,
) where

import Cardano.Ledger.Alonzo.TxBody (Indexable (..))
import Cardano.Ledger.Babbage.Core
import Cardano.Ledger.Babbage.TxBody (
  allSizedOutputsBabbageTxBodyF,
  babbageAllInputsTxBodyF,
  babbageSpendableInputsTxBodyF,
 )
import Cardano.Ledger.BaseTypes (Network, fromSMaybe)
import Cardano.Ledger.Binary (
  Annotator,
  DecCBOR (..),
  EncCBOR (..),
  Sized (..),
  ToCBOR (..),
  mkSized,
 )
import Cardano.Ledger.Binary.Coders (
  Decode (..),
  Density (..),
  Encode (..),
  Field (..),
  Wrapped (..),
  decode,
  encode,
  encodeKeyedStrictMaybe,
  field,
  fieldGuarded,
  invalidField,
  ofield,
  (!>),
 )
import Cardano.Ledger.Coin (Coin (..), decodePositiveCoin)
import Cardano.Ledger.Conway.Era (ConwayEra)
import Cardano.Ledger.Conway.Governance.Procedures (ProposalProcedure, VotingProcedures (..))
import Cardano.Ledger.Conway.PParams (ConwayEraPParams, ppGovActionDepositL)
import Cardano.Ledger.Conway.Scripts (ConwayEraScript, ConwayPlutusPurpose (..))
import Cardano.Ledger.Conway.TxCert (ConwayEraTxCert)
import Cardano.Ledger.Conway.TxOut (upgradeBabbageTxOut)
import Cardano.Ledger.Mary.Value (MultiAsset (..))
import Cardano.Ledger.MemoBytes (
  EqRaw,
  Mem,
  MemoBytes (..),
  MemoHashIndex,
  Memoized (..),
  getMemoRawType,
  getMemoSafeHash,
  lensMemoRawType,
  mkMemoizedEra,
 )
import Cardano.Ledger.TxIn (TxIn (..))
import Cardano.Ledger.Val (Val (..))
import Control.DeepSeq (NFData (..), deepseq)
import Data.Maybe.Strict (StrictMaybe (..))
import qualified Data.OSet.Strict as OSet
import Data.Sequence.Strict (StrictSeq)
import Data.Set (Set)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Lens.Micro (Lens', to, (^.))
import NoThunks.Class (InspectHeap (..), NoThunks)

instance Memoized (TxBody l ConwayEra) where
  type RawType (TxBody l ConwayEra) = ConwayTxBodyRaw l ConwayEra

data ConwayTxBodyRaw l era where
  ConwayTxBodyRaw ::
    { forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrSpendInputs :: !(Set TxIn)
    , forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrCollateralInputs :: !(Set TxIn)
    , forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrReferenceInputs :: !(Set TxIn)
    , forall era.
ConwayTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
ctbrOutputs :: !(StrictSeq (Sized (TxOut era)))
    , forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
ctbrCollateralReturn :: !(StrictMaybe (Sized (TxOut era)))
    , forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrTotalCollateral :: !(StrictMaybe Coin)
    , forall era. ConwayTxBodyRaw TopTx era -> OSet (TxCert era)
ctbrCerts :: !(OSet.OSet (TxCert era))
    , forall era. ConwayTxBodyRaw TopTx era -> Withdrawals
ctbrWithdrawals :: !Withdrawals
    , forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrFee :: !Coin
    , forall era. ConwayTxBodyRaw TopTx era -> ValidityInterval
ctbrVldt :: !ValidityInterval
    , forall era. ConwayTxBodyRaw TopTx era -> Set (KeyHash Guard)
ctbrReqSignerHashes :: !(Set (KeyHash Guard))
    , forall era. ConwayTxBodyRaw TopTx era -> MultiAsset
ctbrMint :: !MultiAsset
    , forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash :: !(StrictMaybe ScriptIntegrityHash)
    , forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
ctbrAuxDataHash :: !(StrictMaybe TxAuxDataHash)
    , forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Network
ctbrNetworkId :: !(StrictMaybe Network)
    , forall era. ConwayTxBodyRaw TopTx era -> VotingProcedures era
ctbrVotingProcedures :: !(VotingProcedures era)
    , forall era.
ConwayTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
ctbrProposalProcedures :: !(OSet.OSet (ProposalProcedure era))
    , forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrCurrentTreasuryValue :: !(StrictMaybe Coin)
    , forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrTreasuryDonation :: !Coin
    } ->
    ConwayTxBodyRaw TopTx era

deriving instance Eq (ConwayTxBodyRaw l ConwayEra)

deriving via
  InspectHeap (ConwayTxBodyRaw l ConwayEra)
  instance
    Typeable l => NoThunks (ConwayTxBodyRaw l ConwayEra)

instance NFData (ConwayTxBodyRaw l ConwayEra) where
  rnf :: ConwayTxBodyRaw l ConwayEra -> ()
rnf ConwayTxBodyRaw {OSet (TxCert ConwayEra)
OSet (ProposalProcedure ConwayEra)
Set (KeyHash Guard)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe Network
StrictMaybe Coin
ValidityInterval
Withdrawals
Coin
MultiAsset
StrictSeq (Sized (TxOut ConwayEra))
VotingProcedures ConwayEra
ctbrSpendInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrCollateralInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrReferenceInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrOutputs :: forall era.
ConwayTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
ctbrCollateralReturn :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
ctbrTotalCollateral :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrCerts :: forall era. ConwayTxBodyRaw TopTx era -> OSet (TxCert era)
ctbrWithdrawals :: forall era. ConwayTxBodyRaw TopTx era -> Withdrawals
ctbrFee :: forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrVldt :: forall era. ConwayTxBodyRaw TopTx era -> ValidityInterval
ctbrReqSignerHashes :: forall era. ConwayTxBodyRaw TopTx era -> Set (KeyHash Guard)
ctbrMint :: forall era. ConwayTxBodyRaw TopTx era -> MultiAsset
ctbrScriptIntegrityHash :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
ctbrAuxDataHash :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
ctbrNetworkId :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Network
ctbrVotingProcedures :: forall era. ConwayTxBodyRaw TopTx era -> VotingProcedures era
ctbrProposalProcedures :: forall era.
ConwayTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
ctbrCurrentTreasuryValue :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrTreasuryDonation :: forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrSpendInputs :: Set TxIn
ctbrCollateralInputs :: Set TxIn
ctbrReferenceInputs :: Set TxIn
ctbrOutputs :: StrictSeq (Sized (TxOut ConwayEra))
ctbrCollateralReturn :: StrictMaybe (Sized (TxOut ConwayEra))
ctbrTotalCollateral :: StrictMaybe Coin
ctbrCerts :: OSet (TxCert ConwayEra)
ctbrWithdrawals :: Withdrawals
ctbrFee :: Coin
ctbrVldt :: ValidityInterval
ctbrReqSignerHashes :: Set (KeyHash Guard)
ctbrMint :: MultiAsset
ctbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
ctbrAuxDataHash :: StrictMaybe TxAuxDataHash
ctbrNetworkId :: StrictMaybe Network
ctbrVotingProcedures :: VotingProcedures ConwayEra
ctbrProposalProcedures :: OSet (ProposalProcedure ConwayEra)
ctbrCurrentTreasuryValue :: StrictMaybe Coin
ctbrTreasuryDonation :: Coin
..} =
    Set TxIn
ctbrSpendInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
      Set TxIn
ctbrCollateralInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
        Set TxIn
ctbrReferenceInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
          StrictSeq (Sized (TxOut ConwayEra))
StrictSeq (Sized (BabbageTxOut ConwayEra))
ctbrOutputs StrictSeq (Sized (BabbageTxOut ConwayEra)) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
            StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe (Sized (BabbageTxOut ConwayEra))
ctbrCollateralReturn StrictMaybe (Sized (BabbageTxOut ConwayEra)) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
              StrictMaybe Coin
ctbrTotalCollateral StrictMaybe Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                OSet (TxCert ConwayEra)
OSet (ConwayTxCert ConwayEra)
ctbrCerts OSet (ConwayTxCert ConwayEra) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                  Withdrawals
ctbrWithdrawals Withdrawals -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                    Coin
ctbrFee Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                      ValidityInterval
ctbrVldt ValidityInterval -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                        Set (KeyHash Guard)
ctbrReqSignerHashes Set (KeyHash Guard) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                          MultiAsset
ctbrMint MultiAsset -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                            StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash StrictMaybe ScriptIntegrityHash -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                              StrictMaybe TxAuxDataHash
ctbrAuxDataHash StrictMaybe TxAuxDataHash -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                StrictMaybe Network
ctbrNetworkId StrictMaybe Network -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                  VotingProcedures ConwayEra
ctbrVotingProcedures VotingProcedures ConwayEra -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                    OSet (ProposalProcedure ConwayEra)
ctbrProposalProcedures OSet (ProposalProcedure ConwayEra) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                      StrictMaybe Coin
ctbrCurrentTreasuryValue StrictMaybe Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                        Coin -> ()
forall a. NFData a => a -> ()
rnf Coin
ctbrTreasuryDonation

deriving instance Show (ConwayTxBodyRaw l ConwayEra)

instance HasEraTxLevel ConwayTxBodyRaw ConwayEra where
  toSTxLevel :: forall (l :: TxLevel).
ConwayTxBodyRaw l ConwayEra -> STxLevel l ConwayEra
toSTxLevel ConwayTxBodyRaw {} = STxLevel l ConwayEra
STxTopLevel TopTx ConwayEra
forall era. STxTopLevel TopTx era
STopTxOnly

instance Typeable l => DecCBOR (ConwayTxBodyRaw l ConwayEra) where
  decCBOR :: forall s. Decoder s (ConwayTxBodyRaw l ConwayEra)
decCBOR =
    (ConwayTxBodyRaw TopTx ConwayEra -> ConwayTxBodyRaw l ConwayEra)
-> Decoder s (ConwayTxBodyRaw TopTx ConwayEra)
-> Decoder s (ConwayTxBodyRaw l ConwayEra)
forall a b. (a -> b) -> Decoder s a -> Decoder s b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ConwayTxBodyRaw TopTx ConwayEra -> ConwayTxBodyRaw l ConwayEra
forall (l :: TxLevel) (t :: TxLevel -> * -> *) era.
(Typeable l, HasEraTxLevel t era,
 STxLevel l era ~ STxTopLevel l era) =>
t TopTx era -> t l era
asSTxTopLevel (Decoder s (ConwayTxBodyRaw TopTx ConwayEra)
 -> Decoder s (ConwayTxBodyRaw l ConwayEra))
-> (Decode (Closed Dense) (ConwayTxBodyRaw TopTx ConwayEra)
    -> Decoder s (ConwayTxBodyRaw TopTx ConwayEra))
-> Decode (Closed Dense) (ConwayTxBodyRaw TopTx ConwayEra)
-> Decoder s (ConwayTxBodyRaw l ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Decode (Closed Dense) (ConwayTxBodyRaw TopTx ConwayEra)
-> Decoder s (ConwayTxBodyRaw TopTx ConwayEra)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (ConwayTxBodyRaw TopTx ConwayEra)
 -> Decoder s (ConwayTxBodyRaw l ConwayEra))
-> Decode (Closed Dense) (ConwayTxBodyRaw TopTx ConwayEra)
-> Decoder s (ConwayTxBodyRaw l ConwayEra)
forall a b. (a -> b) -> a -> b
$
      String
-> ConwayTxBodyRaw TopTx ConwayEra
-> (Word -> Field (ConwayTxBodyRaw TopTx ConwayEra))
-> [(Word, String)]
-> Decode (Closed Dense) (ConwayTxBodyRaw TopTx ConwayEra)
forall t.
Typeable t =>
String
-> t
-> (Word -> Field t)
-> [(Word, String)]
-> Decode (Closed Dense) t
SparseKeyed
        String
"TxBodyRaw"
        (ConwayTxBodyRaw TopTx ConwayEra -> ConwayTxBodyRaw TopTx ConwayEra
forall (l :: TxLevel) (t :: TxLevel -> * -> *) era.
(Typeable l, HasEraTxLevel t era,
 STxLevel l era ~ STxTopLevel l era) =>
t TopTx era -> t l era
asSTxTopLevel ConwayTxBodyRaw TopTx ConwayEra
basicConwayTxBodyRaw)
        Word -> Field (ConwayTxBodyRaw TopTx ConwayEra)
bodyFields
        [(Word, String)]
requiredFields
    where
      bodyFields :: Word -> Field (ConwayTxBodyRaw TopTx ConwayEra)
      bodyFields :: Word -> Field (ConwayTxBodyRaw TopTx ConwayEra)
bodyFields Word
0 = (Set TxIn
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 0)) (Set TxIn)
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(x -> t -> t) -> Decode (Closed d) x -> Field t
field (\Set TxIn
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrSpendInputs = x}) Decode (Closed (ZonkAny 0)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
1 = (StrictSeq (Sized (BabbageTxOut ConwayEra))
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode
     (Closed (ZonkAny 1)) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(x -> t -> t) -> Decode (Closed d) x -> Field t
field (\StrictSeq (Sized (BabbageTxOut ConwayEra))
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrOutputs = x}) Decode
  (Closed (ZonkAny 1)) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
2 = (Coin
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 2)) Coin
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(x -> t -> t) -> Decode (Closed d) x -> Field t
field (\Coin
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrFee = x}) Decode (Closed (ZonkAny 2)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
3 =
        (StrictMaybe SlotNo
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 3)) SlotNo
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield
          (\StrictMaybe SlotNo
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrVldt = (ctbrVldt tx) {invalidHereafter = x}})
          Decode (Closed (ZonkAny 3)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
4 =
        String
-> (OSet (ConwayTxCert ConwayEra) -> Bool)
-> (OSet (ConwayTxCert ConwayEra)
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 4)) (OSet (ConwayTxCert ConwayEra))
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"Certificates" String
"non-empty")
          OSet (ConwayTxCert ConwayEra) -> Bool
forall a. OSet a -> Bool
OSet.null
          (\OSet (ConwayTxCert ConwayEra)
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrCerts = x})
          Decode (Closed (ZonkAny 4)) (OSet (ConwayTxCert ConwayEra))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
5 =
        String
-> (Withdrawals -> Bool)
-> (Withdrawals
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 5)) Withdrawals
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"Withdrawals" String
"non-empty")
          (Map RewardAccount Coin -> Bool
forall a. Map RewardAccount a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map RewardAccount Coin -> Bool)
-> (Withdrawals -> Map RewardAccount Coin) -> Withdrawals -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Withdrawals -> Map RewardAccount Coin
unWithdrawals)
          (\Withdrawals
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrWithdrawals = x})
          Decode (Closed (ZonkAny 5)) Withdrawals
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
7 = (StrictMaybe TxAuxDataHash
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 6)) TxAuxDataHash
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield (\StrictMaybe TxAuxDataHash
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrAuxDataHash = x}) Decode (Closed (ZonkAny 6)) TxAuxDataHash
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
8 =
        (StrictMaybe SlotNo
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 7)) SlotNo
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield
          (\StrictMaybe SlotNo
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrVldt = (ctbrVldt tx) {invalidBefore = x}})
          Decode (Closed (ZonkAny 7)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
9 =
        String
-> (MultiAsset -> Bool)
-> (MultiAsset
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 8)) MultiAsset
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"Mint" String
"non-empty")
          (MultiAsset -> MultiAsset -> Bool
forall a. Eq a => a -> a -> Bool
== MultiAsset
forall a. Monoid a => a
mempty)
          (\MultiAsset
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrMint = x})
          Decode (Closed (ZonkAny 8)) MultiAsset
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
11 = (StrictMaybe ScriptIntegrityHash
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 9)) ScriptIntegrityHash
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield (\StrictMaybe ScriptIntegrityHash
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrScriptIntegrityHash = x}) Decode (Closed (ZonkAny 9)) ScriptIntegrityHash
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
13 =
        String
-> (Set TxIn -> Bool)
-> (Set TxIn
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 10)) (Set TxIn)
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"Collateral Inputs" String
"non-empty")
          Set TxIn -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null
          (\Set TxIn
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrCollateralInputs = x})
          Decode (Closed (ZonkAny 10)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
14 =
        String
-> (Set (KeyHash Guard) -> Bool)
-> (Set (KeyHash Guard)
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 11)) (Set (KeyHash Guard))
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"Required Signer Hashes" String
"non-empty")
          Set (KeyHash Guard) -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null
          (\Set (KeyHash Guard)
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrReqSignerHashes = x})
          Decode (Closed (ZonkAny 11)) (Set (KeyHash Guard))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
15 = (StrictMaybe Network
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 12)) Network
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield (\StrictMaybe Network
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrNetworkId = x}) Decode (Closed (ZonkAny 12)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
16 = (StrictMaybe (Sized (BabbageTxOut ConwayEra))
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 13)) (Sized (BabbageTxOut ConwayEra))
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield (\StrictMaybe (Sized (BabbageTxOut ConwayEra))
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrCollateralReturn = x}) Decode (Closed (ZonkAny 13)) (Sized (BabbageTxOut ConwayEra))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
17 = (StrictMaybe Coin
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 14)) Coin
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield (\StrictMaybe Coin
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrTotalCollateral = x}) Decode (Closed (ZonkAny 14)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
18 =
        String
-> (Set TxIn -> Bool)
-> (Set TxIn
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 15)) (Set TxIn)
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"Reference Inputs" String
"non-empty")
          Set TxIn -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null
          (\Set TxIn
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrReferenceInputs = x})
          Decode (Closed (ZonkAny 15)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
19 =
        String
-> (VotingProcedures ConwayEra -> Bool)
-> (VotingProcedures ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 16)) (VotingProcedures ConwayEra)
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"VotingProcedures" String
"non-empty")
          (Map Voter (Map GovActionId (VotingProcedure ConwayEra)) -> Bool
forall a. Map Voter a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map Voter (Map GovActionId (VotingProcedure ConwayEra)) -> Bool)
-> (VotingProcedures ConwayEra
    -> Map Voter (Map GovActionId (VotingProcedure ConwayEra)))
-> VotingProcedures ConwayEra
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VotingProcedures ConwayEra
-> Map Voter (Map GovActionId (VotingProcedure ConwayEra))
forall era.
VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
unVotingProcedures)
          (\VotingProcedures ConwayEra
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrVotingProcedures = x})
          Decode (Closed (ZonkAny 16)) (VotingProcedures ConwayEra)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
20 =
        String
-> (OSet (ProposalProcedure ConwayEra) -> Bool)
-> (OSet (ProposalProcedure ConwayEra)
    -> ConwayTxBodyRaw TopTx ConwayEra
    -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode
     (Closed (ZonkAny 17)) (OSet (ProposalProcedure ConwayEra))
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
String
-> (x -> Bool) -> (x -> t -> t) -> Decode (Closed d) x -> Field t
fieldGuarded
          (String -> ShowS
emptyFailure String
"ProposalProcedures" String
"non-empty")
          OSet (ProposalProcedure ConwayEra) -> Bool
forall a. OSet a -> Bool
OSet.null
          (\OSet (ProposalProcedure ConwayEra)
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrProposalProcedures = x})
          Decode (Closed (ZonkAny 17)) (OSet (ProposalProcedure ConwayEra))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
21 = (StrictMaybe Coin
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed (ZonkAny 18)) Coin
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield (\StrictMaybe Coin
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrCurrentTreasuryValue = x}) Decode (Closed (ZonkAny 18)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
      bodyFields Word
22 =
        (StrictMaybe Coin
 -> ConwayTxBodyRaw TopTx ConwayEra
 -> ConwayTxBodyRaw TopTx ConwayEra)
-> Decode (Closed Dense) Coin
-> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield
          (\StrictMaybe Coin
x ConwayTxBodyRaw TopTx ConwayEra
tx -> ConwayTxBodyRaw TopTx ConwayEra
tx {ctbrTreasuryDonation = fromSMaybe zero x})
          ((forall s. Decoder s Coin) -> Decode (Closed Dense) Coin
forall t. (forall s. Decoder s t) -> Decode (Closed Dense) t
D (String -> Decoder s Coin
forall s. String -> Decoder s Coin
decodePositiveCoin (String -> Decoder s Coin) -> String -> Decoder s Coin
forall a b. (a -> b) -> a -> b
$ String -> ShowS
emptyFailure String
"Treasury Donation" String
"non-zero"))
      bodyFields Word
n = Word -> Field (ConwayTxBodyRaw TopTx ConwayEra)
forall t. Word -> Field t
invalidField Word
n
      requiredFields :: [(Word, String)]
      requiredFields :: [(Word, String)]
requiredFields =
        [ (Word
0, String
"inputs")
        , (Word
1, String
"outputs")
        , (Word
2, String
"fee")
        ]
      emptyFailure :: String -> ShowS
emptyFailure String
fieldName String
requirement =
        String
"TxBody: '" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
fieldName String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
"' must be " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
requirement String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
" when supplied"

instance Typeable l => DecCBOR (Annotator (ConwayTxBodyRaw l ConwayEra)) where
  decCBOR :: forall s. Decoder s (Annotator (ConwayTxBodyRaw l ConwayEra))
decCBOR = ConwayTxBodyRaw l ConwayEra
-> Annotator (ConwayTxBodyRaw l ConwayEra)
forall a. a -> Annotator a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ConwayTxBodyRaw l ConwayEra
 -> Annotator (ConwayTxBodyRaw l ConwayEra))
-> Decoder s (ConwayTxBodyRaw l ConwayEra)
-> Decoder s (Annotator (ConwayTxBodyRaw l ConwayEra))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (ConwayTxBodyRaw l ConwayEra)
forall s. Decoder s (ConwayTxBodyRaw l ConwayEra)
forall a s. DecCBOR a => Decoder s a
decCBOR

deriving via
  Mem (ConwayTxBodyRaw l ConwayEra)
  instance
    Typeable l => DecCBOR (Annotator (TxBody l ConwayEra))

deriving instance Typeable l => NoThunks (TxBody l ConwayEra)

deriving instance Eq (TxBody l ConwayEra)

deriving newtype instance NFData (TxBody l ConwayEra)

deriving instance Show (TxBody l ConwayEra)

type instance MemoHashIndex (ConwayTxBodyRaw l ConwayEra) = EraIndependentTxBody

instance HashAnnotated (TxBody l ConwayEra) EraIndependentTxBody where
  hashAnnotated :: TxBody l ConwayEra -> SafeHash EraIndependentTxBody
hashAnnotated = TxBody l ConwayEra -> SafeHash EraIndependentTxBody
TxBody l ConwayEra
-> SafeHash (MemoHashIndex (RawType (TxBody l ConwayEra)))
forall t. Memoized t => t -> SafeHash (MemoHashIndex (RawType t))
getMemoSafeHash

mkConwayTxBody :: Typeable l => TxBody l ConwayEra
mkConwayTxBody :: forall (l :: TxLevel). Typeable l => TxBody l ConwayEra
mkConwayTxBody = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @ConwayEra (RawType (TxBody l ConwayEra) -> TxBody l ConwayEra)
-> RawType (TxBody l ConwayEra) -> TxBody l ConwayEra
forall a b. (a -> b) -> a -> b
$ ConwayTxBodyRaw TopTx ConwayEra -> ConwayTxBodyRaw l ConwayEra
forall (l :: TxLevel) (t :: TxLevel -> * -> *) era.
(Typeable l, HasEraTxLevel t era,
 STxLevel l era ~ STxTopLevel l era) =>
t TopTx era -> t l era
asSTxTopLevel ConwayTxBodyRaw TopTx ConwayEra
basicConwayTxBodyRaw

basicConwayTxBodyRaw :: ConwayTxBodyRaw TopTx ConwayEra
basicConwayTxBodyRaw :: ConwayTxBodyRaw TopTx ConwayEra
basicConwayTxBodyRaw =
  Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut ConwayEra))
-> StrictMaybe (Sized (TxOut ConwayEra))
-> StrictMaybe Coin
-> OSet (TxCert ConwayEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> ConwayTxBodyRaw TopTx ConwayEra
forall era.
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> ConwayTxBodyRaw TopTx era
ConwayTxBodyRaw
    Set TxIn
forall a. Monoid a => a
mempty
    Set TxIn
forall a. Monoid a => a
mempty
    Set TxIn
forall a. Monoid a => a
mempty
    StrictSeq (Sized (TxOut ConwayEra))
StrictSeq (Sized (BabbageTxOut ConwayEra))
forall a. Monoid a => a
mempty
    StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe (Sized (BabbageTxOut ConwayEra))
forall a. StrictMaybe a
SNothing
    StrictMaybe Coin
forall a. StrictMaybe a
SNothing
    OSet (TxCert ConwayEra)
OSet (ConwayTxCert ConwayEra)
forall a. OSet a
OSet.empty
    (Map RewardAccount Coin -> Withdrawals
Withdrawals Map RewardAccount Coin
forall a. Monoid a => a
mempty)
    Coin
forall a. Monoid a => a
mempty
    (StrictMaybe SlotNo -> StrictMaybe SlotNo -> ValidityInterval
ValidityInterval StrictMaybe SlotNo
forall a. StrictMaybe a
SNothing StrictMaybe SlotNo
forall a. StrictMaybe a
SNothing)
    Set (KeyHash Guard)
forall a. Monoid a => a
mempty
    MultiAsset
forall a. Monoid a => a
mempty
    StrictMaybe ScriptIntegrityHash
forall a. StrictMaybe a
SNothing
    StrictMaybe TxAuxDataHash
forall a. StrictMaybe a
SNothing
    StrictMaybe Network
forall a. StrictMaybe a
SNothing
    (Map Voter (Map GovActionId (VotingProcedure ConwayEra))
-> VotingProcedures ConwayEra
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
VotingProcedures Map Voter (Map GovActionId (VotingProcedure ConwayEra))
forall a. Monoid a => a
mempty)
    OSet (ProposalProcedure ConwayEra)
forall a. OSet a
OSet.empty
    StrictMaybe Coin
forall a. StrictMaybe a
SNothing
    Coin
forall a. Monoid a => a
mempty

instance HasEraTxLevel TxBody ConwayEra where
  toSTxLevel :: forall (l :: TxLevel). TxBody l ConwayEra -> STxLevel l ConwayEra
toSTxLevel = ConwayTxBodyRaw l ConwayEra -> STxLevel l ConwayEra
ConwayTxBodyRaw l ConwayEra -> STxTopLevel l ConwayEra
forall (l :: TxLevel).
ConwayTxBodyRaw l ConwayEra -> STxLevel l ConwayEra
forall (t :: TxLevel -> * -> *) era (l :: TxLevel).
HasEraTxLevel t era =>
t l era -> STxLevel l era
toSTxLevel (ConwayTxBodyRaw l ConwayEra -> STxTopLevel l ConwayEra)
-> (TxBody l ConwayEra -> ConwayTxBodyRaw l ConwayEra)
-> TxBody l ConwayEra
-> STxTopLevel l ConwayEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody l ConwayEra -> RawType (TxBody l ConwayEra)
TxBody l ConwayEra -> ConwayTxBodyRaw l ConwayEra
forall t. Memoized t => t -> RawType t
getMemoRawType

instance EraTxBody ConwayEra where
  newtype TxBody l ConwayEra = MkConwayTxBody (MemoBytes (ConwayTxBodyRaw l ConwayEra))
    deriving ((forall x. TxBody l ConwayEra -> Rep (TxBody l ConwayEra) x)
-> (forall x. Rep (TxBody l ConwayEra) x -> TxBody l ConwayEra)
-> Generic (TxBody l ConwayEra)
forall x. Rep (TxBody l ConwayEra) x -> TxBody l ConwayEra
forall x. TxBody l ConwayEra -> Rep (TxBody l ConwayEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (l :: TxLevel) x.
Rep (TxBody l ConwayEra) x -> TxBody l ConwayEra
forall (l :: TxLevel) x.
TxBody l ConwayEra -> Rep (TxBody l ConwayEra) x
$cfrom :: forall (l :: TxLevel) x.
TxBody l ConwayEra -> Rep (TxBody l ConwayEra) x
from :: forall x. TxBody l ConwayEra -> Rep (TxBody l ConwayEra) x
$cto :: forall (l :: TxLevel) x.
Rep (TxBody l ConwayEra) x -> TxBody l ConwayEra
to :: forall x. Rep (TxBody l ConwayEra) x -> TxBody l ConwayEra
Generic, TxBody l ConwayEra -> Int
TxBody l ConwayEra -> ByteString
(TxBody l ConwayEra -> ByteString)
-> (TxBody l ConwayEra -> Int)
-> (forall i. Proxy i -> TxBody l ConwayEra -> SafeHash i)
-> SafeToHash (TxBody l ConwayEra)
forall i. Proxy i -> TxBody l ConwayEra -> SafeHash i
forall t.
(t -> ByteString)
-> (t -> Int)
-> (forall i. Proxy i -> t -> SafeHash i)
-> SafeToHash t
forall (l :: TxLevel). TxBody l ConwayEra -> Int
forall (l :: TxLevel). TxBody l ConwayEra -> ByteString
forall (l :: TxLevel) i.
Proxy i -> TxBody l ConwayEra -> SafeHash i
$coriginalBytes :: forall (l :: TxLevel). TxBody l ConwayEra -> ByteString
originalBytes :: TxBody l ConwayEra -> ByteString
$coriginalBytesSize :: forall (l :: TxLevel). TxBody l ConwayEra -> Int
originalBytesSize :: TxBody l ConwayEra -> Int
$cmakeHashWithExplicitProxys :: forall (l :: TxLevel) i.
Proxy i -> TxBody l ConwayEra -> SafeHash i
makeHashWithExplicitProxys :: forall i. Proxy i -> TxBody l ConwayEra -> SafeHash i
SafeToHash, Typeable (TxBody l ConwayEra)
Typeable (TxBody l ConwayEra) =>
(TxBody l ConwayEra -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
    -> Proxy (TxBody l ConwayEra) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
    -> Proxy [TxBody l ConwayEra] -> Size)
-> ToCBOR (TxBody l ConwayEra)
TxBody l ConwayEra -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l ConwayEra] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l ConwayEra) -> Size
forall a.
Typeable a =>
(a -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy a -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [a] -> Size)
-> ToCBOR a
forall (l :: TxLevel). Typeable l => Typeable (TxBody l ConwayEra)
forall (l :: TxLevel). Typeable l => TxBody l ConwayEra -> Encoding
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l ConwayEra] -> Size
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l ConwayEra) -> Size
$ctoCBOR :: forall (l :: TxLevel). Typeable l => TxBody l ConwayEra -> Encoding
toCBOR :: TxBody l ConwayEra -> Encoding
$cencodedSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l ConwayEra) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l ConwayEra) -> Size
$cencodedListSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l ConwayEra] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l ConwayEra] -> Size
ToCBOR)

  mkBasicTxBody :: forall (l :: TxLevel). Typeable l => TxBody l ConwayEra
mkBasicTxBody = TxBody l ConwayEra
forall (l :: TxLevel). Typeable l => TxBody l ConwayEra
mkConwayTxBody

  inputsTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l ConwayEra) (Set TxIn)
inputsTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {Set TxIn
ctbrSpendInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrSpendInputs :: Set TxIn
ctbrSpendInputs} -> Set TxIn
ctbrSpendInputs) ((RawType (TxBody l ConwayEra)
  -> Set TxIn -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra) (TxBody l ConwayEra) (Set TxIn) (Set TxIn))
-> (RawType (TxBody l ConwayEra)
    -> Set TxIn -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra) (TxBody l ConwayEra) (Set TxIn) (Set TxIn)
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb Set TxIn
x -> RawType (TxBody l ConwayEra)
txb {ctbrSpendInputs = x}
  {-# INLINE inputsTxBodyL #-}

  outputsTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictSeq (TxOut ConwayEra))
outputsTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra ((Sized (BabbageTxOut ConwayEra) -> BabbageTxOut ConwayEra)
-> StrictSeq (Sized (BabbageTxOut ConwayEra))
-> StrictSeq (BabbageTxOut ConwayEra)
forall a b. (a -> b) -> StrictSeq a -> StrictSeq b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Sized (BabbageTxOut ConwayEra) -> BabbageTxOut ConwayEra
forall a. Sized a -> a
sizedValue (StrictSeq (Sized (BabbageTxOut ConwayEra))
 -> StrictSeq (BabbageTxOut ConwayEra))
-> (ConwayTxBodyRaw l ConwayEra
    -> StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> ConwayTxBodyRaw l ConwayEra
-> StrictSeq (BabbageTxOut ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\ConwayTxBodyRaw {StrictSeq (Sized (TxOut ConwayEra))
ctbrOutputs :: forall era.
ConwayTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
ctbrOutputs :: StrictSeq (Sized (TxOut ConwayEra))
ctbrOutputs} -> StrictSeq (Sized (TxOut ConwayEra))
StrictSeq (Sized (BabbageTxOut ConwayEra))
ctbrOutputs)) ((RawType (TxBody l ConwayEra)
  -> StrictSeq (TxOut ConwayEra) -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictSeq (TxOut ConwayEra))
      (StrictSeq (TxOut ConwayEra)))
-> (RawType (TxBody l ConwayEra)
    -> StrictSeq (TxOut ConwayEra) -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictSeq (TxOut ConwayEra))
     (StrictSeq (TxOut ConwayEra))
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb StrictSeq (TxOut ConwayEra)
x -> RawType (TxBody l ConwayEra)
txb {ctbrOutputs = mkSized (eraProtVerLow @ConwayEra) <$> x}
  {-# INLINE outputsTxBodyL #-}

  feeTxBodyL :: Lens' (TxBody TopTx ConwayEra) Coin
feeTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra RawType (TxBody TopTx ConwayEra) -> Coin
ConwayTxBodyRaw TopTx ConwayEra -> Coin
forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrFee (\RawType (TxBody TopTx ConwayEra)
txb Coin
x -> RawType (TxBody TopTx ConwayEra)
txb {ctbrFee = x})
  {-# INLINE feeTxBodyL #-}

  auxDataHashTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictMaybe TxAuxDataHash)
auxDataHashTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictMaybe TxAuxDataHash
ctbrAuxDataHash :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
ctbrAuxDataHash :: StrictMaybe TxAuxDataHash
ctbrAuxDataHash} -> StrictMaybe TxAuxDataHash
ctbrAuxDataHash) ((RawType (TxBody l ConwayEra)
  -> StrictMaybe TxAuxDataHash -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictMaybe TxAuxDataHash)
      (StrictMaybe TxAuxDataHash))
-> (RawType (TxBody l ConwayEra)
    -> StrictMaybe TxAuxDataHash -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictMaybe TxAuxDataHash)
     (StrictMaybe TxAuxDataHash)
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb StrictMaybe TxAuxDataHash
x -> RawType (TxBody l ConwayEra)
txb {ctbrAuxDataHash = x}
  {-# INLINE auxDataHashTxBodyL #-}

  spendableInputsTxBodyF :: forall (l :: TxLevel). SimpleGetter (TxBody l ConwayEra) (Set TxIn)
spendableInputsTxBodyF = (TxBody l ConwayEra -> Set TxIn)
-> SimpleGetter (TxBody l ConwayEra) (Set TxIn)
forall s a. (s -> a) -> SimpleGetter s a
to (TxBody l ConwayEra
-> (TxBody TopTx ConwayEra -> Set TxIn) -> Set TxIn
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxTopLevel l era) =>
t l era -> (t TopTx era -> a) -> a
`withTopTxLevelOnly` (TxBody TopTx ConwayEra
-> Getting (Set TxIn) (TxBody TopTx ConwayEra) (Set TxIn)
-> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody TopTx ConwayEra) (Set TxIn)
forall era.
BabbageEraTxBody era =>
SimpleGetter (TxBody TopTx era) (Set TxIn)
SimpleGetter (TxBody TopTx ConwayEra) (Set TxIn)
babbageSpendableInputsTxBodyF))
  {-# INLINE spendableInputsTxBodyF #-}

  allInputsTxBodyF :: SimpleGetter (TxBody TopTx ConwayEra) (Set TxIn)
allInputsTxBodyF = Getting r (TxBody TopTx ConwayEra) (Set TxIn)
forall era.
BabbageEraTxBody era =>
SimpleGetter (TxBody TopTx era) (Set TxIn)
SimpleGetter (TxBody TopTx ConwayEra) (Set TxIn)
babbageAllInputsTxBodyF
  {-# INLINE allInputsTxBodyF #-}

  withdrawalsTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l ConwayEra) Withdrawals
withdrawalsTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {Withdrawals
ctbrWithdrawals :: forall era. ConwayTxBodyRaw TopTx era -> Withdrawals
ctbrWithdrawals :: Withdrawals
ctbrWithdrawals} -> Withdrawals
ctbrWithdrawals) ((RawType (TxBody l ConwayEra)
  -> Withdrawals -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra) (TxBody l ConwayEra) Withdrawals Withdrawals)
-> (RawType (TxBody l ConwayEra)
    -> Withdrawals -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra) (TxBody l ConwayEra) Withdrawals Withdrawals
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb Withdrawals
x -> RawType (TxBody l ConwayEra)
txb {ctbrWithdrawals = x}
  {-# INLINE withdrawalsTxBodyL #-}

  certsTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictSeq (TxCert ConwayEra))
certsTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (OSet (ConwayTxCert ConwayEra) -> StrictSeq (ConwayTxCert ConwayEra)
forall a. OSet a -> StrictSeq a
OSet.toStrictSeq (OSet (ConwayTxCert ConwayEra)
 -> StrictSeq (ConwayTxCert ConwayEra))
-> (ConwayTxBodyRaw l ConwayEra -> OSet (ConwayTxCert ConwayEra))
-> ConwayTxBodyRaw l ConwayEra
-> StrictSeq (ConwayTxCert ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\ConwayTxBodyRaw {OSet (TxCert ConwayEra)
ctbrCerts :: forall era. ConwayTxBodyRaw TopTx era -> OSet (TxCert era)
ctbrCerts :: OSet (TxCert ConwayEra)
ctbrCerts} -> OSet (TxCert ConwayEra)
OSet (ConwayTxCert ConwayEra)
ctbrCerts)) ((RawType (TxBody l ConwayEra)
  -> StrictSeq (TxCert ConwayEra) -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictSeq (TxCert ConwayEra))
      (StrictSeq (TxCert ConwayEra)))
-> (RawType (TxBody l ConwayEra)
    -> StrictSeq (TxCert ConwayEra) -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictSeq (TxCert ConwayEra))
     (StrictSeq (TxCert ConwayEra))
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb StrictSeq (TxCert ConwayEra)
x -> RawType (TxBody l ConwayEra)
txb {ctbrCerts = OSet.fromStrictSeq x}
  {-# INLINE certsTxBodyL #-}

  getTotalDepositsTxBody :: forall (l :: TxLevel).
PParams ConwayEra
-> (KeyHash StakePool -> Bool) -> TxBody l ConwayEra -> Coin
getTotalDepositsTxBody = PParams ConwayEra
-> (KeyHash StakePool -> Bool) -> TxBody l ConwayEra -> Coin
forall (l :: TxLevel).
PParams ConwayEra
-> (KeyHash StakePool -> Bool) -> TxBody l ConwayEra -> Coin
conwayTotalDepositsTxBody

  getTotalRefundsTxBody :: forall (l :: TxLevel).
PParams ConwayEra
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> TxBody l ConwayEra
-> Coin
getTotalRefundsTxBody PParams ConwayEra
pp Credential Staking -> Maybe Coin
lookupStakingDeposit Credential DRepRole -> Maybe Coin
lookupDRepDeposit TxBody l ConwayEra
txBody =
    PParams ConwayEra
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> StrictSeq (TxCert ConwayEra)
-> Coin
forall era (f :: * -> *).
(EraTxCert era, Foldable f) =>
PParams era
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> f (TxCert era)
-> Coin
forall (f :: * -> *).
Foldable f =>
PParams ConwayEra
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> f (TxCert ConwayEra)
-> Coin
getTotalRefundsTxCerts PParams ConwayEra
pp Credential Staking -> Maybe Coin
lookupStakingDeposit Credential DRepRole -> Maybe Coin
lookupDRepDeposit (TxBody l ConwayEra
txBody TxBody l ConwayEra
-> Getting
     (StrictSeq (ConwayTxCert ConwayEra))
     (TxBody l ConwayEra)
     (StrictSeq (ConwayTxCert ConwayEra))
-> StrictSeq (ConwayTxCert ConwayEra)
forall s a. s -> Getting a s a -> a
^. (StrictSeq (TxCert ConwayEra)
 -> Const
      (StrictSeq (ConwayTxCert ConwayEra))
      (StrictSeq (TxCert ConwayEra)))
-> TxBody l ConwayEra
-> Const (StrictSeq (ConwayTxCert ConwayEra)) (TxBody l ConwayEra)
Getting
  (StrictSeq (ConwayTxCert ConwayEra))
  (TxBody l ConwayEra)
  (StrictSeq (ConwayTxCert ConwayEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictSeq (TxCert ConwayEra))
certsTxBodyL)

-- ==========================================
-- Deposits and Refunds for Conway TxBody

-- | Compute all the deposits in a TxBody. This includes deposits for:
--
--   1. registering Stake
--   2. registering a StakePool
--   3. registering a DRep
--   4. submitting a Proposal
--
-- This is the contribution of a TxBody towards the total
-- `Cardano.Ledger.CertState.Obligations`
conwayTotalDepositsTxBody ::
  PParams ConwayEra ->
  (KeyHash StakePool -> Bool) ->
  TxBody l ConwayEra ->
  Coin
conwayTotalDepositsTxBody :: forall (l :: TxLevel).
PParams ConwayEra
-> (KeyHash StakePool -> Bool) -> TxBody l ConwayEra -> Coin
conwayTotalDepositsTxBody PParams ConwayEra
pp KeyHash StakePool -> Bool
isPoolRegisted TxBody l ConwayEra
txBody =
  PParams ConwayEra
-> (KeyHash StakePool -> Bool)
-> StrictSeq (TxCert ConwayEra)
-> Coin
forall era (f :: * -> *).
(EraTxCert era, Foldable f) =>
PParams era
-> (KeyHash StakePool -> Bool) -> f (TxCert era) -> Coin
forall (f :: * -> *).
Foldable f =>
PParams ConwayEra
-> (KeyHash StakePool -> Bool) -> f (TxCert ConwayEra) -> Coin
getTotalDepositsTxCerts PParams ConwayEra
pp KeyHash StakePool -> Bool
isPoolRegisted (TxBody l ConwayEra
txBody TxBody l ConwayEra
-> Getting
     (StrictSeq (ConwayTxCert ConwayEra))
     (TxBody l ConwayEra)
     (StrictSeq (ConwayTxCert ConwayEra))
-> StrictSeq (ConwayTxCert ConwayEra)
forall s a. s -> Getting a s a -> a
^. (StrictSeq (TxCert ConwayEra)
 -> Const
      (StrictSeq (ConwayTxCert ConwayEra))
      (StrictSeq (TxCert ConwayEra)))
-> TxBody l ConwayEra
-> Const (StrictSeq (ConwayTxCert ConwayEra)) (TxBody l ConwayEra)
Getting
  (StrictSeq (ConwayTxCert ConwayEra))
  (TxBody l ConwayEra)
  (StrictSeq (ConwayTxCert ConwayEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictSeq (TxCert ConwayEra))
certsTxBodyL)
    Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> PParams ConwayEra -> TxBody l ConwayEra -> Coin
forall era (l :: TxLevel).
ConwayEraTxBody era =>
PParams era -> TxBody l era -> Coin
conwayProposalsDeposits PParams ConwayEra
pp TxBody l ConwayEra
txBody

-- | Total number of deposits in the proposals in TxBody
conwayProposalsDeposits ::
  ConwayEraTxBody era =>
  PParams era ->
  TxBody l era ->
  Coin
conwayProposalsDeposits :: forall era (l :: TxLevel).
ConwayEraTxBody era =>
PParams era -> TxBody l era -> Coin
conwayProposalsDeposits PParams era
pp TxBody l era
txBody = Int
numProposals Int -> Coin -> Coin
forall i. Integral i => i -> Coin -> Coin
forall t i. (Val t, Integral i) => i -> t -> t
<×> Coin
depositPerProposal
  where
    numProposals :: Int
numProposals = OSet (ProposalProcedure era) -> Int
forall a. OSet a -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length (TxBody l era
txBody TxBody l era
-> Getting
     (OSet (ProposalProcedure era))
     (TxBody l era)
     (OSet (ProposalProcedure era))
-> OSet (ProposalProcedure era)
forall s a. s -> Getting a s a -> a
^. Getting
  (OSet (ProposalProcedure era))
  (TxBody l era)
  (OSet (ProposalProcedure 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)
    depositPerProposal :: Coin
depositPerProposal = PParams era
pp PParams era -> Getting Coin (PParams era) Coin -> Coin
forall s a. s -> Getting a s a -> a
^. Getting Coin (PParams era) Coin
forall era. ConwayEraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppGovActionDepositL

instance AllegraEraTxBody ConwayEra where
  vldtTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l ConwayEra) ValidityInterval
vldtTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {ValidityInterval
ctbrVldt :: forall era. ConwayTxBodyRaw TopTx era -> ValidityInterval
ctbrVldt :: ValidityInterval
ctbrVldt} -> ValidityInterval
ctbrVldt) ((RawType (TxBody l ConwayEra)
  -> ValidityInterval -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      ValidityInterval
      ValidityInterval)
-> (RawType (TxBody l ConwayEra)
    -> ValidityInterval -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     ValidityInterval
     ValidityInterval
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb ValidityInterval
x -> RawType (TxBody l ConwayEra)
txb {ctbrVldt = x}
  {-# INLINE vldtTxBodyL #-}

instance MaryEraTxBody ConwayEra where
  mintTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l ConwayEra) MultiAsset
mintTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {MultiAsset
ctbrMint :: forall era. ConwayTxBodyRaw TopTx era -> MultiAsset
ctbrMint :: MultiAsset
ctbrMint} -> MultiAsset
ctbrMint) ((RawType (TxBody l ConwayEra)
  -> MultiAsset -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra) (TxBody l ConwayEra) MultiAsset MultiAsset)
-> (RawType (TxBody l ConwayEra)
    -> MultiAsset -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra) (TxBody l ConwayEra) MultiAsset MultiAsset
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb MultiAsset
x -> RawType (TxBody l ConwayEra)
txb {ctbrMint = x}
  {-# INLINE mintTxBodyL #-}

instance AlonzoEraTxBody ConwayEra where
  collateralInputsTxBodyL :: Lens' (TxBody TopTx ConwayEra) (Set TxIn)
collateralInputsTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {Set TxIn
ctbrCollateralInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrCollateralInputs :: Set TxIn
ctbrCollateralInputs} -> Set TxIn
ctbrCollateralInputs) ((RawType (TxBody TopTx ConwayEra)
  -> Set TxIn -> RawType (TxBody TopTx ConwayEra))
 -> Lens' (TxBody TopTx ConwayEra) (Set TxIn))
-> (RawType (TxBody TopTx ConwayEra)
    -> Set TxIn -> RawType (TxBody TopTx ConwayEra))
-> Lens' (TxBody TopTx ConwayEra) (Set TxIn)
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody TopTx ConwayEra)
txb Set TxIn
x -> RawType (TxBody TopTx ConwayEra)
txb {ctbrCollateralInputs = x}
  {-# INLINE collateralInputsTxBodyL #-}

  reqSignerHashesTxBodyL :: forall (l :: TxLevel).
AtMostEra "Conway" ConwayEra =>
Lens' (TxBody l ConwayEra) (Set (KeyHash Guard))
reqSignerHashesTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {Set (KeyHash Guard)
ctbrReqSignerHashes :: forall era. ConwayTxBodyRaw TopTx era -> Set (KeyHash Guard)
ctbrReqSignerHashes :: Set (KeyHash Guard)
ctbrReqSignerHashes} -> Set (KeyHash Guard)
ctbrReqSignerHashes) ((RawType (TxBody l ConwayEra)
  -> Set (KeyHash Guard) -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (Set (KeyHash Guard))
      (Set (KeyHash Guard)))
-> (RawType (TxBody l ConwayEra)
    -> Set (KeyHash Guard) -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (Set (KeyHash Guard))
     (Set (KeyHash Guard))
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb Set (KeyHash Guard)
x -> RawType (TxBody l ConwayEra)
txb {ctbrReqSignerHashes = x}
  {-# INLINE reqSignerHashesTxBodyL #-}

  scriptIntegrityHashTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash} -> StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash) ((RawType (TxBody l ConwayEra)
  -> StrictMaybe ScriptIntegrityHash -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictMaybe ScriptIntegrityHash)
      (StrictMaybe ScriptIntegrityHash))
-> (RawType (TxBody l ConwayEra)
    -> StrictMaybe ScriptIntegrityHash -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictMaybe ScriptIntegrityHash)
     (StrictMaybe ScriptIntegrityHash)
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb StrictMaybe ScriptIntegrityHash
x -> RawType (TxBody l ConwayEra)
txb {ctbrScriptIntegrityHash = x}
  {-# INLINE scriptIntegrityHashTxBodyL #-}

  networkIdTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictMaybe Network)
networkIdTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictMaybe Network
ctbrNetworkId :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Network
ctbrNetworkId :: StrictMaybe Network
ctbrNetworkId} -> StrictMaybe Network
ctbrNetworkId) ((RawType (TxBody l ConwayEra)
  -> StrictMaybe Network -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictMaybe Network)
      (StrictMaybe Network))
-> (RawType (TxBody l ConwayEra)
    -> StrictMaybe Network -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictMaybe Network)
     (StrictMaybe Network)
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb StrictMaybe Network
x -> RawType (TxBody l ConwayEra)
txb {ctbrNetworkId = x}
  {-# INLINE networkIdTxBodyL #-}

  redeemerPointer :: forall (l :: TxLevel).
TxBody l ConwayEra
-> PlutusPurpose AsItem ConwayEra
-> StrictMaybe (PlutusPurpose AsIx ConwayEra)
redeemerPointer = TxBody l ConwayEra
-> PlutusPurpose AsItem ConwayEra
-> StrictMaybe (PlutusPurpose AsIx ConwayEra)
TxBody l ConwayEra
-> ConwayPlutusPurpose AsItem ConwayEra
-> StrictMaybe (ConwayPlutusPurpose AsIx ConwayEra)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
TxBody l era
-> ConwayPlutusPurpose AsItem era
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
conwayRedeemerPointer

  redeemerPointerInverse :: forall (l :: TxLevel).
TxBody l ConwayEra
-> PlutusPurpose AsIx ConwayEra
-> StrictMaybe (PlutusPurpose AsIxItem ConwayEra)
redeemerPointerInverse = TxBody l ConwayEra
-> PlutusPurpose AsIx ConwayEra
-> StrictMaybe (PlutusPurpose AsIxItem ConwayEra)
TxBody l ConwayEra
-> ConwayPlutusPurpose AsIx ConwayEra
-> StrictMaybe (ConwayPlutusPurpose AsIxItem ConwayEra)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
TxBody l era
-> ConwayPlutusPurpose AsIx era
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
conwayRedeemerPointerInverse

instance BabbageEraTxBody ConwayEra where
  sizedOutputsTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictSeq (Sized (TxOut ConwayEra)))
sizedOutputsTxBodyL = forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictSeq (Sized (TxOut ConwayEra))
ctbrOutputs :: forall era.
ConwayTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
ctbrOutputs :: StrictSeq (Sized (TxOut ConwayEra))
ctbrOutputs} -> StrictSeq (Sized (TxOut ConwayEra))
ctbrOutputs) ((RawType (TxBody l ConwayEra)
  -> StrictSeq (Sized (TxOut ConwayEra))
  -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictSeq (Sized (TxOut ConwayEra)))
      (StrictSeq (Sized (TxOut ConwayEra))))
-> (RawType (TxBody l ConwayEra)
    -> StrictSeq (Sized (TxOut ConwayEra))
    -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictSeq (Sized (TxOut ConwayEra)))
     (StrictSeq (Sized (TxOut ConwayEra)))
forall a b. (a -> b) -> a -> b
$
    \RawType (TxBody l ConwayEra)
txb StrictSeq (Sized (TxOut ConwayEra))
x -> RawType (TxBody l ConwayEra)
txb {ctbrOutputs = x}
  {-# INLINE sizedOutputsTxBodyL #-}

  referenceInputsTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l ConwayEra) (Set TxIn)
referenceInputsTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {Set TxIn
ctbrReferenceInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrReferenceInputs :: Set TxIn
ctbrReferenceInputs} -> Set TxIn
ctbrReferenceInputs) ((RawType (TxBody l ConwayEra)
  -> Set TxIn -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra) (TxBody l ConwayEra) (Set TxIn) (Set TxIn))
-> (RawType (TxBody l ConwayEra)
    -> Set TxIn -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra) (TxBody l ConwayEra) (Set TxIn) (Set TxIn)
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb Set TxIn
x -> RawType (TxBody l ConwayEra)
txb {ctbrReferenceInputs = x}
  {-# INLINE referenceInputsTxBodyL #-}

  totalCollateralTxBodyL :: Lens' (TxBody TopTx ConwayEra) (StrictMaybe Coin)
totalCollateralTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictMaybe Coin
ctbrTotalCollateral :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrTotalCollateral :: StrictMaybe Coin
ctbrTotalCollateral} -> StrictMaybe Coin
ctbrTotalCollateral) ((RawType (TxBody TopTx ConwayEra)
  -> StrictMaybe Coin -> RawType (TxBody TopTx ConwayEra))
 -> Lens' (TxBody TopTx ConwayEra) (StrictMaybe Coin))
-> (RawType (TxBody TopTx ConwayEra)
    -> StrictMaybe Coin -> RawType (TxBody TopTx ConwayEra))
-> Lens' (TxBody TopTx ConwayEra) (StrictMaybe Coin)
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody TopTx ConwayEra)
txb StrictMaybe Coin
x -> RawType (TxBody TopTx ConwayEra)
txb {ctbrTotalCollateral = x}
  {-# INLINE totalCollateralTxBodyL #-}

  collateralReturnTxBodyL :: Lens' (TxBody TopTx ConwayEra) (StrictMaybe (TxOut ConwayEra))
collateralReturnTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra
      ((Sized (BabbageTxOut ConwayEra) -> BabbageTxOut ConwayEra)
-> StrictMaybe (Sized (BabbageTxOut ConwayEra))
-> StrictMaybe (BabbageTxOut ConwayEra)
forall a b. (a -> b) -> StrictMaybe a -> StrictMaybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Sized (BabbageTxOut ConwayEra) -> BabbageTxOut ConwayEra
forall a. Sized a -> a
sizedValue (StrictMaybe (Sized (BabbageTxOut ConwayEra))
 -> StrictMaybe (BabbageTxOut ConwayEra))
-> (ConwayTxBodyRaw TopTx ConwayEra
    -> StrictMaybe (Sized (BabbageTxOut ConwayEra)))
-> ConwayTxBodyRaw TopTx ConwayEra
-> StrictMaybe (BabbageTxOut ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\ConwayTxBodyRaw {StrictMaybe (Sized (TxOut ConwayEra))
ctbrCollateralReturn :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
ctbrCollateralReturn :: StrictMaybe (Sized (TxOut ConwayEra))
ctbrCollateralReturn} -> StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe (Sized (BabbageTxOut ConwayEra))
ctbrCollateralReturn))
      ((RawType (TxBody TopTx ConwayEra)
  -> StrictMaybe (TxOut ConwayEra)
  -> RawType (TxBody TopTx ConwayEra))
 -> Lens' (TxBody TopTx ConwayEra) (StrictMaybe (TxOut ConwayEra)))
-> (RawType (TxBody TopTx ConwayEra)
    -> StrictMaybe (TxOut ConwayEra)
    -> RawType (TxBody TopTx ConwayEra))
-> Lens' (TxBody TopTx ConwayEra) (StrictMaybe (TxOut ConwayEra))
forall a b. (a -> b) -> a -> b
$ \RawType (TxBody TopTx ConwayEra)
txb StrictMaybe (TxOut ConwayEra)
x -> RawType (TxBody TopTx ConwayEra)
txb {ctbrCollateralReturn = mkSized (eraProtVerLow @ConwayEra) <$> x}
  {-# INLINE collateralReturnTxBodyL #-}

  sizedCollateralReturnTxBodyL :: Lens'
  (TxBody TopTx ConwayEra) (StrictMaybe (Sized (TxOut ConwayEra)))
sizedCollateralReturnTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictMaybe (Sized (TxOut ConwayEra))
ctbrCollateralReturn :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
ctbrCollateralReturn :: StrictMaybe (Sized (TxOut ConwayEra))
ctbrCollateralReturn} -> StrictMaybe (Sized (TxOut ConwayEra))
ctbrCollateralReturn) ((RawType (TxBody TopTx ConwayEra)
  -> StrictMaybe (Sized (TxOut ConwayEra))
  -> RawType (TxBody TopTx ConwayEra))
 -> Lens'
      (TxBody TopTx ConwayEra) (StrictMaybe (Sized (TxOut ConwayEra))))
-> (RawType (TxBody TopTx ConwayEra)
    -> StrictMaybe (Sized (TxOut ConwayEra))
    -> RawType (TxBody TopTx ConwayEra))
-> Lens'
     (TxBody TopTx ConwayEra) (StrictMaybe (Sized (TxOut ConwayEra)))
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody TopTx ConwayEra)
txb StrictMaybe (Sized (TxOut ConwayEra))
x -> RawType (TxBody TopTx ConwayEra)
txb {ctbrCollateralReturn = x}
  {-# INLINE sizedCollateralReturnTxBodyL #-}

  allSizedOutputsTxBodyF :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l ConwayEra) (StrictSeq (Sized (TxOut ConwayEra)))
allSizedOutputsTxBodyF = (TxBody l ConwayEra -> StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> SimpleGetter
     (TxBody l ConwayEra) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
forall s a. (s -> a) -> SimpleGetter s a
to (TxBody l ConwayEra
-> (TxBody TopTx ConwayEra
    -> StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> StrictSeq (Sized (BabbageTxOut ConwayEra))
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxTopLevel l era) =>
t l era -> (t TopTx era -> a) -> a
`withTopTxLevelOnly` (TxBody TopTx ConwayEra
-> Getting
     (StrictSeq (Sized (BabbageTxOut ConwayEra)))
     (TxBody TopTx ConwayEra)
     (StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> StrictSeq (Sized (BabbageTxOut ConwayEra))
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictSeq (Sized (BabbageTxOut ConwayEra)))
  (TxBody TopTx ConwayEra)
  (StrictSeq (Sized (TxOut ConwayEra)))
Getting
  (StrictSeq (Sized (BabbageTxOut ConwayEra)))
  (TxBody TopTx ConwayEra)
  (StrictSeq (Sized (BabbageTxOut ConwayEra)))
forall era.
BabbageEraTxBody era =>
SimpleGetter (TxBody TopTx era) (StrictSeq (Sized (TxOut era)))
SimpleGetter
  (TxBody TopTx ConwayEra) (StrictSeq (Sized (TxOut ConwayEra)))
allSizedOutputsBabbageTxBodyF))
  {-# INLINE allSizedOutputsTxBodyF #-}

instance ConwayEraTxBody ConwayEra where
  votingProceduresTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (VotingProcedures ConwayEra)
votingProceduresTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {VotingProcedures ConwayEra
ctbrVotingProcedures :: forall era. ConwayTxBodyRaw TopTx era -> VotingProcedures era
ctbrVotingProcedures :: VotingProcedures ConwayEra
ctbrVotingProcedures} -> VotingProcedures ConwayEra
ctbrVotingProcedures) ((RawType (TxBody l ConwayEra)
  -> VotingProcedures ConwayEra -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (VotingProcedures ConwayEra)
      (VotingProcedures ConwayEra))
-> (RawType (TxBody l ConwayEra)
    -> VotingProcedures ConwayEra -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (VotingProcedures ConwayEra)
     (VotingProcedures ConwayEra)
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb VotingProcedures ConwayEra
x -> RawType (TxBody l ConwayEra)
txb {ctbrVotingProcedures = x}
  {-# INLINE votingProceduresTxBodyL #-}
  proposalProceduresTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (OSet (ProposalProcedure ConwayEra))
proposalProceduresTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {OSet (ProposalProcedure ConwayEra)
ctbrProposalProcedures :: forall era.
ConwayTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
ctbrProposalProcedures :: OSet (ProposalProcedure ConwayEra)
ctbrProposalProcedures} -> OSet (ProposalProcedure ConwayEra)
ctbrProposalProcedures) ((RawType (TxBody l ConwayEra)
  -> OSet (ProposalProcedure ConwayEra)
  -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (OSet (ProposalProcedure ConwayEra))
      (OSet (ProposalProcedure ConwayEra)))
-> (RawType (TxBody l ConwayEra)
    -> OSet (ProposalProcedure ConwayEra)
    -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (OSet (ProposalProcedure ConwayEra))
     (OSet (ProposalProcedure ConwayEra))
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb OSet (ProposalProcedure ConwayEra)
x -> RawType (TxBody l ConwayEra)
txb {ctbrProposalProcedures = x}
  {-# INLINE proposalProceduresTxBodyL #-}
  currentTreasuryValueTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l ConwayEra) (StrictMaybe Coin)
currentTreasuryValueTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {StrictMaybe Coin
ctbrCurrentTreasuryValue :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrCurrentTreasuryValue :: StrictMaybe Coin
ctbrCurrentTreasuryValue} -> StrictMaybe Coin
ctbrCurrentTreasuryValue) ((RawType (TxBody l ConwayEra)
  -> StrictMaybe Coin -> RawType (TxBody l ConwayEra))
 -> Lens
      (TxBody l ConwayEra)
      (TxBody l ConwayEra)
      (StrictMaybe Coin)
      (StrictMaybe Coin))
-> (RawType (TxBody l ConwayEra)
    -> StrictMaybe Coin -> RawType (TxBody l ConwayEra))
-> Lens
     (TxBody l ConwayEra)
     (TxBody l ConwayEra)
     (StrictMaybe Coin)
     (StrictMaybe Coin)
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb StrictMaybe Coin
x -> RawType (TxBody l ConwayEra)
txb {ctbrCurrentTreasuryValue = x}
  {-# INLINE currentTreasuryValueTxBodyL #-}
  treasuryDonationTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l ConwayEra) Coin
treasuryDonationTxBodyL =
    forall era t a b.
(Era era, EncCBOR (RawType t), Memoized t) =>
(RawType t -> a) -> (RawType t -> b -> RawType t) -> Lens t t a b
lensMemoRawType @ConwayEra (\ConwayTxBodyRaw {Coin
ctbrTreasuryDonation :: forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrTreasuryDonation :: Coin
ctbrTreasuryDonation} -> Coin
ctbrTreasuryDonation) ((RawType (TxBody l ConwayEra)
  -> Coin -> RawType (TxBody l ConwayEra))
 -> Lens (TxBody l ConwayEra) (TxBody l ConwayEra) Coin Coin)
-> (RawType (TxBody l ConwayEra)
    -> Coin -> RawType (TxBody l ConwayEra))
-> Lens (TxBody l ConwayEra) (TxBody l ConwayEra) Coin Coin
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody l ConwayEra)
txb Coin
x -> RawType (TxBody l ConwayEra)
txb {ctbrTreasuryDonation = x}
  {-# INLINE treasuryDonationTxBodyL #-}

instance EqRaw (TxBody l ConwayEra)

pattern ConwayTxBody ::
  Set TxIn ->
  Set TxIn ->
  Set TxIn ->
  StrictSeq (Sized (TxOut ConwayEra)) ->
  StrictMaybe (Sized (TxOut ConwayEra)) ->
  StrictMaybe Coin ->
  OSet.OSet (TxCert ConwayEra) ->
  Withdrawals ->
  Coin ->
  ValidityInterval ->
  Set (KeyHash Guard) ->
  MultiAsset ->
  StrictMaybe ScriptIntegrityHash ->
  StrictMaybe TxAuxDataHash ->
  StrictMaybe Network ->
  VotingProcedures ConwayEra ->
  OSet.OSet (ProposalProcedure ConwayEra) ->
  StrictMaybe Coin ->
  Coin ->
  TxBody TopTx ConwayEra
pattern $mConwayTxBody :: forall {r}.
TxBody TopTx ConwayEra
-> (Set TxIn
    -> Set TxIn
    -> Set TxIn
    -> StrictSeq (Sized (TxOut ConwayEra))
    -> StrictMaybe (Sized (TxOut ConwayEra))
    -> StrictMaybe Coin
    -> OSet (TxCert ConwayEra)
    -> Withdrawals
    -> Coin
    -> ValidityInterval
    -> Set (KeyHash Guard)
    -> MultiAsset
    -> StrictMaybe ScriptIntegrityHash
    -> StrictMaybe TxAuxDataHash
    -> StrictMaybe Network
    -> VotingProcedures ConwayEra
    -> OSet (ProposalProcedure ConwayEra)
    -> StrictMaybe Coin
    -> Coin
    -> r)
-> ((# #) -> r)
-> r
$bConwayTxBody :: Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut ConwayEra))
-> StrictMaybe (Sized (TxOut ConwayEra))
-> StrictMaybe Coin
-> OSet (TxCert ConwayEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> TxBody TopTx ConwayEra
ConwayTxBody
  { TxBody TopTx ConwayEra -> Set TxIn
ctbSpendInputs
  , TxBody TopTx ConwayEra -> Set TxIn
ctbCollateralInputs
  , TxBody TopTx ConwayEra -> Set TxIn
ctbReferenceInputs
  , TxBody TopTx ConwayEra -> StrictSeq (Sized (TxOut ConwayEra))
ctbOutputs
  , TxBody TopTx ConwayEra -> StrictMaybe (Sized (TxOut ConwayEra))
ctbCollateralReturn
  , TxBody TopTx ConwayEra -> StrictMaybe Coin
ctbTotalCollateral
  , TxBody TopTx ConwayEra -> OSet (TxCert ConwayEra)
ctbCerts
  , TxBody TopTx ConwayEra -> Withdrawals
ctbWithdrawals
  , TxBody TopTx ConwayEra -> Coin
ctbTxfee
  , TxBody TopTx ConwayEra -> ValidityInterval
ctbVldt
  , TxBody TopTx ConwayEra -> Set (KeyHash Guard)
ctbReqSignerHashes
  , TxBody TopTx ConwayEra -> MultiAsset
ctbMint
  , TxBody TopTx ConwayEra -> StrictMaybe ScriptIntegrityHash
ctbScriptIntegrityHash
  , TxBody TopTx ConwayEra -> StrictMaybe TxAuxDataHash
ctbAdHash
  , TxBody TopTx ConwayEra -> StrictMaybe Network
ctbTxNetworkId
  , TxBody TopTx ConwayEra -> VotingProcedures ConwayEra
ctbVotingProcedures
  , TxBody TopTx ConwayEra -> OSet (ProposalProcedure ConwayEra)
ctbProposalProcedures
  , TxBody TopTx ConwayEra -> StrictMaybe Coin
ctbCurrentTreasuryValue
  , TxBody TopTx ConwayEra -> Coin
ctbTreasuryDonation
  } <-
  ( getMemoRawType ->
      ConwayTxBodyRaw
        { ctbrSpendInputs = ctbSpendInputs
        , ctbrCollateralInputs = ctbCollateralInputs
        , ctbrReferenceInputs = ctbReferenceInputs
        , ctbrOutputs = ctbOutputs
        , ctbrCollateralReturn = ctbCollateralReturn
        , ctbrTotalCollateral = ctbTotalCollateral
        , ctbrCerts = ctbCerts
        , ctbrWithdrawals = ctbWithdrawals
        , ctbrFee = ctbTxfee
        , ctbrVldt = ctbVldt
        , ctbrReqSignerHashes = ctbReqSignerHashes
        , ctbrMint = ctbMint
        , ctbrScriptIntegrityHash = ctbScriptIntegrityHash
        , ctbrAuxDataHash = ctbAdHash
        , ctbrNetworkId = ctbTxNetworkId
        , ctbrVotingProcedures = ctbVotingProcedures
        , ctbrProposalProcedures = ctbProposalProcedures
        , ctbrCurrentTreasuryValue = ctbCurrentTreasuryValue
        , ctbrTreasuryDonation = ctbTreasuryDonation
        }
    )
  where
    ConwayTxBody
      Set TxIn
inputsX
      Set TxIn
collateralX
      Set TxIn
referenceInputsX
      StrictSeq (Sized (TxOut ConwayEra))
outputsX
      StrictMaybe (Sized (TxOut ConwayEra))
collateralReturnX
      StrictMaybe Coin
totalCollateralX
      OSet (TxCert ConwayEra)
certsX
      Withdrawals
withdrawalsX
      Coin
txfeeX
      ValidityInterval
vldtX
      Set (KeyHash Guard)
reqSignerHashesX
      MultiAsset
mintX
      StrictMaybe ScriptIntegrityHash
scriptIntegrityHashX
      StrictMaybe TxAuxDataHash
adHashX
      StrictMaybe Network
txnetworkidX
      VotingProcedures ConwayEra
votingProcedures
      OSet (ProposalProcedure ConwayEra)
proposalProcedures
      StrictMaybe Coin
currentTreasuryValue
      Coin
treasuryDonation =
        forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @ConwayEra (RawType (TxBody TopTx ConwayEra) -> TxBody TopTx ConwayEra)
-> RawType (TxBody TopTx ConwayEra) -> TxBody TopTx ConwayEra
forall a b. (a -> b) -> a -> b
$
          Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut ConwayEra))
-> StrictMaybe (Sized (TxOut ConwayEra))
-> StrictMaybe Coin
-> OSet (TxCert ConwayEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> ConwayTxBodyRaw TopTx ConwayEra
forall era.
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> ConwayTxBodyRaw TopTx era
ConwayTxBodyRaw
            Set TxIn
inputsX
            Set TxIn
collateralX
            Set TxIn
referenceInputsX
            StrictSeq (Sized (TxOut ConwayEra))
outputsX
            StrictMaybe (Sized (TxOut ConwayEra))
collateralReturnX
            StrictMaybe Coin
totalCollateralX
            OSet (TxCert ConwayEra)
certsX
            Withdrawals
withdrawalsX
            Coin
txfeeX
            ValidityInterval
vldtX
            Set (KeyHash Guard)
reqSignerHashesX
            MultiAsset
mintX
            StrictMaybe ScriptIntegrityHash
scriptIntegrityHashX
            StrictMaybe TxAuxDataHash
adHashX
            StrictMaybe Network
txnetworkidX
            VotingProcedures ConwayEra
votingProcedures
            OSet (ProposalProcedure ConwayEra)
proposalProcedures
            StrictMaybe Coin
currentTreasuryValue
            Coin
treasuryDonation

{-# COMPLETE ConwayTxBody #-}

--------------------------------------------------------------------------------
-- Serialisation
--------------------------------------------------------------------------------

encodeTxBodyRaw ::
  ConwayTxBodyRaw l ConwayEra ->
  Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra)
encodeTxBodyRaw :: forall (l :: TxLevel).
ConwayTxBodyRaw l ConwayEra
-> Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra)
encodeTxBodyRaw ConwayTxBodyRaw {OSet (TxCert ConwayEra)
OSet (ProposalProcedure ConwayEra)
Set (KeyHash Guard)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe Network
StrictMaybe Coin
ValidityInterval
Withdrawals
Coin
MultiAsset
StrictSeq (Sized (TxOut ConwayEra))
VotingProcedures ConwayEra
ctbrSpendInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrCollateralInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrReferenceInputs :: forall era. ConwayTxBodyRaw TopTx era -> Set TxIn
ctbrOutputs :: forall era.
ConwayTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
ctbrCollateralReturn :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
ctbrTotalCollateral :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrCerts :: forall era. ConwayTxBodyRaw TopTx era -> OSet (TxCert era)
ctbrWithdrawals :: forall era. ConwayTxBodyRaw TopTx era -> Withdrawals
ctbrFee :: forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrVldt :: forall era. ConwayTxBodyRaw TopTx era -> ValidityInterval
ctbrReqSignerHashes :: forall era. ConwayTxBodyRaw TopTx era -> Set (KeyHash Guard)
ctbrMint :: forall era. ConwayTxBodyRaw TopTx era -> MultiAsset
ctbrScriptIntegrityHash :: forall era.
ConwayTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
ctbrAuxDataHash :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
ctbrNetworkId :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Network
ctbrVotingProcedures :: forall era. ConwayTxBodyRaw TopTx era -> VotingProcedures era
ctbrProposalProcedures :: forall era.
ConwayTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
ctbrCurrentTreasuryValue :: forall era. ConwayTxBodyRaw TopTx era -> StrictMaybe Coin
ctbrTreasuryDonation :: forall era. ConwayTxBodyRaw TopTx era -> Coin
ctbrSpendInputs :: Set TxIn
ctbrCollateralInputs :: Set TxIn
ctbrReferenceInputs :: Set TxIn
ctbrOutputs :: StrictSeq (Sized (TxOut ConwayEra))
ctbrCollateralReturn :: StrictMaybe (Sized (TxOut ConwayEra))
ctbrTotalCollateral :: StrictMaybe Coin
ctbrCerts :: OSet (TxCert ConwayEra)
ctbrWithdrawals :: Withdrawals
ctbrFee :: Coin
ctbrVldt :: ValidityInterval
ctbrReqSignerHashes :: Set (KeyHash Guard)
ctbrMint :: MultiAsset
ctbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
ctbrAuxDataHash :: StrictMaybe TxAuxDataHash
ctbrNetworkId :: StrictMaybe Network
ctbrVotingProcedures :: VotingProcedures ConwayEra
ctbrProposalProcedures :: OSet (ProposalProcedure ConwayEra)
ctbrCurrentTreasuryValue :: StrictMaybe Coin
ctbrTreasuryDonation :: Coin
..} =
  let ValidityInterval StrictMaybe SlotNo
bot StrictMaybe SlotNo
top = ValidityInterval
ctbrVldt
   in (Set TxIn
 -> Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (BabbageTxOut ConwayEra))
 -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
 -> StrictMaybe Coin
 -> Coin
 -> StrictMaybe SlotNo
 -> OSet (ConwayTxCert ConwayEra)
 -> Withdrawals
 -> StrictMaybe SlotNo
 -> Set (KeyHash Guard)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures ConwayEra
 -> OSet (ProposalProcedure ConwayEra)
 -> StrictMaybe Coin
 -> Coin
 -> ConwayTxBodyRaw l ConwayEra)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall t. t -> Encode (Closed Sparse) t
Keyed
        ( \Set TxIn
i Set TxIn
ci Set TxIn
ri StrictSeq (Sized (BabbageTxOut ConwayEra))
o StrictMaybe (Sized (BabbageTxOut ConwayEra))
cr StrictMaybe Coin
tc Coin
f StrictMaybe SlotNo
t OSet (ConwayTxCert ConwayEra)
c Withdrawals
w StrictMaybe SlotNo
b ->
            Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut ConwayEra))
-> StrictMaybe (Sized (TxOut ConwayEra))
-> StrictMaybe Coin
-> OSet (TxCert ConwayEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> ConwayTxBodyRaw TopTx ConwayEra
forall era.
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> ConwayTxBodyRaw TopTx era
ConwayTxBodyRaw Set TxIn
i Set TxIn
ci Set TxIn
ri StrictSeq (Sized (TxOut ConwayEra))
StrictSeq (Sized (BabbageTxOut ConwayEra))
o StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe (Sized (BabbageTxOut ConwayEra))
cr StrictMaybe Coin
tc OSet (TxCert ConwayEra)
OSet (ConwayTxCert ConwayEra)
c Withdrawals
w Coin
f (StrictMaybe SlotNo -> StrictMaybe SlotNo -> ValidityInterval
ValidityInterval StrictMaybe SlotNo
b StrictMaybe SlotNo
t)
        )
        Encode
  (Closed Sparse)
  (Set TxIn
   -> Set TxIn
   -> Set TxIn
   -> StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> Encode (Closed Dense) (Set TxIn)
-> Encode (Closed Sparse) (Set TxIn)
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
0 (Set TxIn -> Encode (Closed Dense) (Set TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set TxIn
ctbrSpendInputs)
        Encode
  (Closed Sparse)
  (Set TxIn
   -> Set TxIn
   -> StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (Set TxIn -> Bool)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode (Closed Sparse) (Set TxIn)
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit Set TxIn -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Word
-> Encode (Closed Dense) (Set TxIn)
-> Encode (Closed Sparse) (Set TxIn)
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
13 (Set TxIn -> Encode (Closed Dense) (Set TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set TxIn
ctbrCollateralInputs))
        Encode
  (Closed Sparse)
  (Set TxIn
   -> StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (Set TxIn -> Bool)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode (Closed Sparse) (Set TxIn)
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit Set TxIn -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Word
-> Encode (Closed Dense) (Set TxIn)
-> Encode (Closed Sparse) (Set TxIn)
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
18 (Set TxIn -> Encode (Closed Dense) (Set TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set TxIn
ctbrReferenceInputs))
        Encode
  (Closed Sparse)
  (StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode
     (Closed Sparse) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> Encode
     (Closed Sparse)
     (StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> Encode
     (Closed Dense) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> Encode
     (Closed Sparse) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
1 (StrictSeq (Sized (BabbageTxOut ConwayEra))
-> Encode
     (Closed Dense) (StrictSeq (Sized (BabbageTxOut ConwayEra)))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictSeq (Sized (TxOut ConwayEra))
StrictSeq (Sized (BabbageTxOut ConwayEra))
ctbrOutputs)
        Encode
  (Closed Sparse)
  (StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode
     (Closed Sparse) (StrictMaybe (Sized (BabbageTxOut ConwayEra)))
-> Encode
     (Closed Sparse)
     (StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe (Sized (BabbageTxOut ConwayEra))
-> Encode
     (Closed Sparse) (StrictMaybe (Sized (BabbageTxOut ConwayEra)))
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
16 StrictMaybe (Sized (TxOut ConwayEra))
StrictMaybe (Sized (BabbageTxOut ConwayEra))
ctbrCollateralReturn
        Encode
  (Closed Sparse)
  (StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe Coin)
-> Encode
     (Closed Sparse)
     (Coin
      -> StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe Coin -> Encode (Closed Sparse) (StrictMaybe Coin)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
17 StrictMaybe Coin
ctbrTotalCollateral
        Encode
  (Closed Sparse)
  (Coin
   -> StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) Coin
-> Encode
     (Closed Sparse)
     (StrictMaybe SlotNo
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word -> Encode (Closed Dense) Coin -> Encode (Closed Sparse) Coin
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
2 (Coin -> Encode (Closed Dense) Coin
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Coin
ctbrFee)
        Encode
  (Closed Sparse)
  (StrictMaybe SlotNo
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
-> Encode
     (Closed Sparse)
     (OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe SlotNo
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
3 StrictMaybe SlotNo
top
        Encode
  (Closed Sparse)
  (OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (OSet (ConwayTxCert ConwayEra))
-> Encode
     (Closed Sparse)
     (Withdrawals
      -> StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (ConwayTxCert ConwayEra) -> Bool)
-> Encode (Closed Sparse) (OSet (ConwayTxCert ConwayEra))
-> Encode (Closed Sparse) (OSet (ConwayTxCert ConwayEra))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (ConwayTxCert ConwayEra) -> Bool
forall a. OSet a -> Bool
OSet.null (Word
-> Encode (Closed Dense) (OSet (ConwayTxCert ConwayEra))
-> Encode (Closed Sparse) (OSet (ConwayTxCert ConwayEra))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
4 (OSet (ConwayTxCert ConwayEra)
-> Encode (Closed Dense) (OSet (ConwayTxCert ConwayEra))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (TxCert ConwayEra)
OSet (ConwayTxCert ConwayEra)
ctbrCerts))
        Encode
  (Closed Sparse)
  (Withdrawals
   -> StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) Withdrawals
-> Encode
     (Closed Sparse)
     (StrictMaybe SlotNo
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (Withdrawals -> Bool)
-> Encode (Closed Sparse) Withdrawals
-> Encode (Closed Sparse) Withdrawals
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit (Map RewardAccount Coin -> Bool
forall a. Map RewardAccount a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map RewardAccount Coin -> Bool)
-> (Withdrawals -> Map RewardAccount Coin) -> Withdrawals -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Withdrawals -> Map RewardAccount Coin
unWithdrawals) (Word
-> Encode (Closed Dense) Withdrawals
-> Encode (Closed Sparse) Withdrawals
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
5 (Withdrawals -> Encode (Closed Dense) Withdrawals
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Withdrawals
ctbrWithdrawals))
        Encode
  (Closed Sparse)
  (StrictMaybe SlotNo
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
-> Encode
     (Closed Sparse)
     (Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe SlotNo
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
8 StrictMaybe SlotNo
bot
        Encode
  (Closed Sparse)
  (Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (Set (KeyHash Guard))
-> Encode
     (Closed Sparse)
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (Set (KeyHash Guard) -> Bool)
-> Encode (Closed Sparse) (Set (KeyHash Guard))
-> Encode (Closed Sparse) (Set (KeyHash Guard))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit Set (KeyHash Guard) -> Bool
forall a. Set a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Word
-> Encode (Closed Dense) (Set (KeyHash Guard))
-> Encode (Closed Sparse) (Set (KeyHash Guard))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
14 (Set (KeyHash Guard) -> Encode (Closed Dense) (Set (KeyHash Guard))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set (KeyHash Guard)
ctbrReqSignerHashes))
        Encode
  (Closed Sparse)
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) MultiAsset
-> Encode
     (Closed Sparse)
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (MultiAsset -> Bool)
-> Encode (Closed Sparse) MultiAsset
-> Encode (Closed Sparse) MultiAsset
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit (MultiAsset -> MultiAsset -> Bool
forall a. Eq a => a -> a -> Bool
== MultiAsset
forall a. Monoid a => a
mempty) (Word
-> Encode (Closed Dense) MultiAsset
-> Encode (Closed Sparse) MultiAsset
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
9 (MultiAsset -> Encode (Closed Dense) MultiAsset
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To MultiAsset
ctbrMint))
        Encode
  (Closed Sparse)
  (StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe ScriptIntegrityHash)
-> Encode
     (Closed Sparse)
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe ScriptIntegrityHash
-> Encode (Closed Sparse) (StrictMaybe ScriptIntegrityHash)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
11 StrictMaybe ScriptIntegrityHash
ctbrScriptIntegrityHash
        Encode
  (Closed Sparse)
  (StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe TxAuxDataHash)
-> Encode
     (Closed Sparse)
     (StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe TxAuxDataHash
-> Encode (Closed Sparse) (StrictMaybe TxAuxDataHash)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
7 StrictMaybe TxAuxDataHash
ctbrAuxDataHash
        Encode
  (Closed Sparse)
  (StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe Network)
-> Encode
     (Closed Sparse)
     (VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe Network
-> Encode (Closed Sparse) (StrictMaybe Network)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
15 StrictMaybe Network
ctbrNetworkId
        Encode
  (Closed Sparse)
  (VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (VotingProcedures ConwayEra)
-> Encode
     (Closed Sparse)
     (OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin -> Coin -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (VotingProcedures ConwayEra -> Bool)
-> Encode (Closed Sparse) (VotingProcedures ConwayEra)
-> Encode (Closed Sparse) (VotingProcedures ConwayEra)
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit (Map Voter (Map GovActionId (VotingProcedure ConwayEra)) -> Bool
forall a. Map Voter a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map Voter (Map GovActionId (VotingProcedure ConwayEra)) -> Bool)
-> (VotingProcedures ConwayEra
    -> Map Voter (Map GovActionId (VotingProcedure ConwayEra)))
-> VotingProcedures ConwayEra
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VotingProcedures ConwayEra
-> Map Voter (Map GovActionId (VotingProcedure ConwayEra))
forall era.
VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
unVotingProcedures) (Word
-> Encode (Closed Dense) (VotingProcedures ConwayEra)
-> Encode (Closed Sparse) (VotingProcedures ConwayEra)
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
19 (VotingProcedures ConwayEra
-> Encode (Closed Dense) (VotingProcedures ConwayEra)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To VotingProcedures ConwayEra
ctbrVotingProcedures))
        Encode
  (Closed Sparse)
  (OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin -> Coin -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (OSet (ProposalProcedure ConwayEra))
-> Encode
     (Closed Sparse)
     (StrictMaybe Coin -> Coin -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (ProposalProcedure ConwayEra) -> Bool)
-> Encode (Closed Sparse) (OSet (ProposalProcedure ConwayEra))
-> Encode (Closed Sparse) (OSet (ProposalProcedure ConwayEra))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (ProposalProcedure ConwayEra) -> Bool
forall a. OSet a -> Bool
OSet.null (Word
-> Encode (Closed Dense) (OSet (ProposalProcedure ConwayEra))
-> Encode (Closed Sparse) (OSet (ProposalProcedure ConwayEra))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
20 (OSet (ProposalProcedure ConwayEra)
-> Encode (Closed Dense) (OSet (ProposalProcedure ConwayEra))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (ProposalProcedure ConwayEra)
ctbrProposalProcedures))
        Encode
  (Closed Sparse)
  (StrictMaybe Coin -> Coin -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) (StrictMaybe Coin)
-> Encode (Closed Sparse) (Coin -> ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe Coin -> Encode (Closed Sparse) (StrictMaybe Coin)
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
21 StrictMaybe Coin
ctbrCurrentTreasuryValue
        Encode (Closed Sparse) (Coin -> ConwayTxBodyRaw l ConwayEra)
-> Encode (Closed Sparse) Coin
-> Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (Coin -> Bool)
-> Encode (Closed Sparse) Coin -> Encode (Closed Sparse) Coin
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit (Coin -> Coin -> Bool
forall a. Eq a => a -> a -> Bool
== Coin
forall a. Monoid a => a
mempty) (Word -> Encode (Closed Dense) Coin -> Encode (Closed Sparse) Coin
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
22 (Encode (Closed Dense) Coin -> Encode (Closed Sparse) Coin)
-> Encode (Closed Dense) Coin -> Encode (Closed Sparse) Coin
forall a b. (a -> b) -> a -> b
$ Coin -> Encode (Closed Dense) Coin
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Coin
ctbrTreasuryDonation)

instance EncCBOR (ConwayTxBodyRaw l ConwayEra) where
  encCBOR :: ConwayTxBodyRaw l ConwayEra -> Encoding
encCBOR = Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra) -> Encoding)
-> (ConwayTxBodyRaw l ConwayEra
    -> Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra))
-> ConwayTxBodyRaw l ConwayEra
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayTxBodyRaw l ConwayEra
-> Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra)
forall (l :: TxLevel).
ConwayTxBodyRaw l ConwayEra
-> Encode (Closed Sparse) (ConwayTxBodyRaw l ConwayEra)
encodeTxBodyRaw

-- | Encodes memoized bytes created upon construction.
deriving newtype instance EncCBOR (TxBody l ConwayEra)

class
  (BabbageEraTxBody era, ConwayEraTxCert era, ConwayEraPParams era, ConwayEraScript era) =>
  ConwayEraTxBody era
  where
  -- | Lens for getting and setting number of `Coin` that is expected to be in the
  -- Treasury at the current Epoch
  currentTreasuryValueTxBodyL :: Lens' (TxBody l era) (StrictMaybe Coin)

  -- | Lens for getting and setting `VotingProcedures`.
  votingProceduresTxBodyL :: Lens' (TxBody l era) (VotingProcedures era)

  -- | Lens for getting and setting `ProposalProcedures`.
  proposalProceduresTxBodyL :: Lens' (TxBody l era) (OSet.OSet (ProposalProcedure era))

  treasuryDonationTxBodyL :: Lens' (TxBody l era) Coin

conwayRedeemerPointer ::
  forall era l.
  ConwayEraTxBody era =>
  TxBody l era ->
  ConwayPlutusPurpose AsItem era ->
  StrictMaybe (ConwayPlutusPurpose AsIx era)
conwayRedeemerPointer :: forall era (l :: TxLevel).
ConwayEraTxBody era =>
TxBody l era
-> ConwayPlutusPurpose AsItem era
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
conwayRedeemerPointer TxBody l era
txBody = \case
  ConwayMinting AsItem Word32 PolicyID
policyID ->
    AsIx Word32 PolicyID -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (AsIx Word32 PolicyID -> ConwayPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 PolicyID)
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 PolicyID
-> Set PolicyID -> StrictMaybe (AsIx Word32 PolicyID)
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 PolicyID
policyID (TxBody l era
txBody TxBody l era
-> Getting (Set PolicyID) (TxBody l era) (Set PolicyID)
-> Set PolicyID
forall s a. s -> Getting a s a -> a
^. Getting (Set PolicyID) (TxBody l era) (Set PolicyID)
forall era (l :: TxLevel).
MaryEraTxBody era =>
SimpleGetter (TxBody l era) (Set PolicyID)
forall (l :: TxLevel). SimpleGetter (TxBody l era) (Set PolicyID)
mintedTxBodyF)
  ConwaySpending AsItem Word32 TxIn
txIn ->
    AsIx Word32 TxIn -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (AsIx Word32 TxIn -> ConwayPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 TxIn)
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 TxIn -> Set TxIn -> StrictMaybe (AsIx Word32 TxIn)
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 TxIn
txIn (TxBody l era
txBody TxBody l era
-> Getting (Set TxIn) (TxBody l era) (Set TxIn) -> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody l era) (Set TxIn)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l era) (Set TxIn)
inputsTxBodyL)
  ConwayRewarding AsItem Word32 RewardAccount
rewardAccount ->
    AsIx Word32 RewardAccount -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (AsIx Word32 RewardAccount -> ConwayPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 RewardAccount)
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 RewardAccount
-> Map RewardAccount Coin
-> StrictMaybe (AsIx Word32 RewardAccount)
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 RewardAccount
rewardAccount (Withdrawals -> Map RewardAccount Coin
unWithdrawals (TxBody l era
txBody TxBody l era
-> Getting Withdrawals (TxBody l era) Withdrawals -> Withdrawals
forall s a. s -> Getting a s a -> a
^. Getting Withdrawals (TxBody l era) Withdrawals
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel). Lens' (TxBody l era) Withdrawals
withdrawalsTxBodyL))
  ConwayCertifying AsItem Word32 (TxCert era)
txCert ->
    AsIx Word32 (TxCert era) -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (AsIx Word32 (TxCert era) -> ConwayPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 (TxCert era))
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 (TxCert era)
-> StrictSeq (TxCert era) -> StrictMaybe (AsIx Word32 (TxCert era))
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 (TxCert era)
txCert (TxBody l era
txBody TxBody l era
-> Getting
     (StrictSeq (TxCert era)) (TxBody l era) (StrictSeq (TxCert era))
-> StrictSeq (TxCert era)
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictSeq (TxCert era)) (TxBody l era) (StrictSeq (TxCert era))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l era) (StrictSeq (TxCert era))
certsTxBodyL)
  ConwayVoting AsItem Word32 Voter
votingProcedure ->
    AsIx Word32 Voter -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (AsIx Word32 Voter -> ConwayPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 Voter)
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 Voter
-> VotingProcedures era -> StrictMaybe (AsIx Word32 Voter)
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 Voter
votingProcedure (TxBody l era
txBody TxBody l era
-> Getting
     (VotingProcedures era) (TxBody l era) (VotingProcedures era)
-> VotingProcedures era
forall s a. s -> Getting a s a -> a
^. Getting
  (VotingProcedures era) (TxBody l era) (VotingProcedures era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (VotingProcedures era)
forall (l :: TxLevel). Lens' (TxBody l era) (VotingProcedures era)
votingProceduresTxBodyL)
  ConwayProposing AsItem Word32 (ProposalProcedure era)
proposalProcedure ->
    AsIx Word32 (ProposalProcedure era) -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (AsIx Word32 (ProposalProcedure era)
 -> ConwayPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 (ProposalProcedure era))
-> StrictMaybe (ConwayPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 (ProposalProcedure era)
-> OSet (ProposalProcedure era)
-> StrictMaybe (AsIx Word32 (ProposalProcedure era))
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 (ProposalProcedure era)
proposalProcedure (TxBody l era
txBody TxBody l era
-> Getting
     (OSet (ProposalProcedure era))
     (TxBody l era)
     (OSet (ProposalProcedure era))
-> OSet (ProposalProcedure era)
forall s a. s -> Getting a s a -> a
^. Getting
  (OSet (ProposalProcedure era))
  (TxBody l era)
  (OSet (ProposalProcedure 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)

conwayRedeemerPointerInverse ::
  ConwayEraTxBody era =>
  TxBody l era ->
  ConwayPlutusPurpose AsIx era ->
  StrictMaybe (ConwayPlutusPurpose AsIxItem era)
conwayRedeemerPointerInverse :: forall era (l :: TxLevel).
ConwayEraTxBody era =>
TxBody l era
-> ConwayPlutusPurpose AsIx era
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
conwayRedeemerPointerInverse TxBody l era
txBody = \case
  ConwayMinting AsIx Word32 PolicyID
idx ->
    AsIxItem Word32 PolicyID -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (AsIxItem Word32 PolicyID -> ConwayPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 PolicyID)
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 PolicyID
-> Set PolicyID -> StrictMaybe (AsIxItem Word32 PolicyID)
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 PolicyID
idx (TxBody l era
txBody TxBody l era
-> Getting (Set PolicyID) (TxBody l era) (Set PolicyID)
-> Set PolicyID
forall s a. s -> Getting a s a -> a
^. Getting (Set PolicyID) (TxBody l era) (Set PolicyID)
forall era (l :: TxLevel).
MaryEraTxBody era =>
SimpleGetter (TxBody l era) (Set PolicyID)
forall (l :: TxLevel). SimpleGetter (TxBody l era) (Set PolicyID)
mintedTxBodyF)
  ConwaySpending AsIx Word32 TxIn
idx ->
    AsIxItem Word32 TxIn -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (AsIxItem Word32 TxIn -> ConwayPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 TxIn)
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 TxIn -> Set TxIn -> StrictMaybe (AsIxItem Word32 TxIn)
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 TxIn
idx (TxBody l era
txBody TxBody l era
-> Getting (Set TxIn) (TxBody l era) (Set TxIn) -> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody l era) (Set TxIn)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l era) (Set TxIn)
inputsTxBodyL)
  ConwayRewarding AsIx Word32 RewardAccount
idx ->
    AsIxItem Word32 RewardAccount -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (AsIxItem Word32 RewardAccount -> ConwayPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 RewardAccount)
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 RewardAccount
-> Map RewardAccount Coin
-> StrictMaybe (AsIxItem Word32 RewardAccount)
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 RewardAccount
idx (Withdrawals -> Map RewardAccount Coin
unWithdrawals (TxBody l era
txBody TxBody l era
-> Getting Withdrawals (TxBody l era) Withdrawals -> Withdrawals
forall s a. s -> Getting a s a -> a
^. Getting Withdrawals (TxBody l era) Withdrawals
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel). Lens' (TxBody l era) Withdrawals
withdrawalsTxBodyL))
  ConwayCertifying AsIx Word32 (TxCert era)
idx ->
    AsIxItem Word32 (TxCert era) -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (AsIxItem Word32 (TxCert era) -> ConwayPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 (TxCert era))
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 (TxCert era)
-> StrictSeq (TxCert era)
-> StrictMaybe (AsIxItem Word32 (TxCert era))
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 (TxCert era)
idx (TxBody l era
txBody TxBody l era
-> Getting
     (StrictSeq (TxCert era)) (TxBody l era) (StrictSeq (TxCert era))
-> StrictSeq (TxCert era)
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictSeq (TxCert era)) (TxBody l era) (StrictSeq (TxCert era))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l era) (StrictSeq (TxCert era))
certsTxBodyL)
  ConwayVoting AsIx Word32 Voter
idx ->
    AsIxItem Word32 Voter -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (AsIxItem Word32 Voter -> ConwayPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 Voter)
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 Voter
-> VotingProcedures era -> StrictMaybe (AsIxItem Word32 Voter)
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 Voter
idx (TxBody l era
txBody TxBody l era
-> Getting
     (VotingProcedures era) (TxBody l era) (VotingProcedures era)
-> VotingProcedures era
forall s a. s -> Getting a s a -> a
^. Getting
  (VotingProcedures era) (TxBody l era) (VotingProcedures era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (VotingProcedures era)
forall (l :: TxLevel). Lens' (TxBody l era) (VotingProcedures era)
votingProceduresTxBodyL)
  ConwayProposing AsIx Word32 (ProposalProcedure era)
idx ->
    AsIxItem Word32 (ProposalProcedure era)
-> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (AsIxItem Word32 (ProposalProcedure era)
 -> ConwayPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 (ProposalProcedure era))
-> StrictMaybe (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 (ProposalProcedure era)
-> OSet (ProposalProcedure era)
-> StrictMaybe (AsIxItem Word32 (ProposalProcedure era))
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 (ProposalProcedure era)
idx (TxBody l era
txBody TxBody l era
-> Getting
     (OSet (ProposalProcedure era))
     (TxBody l era)
     (OSet (ProposalProcedure era))
-> OSet (ProposalProcedure era)
forall s a. s -> Getting a s a -> a
^. Getting
  (OSet (ProposalProcedure era))
  (TxBody l era)
  (OSet (ProposalProcedure 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)