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

module Cardano.Ledger.Dijkstra.TxBody (
  DijkstraEraTxBody (..),
  TxBody (
    MkDijkstraTxBody,
    DijkstraTxBody,
    DijkstraSubTxBody,
    dtbSpendInputs,
    dtbCollateralInputs,
    dtbReferenceInputs,
    dtbOutputs,
    dtbCollateralReturn,
    dtbTotalCollateral,
    dtbCerts,
    dtbWithdrawals,
    dtbTxfee,
    dtbVldt,
    dtbMint,
    dtbScriptIntegrityHash,
    dtbAdHash,
    dtbTxNetworkId,
    dtbVotingProcedures,
    dtbProposalProcedures,
    dtbCurrentTreasuryValue,
    dtbTreasuryDonation,
    dtbGuards,
    dtbSubTransactions,
    dstbSpendInputs,
    dstbReferenceInputs,
    dstbOutputs,
    dstbCerts,
    dstbWithdrawals,
    dstbVldt,
    dstbMint,
    dstbScriptIntegrityHash,
    dstbAdHash,
    dstbTxNetworkId,
    dstbVotingProcedures,
    dstbProposalProcedures,
    dstbCurrentTreasuryValue,
    dstbTreasuryDonation,
    dstbGuards
  ),
  upgradeProposals,
  upgradeGovAction,
  DijkstraTxBodyRaw (..),
) where

import Cardano.Ledger.Allegra.Scripts (invalidBeforeL, invalidHereAfterL)
import Cardano.Ledger.Alonzo.TxBody (Indexable (..))
import Cardano.Ledger.Babbage.TxBody (
  allSizedOutputsBabbageTxBodyF,
  babbageAllInputsTxBodyF,
  babbageSpendableInputsTxBodyF,
 )
import Cardano.Ledger.BaseTypes (Network, StrictMaybe (..), fromSMaybe)
import Cardano.Ledger.Binary (
  Annotator,
  DecCBOR (..),
  Decoder,
  EncCBOR (..),
  Sized (..),
  ToCBOR,
  TokenType (..),
  liftST,
  mkSized,
  peekTokenType,
 )
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 (ConwayEra)
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Governance (
  GovAction (..),
  ProposalProcedure (..),
  VotingProcedures (..),
 )
import Cardano.Ledger.Conway.TxBody (
  conwayProposalsDeposits,
 )
import Cardano.Ledger.Core (EraPParams (..))
import Cardano.Ledger.Credential (Credential (..))
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.Scripts (DijkstraPlutusPurpose (..))
import Cardano.Ledger.Dijkstra.TxOut ()
import Cardano.Ledger.Keys (HasKeyRole (..))
import Cardano.Ledger.Mary.Value (MultiAsset)
import Cardano.Ledger.MemoBytes (
  EqRaw,
  Mem,
  MemoBytes,
  MemoHashIndex,
  Memoized (..),
  getMemoRawType,
  getMemoSafeHash,
  lensMemoRawType,
  memoRawTypeL,
  mkMemoizedEra,
 )
import Cardano.Ledger.TxIn (TxId, TxIn)
import Cardano.Ledger.Val (Val (..))
import Control.DeepSeq (NFData (..), deepseq)
import Data.Coerce (coerce)
import Data.OMap.Strict (OMap)
import qualified Data.OMap.Strict as OMap
import Data.OSet.Strict (OSet, decodeOSet)
import qualified Data.OSet.Strict as OSet
import Data.STRef (newSTRef, readSTRef, writeSTRef)
import Data.Sequence.Strict (StrictSeq)
import Data.Set (Set, foldr')
import qualified Data.Set as Set
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import Lens.Micro (Lens', lens, to, (.~), (^.))
import NoThunks.Class (InspectHeap (..), NoThunks)

data DijkstraTxBodyRaw l era where
  DijkstraTxBodyRaw ::
    { forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrSpendInputs :: !(Set TxIn)
    , forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrCollateralInputs :: !(Set TxIn)
    , forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrReferenceInputs :: !(Set TxIn)
    , forall era.
DijkstraTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
dtbrOutputs :: !(StrictSeq (Sized (TxOut era)))
    , forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
dtbrCollateralReturn :: !(StrictMaybe (Sized (TxOut era)))
    , forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrTotalCollateral :: !(StrictMaybe Coin)
    , forall era. DijkstraTxBodyRaw TopTx era -> OSet (TxCert era)
dtbrCerts :: !(OSet.OSet (TxCert era))
    , forall era. DijkstraTxBodyRaw TopTx era -> Withdrawals
dtbrWithdrawals :: !Withdrawals
    , forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrFee :: !Coin
    , forall era. DijkstraTxBodyRaw TopTx era -> ValidityInterval
dtbrVldt :: !ValidityInterval
    , forall era. DijkstraTxBodyRaw TopTx era -> OSet (Credential Guard)
dtbrGuards :: !(OSet (Credential Guard))
    , forall era. DijkstraTxBodyRaw TopTx era -> MultiAsset
dtbrMint :: !MultiAsset
    , forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash :: !(StrictMaybe ScriptIntegrityHash)
    , forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
dtbrAuxDataHash :: !(StrictMaybe TxAuxDataHash)
    , forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Network
dtbrNetworkId :: !(StrictMaybe Network)
    , forall era. DijkstraTxBodyRaw TopTx era -> VotingProcedures era
dtbrVotingProcedures :: !(VotingProcedures era)
    , forall era.
DijkstraTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
dtbrProposalProcedures :: !(OSet.OSet (ProposalProcedure era))
    , forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrCurrentTreasuryValue :: !(StrictMaybe Coin)
    , forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrTreasuryDonation :: !Coin
    , forall era. DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era)
dtbrSubTransactions :: !(OMap TxId (Tx SubTx era))
    } ->
    DijkstraTxBodyRaw TopTx era
  DijkstraSubTxBodyRaw ::
    { forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrSpendInputs :: !(Set TxIn)
    , forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrReferenceInputs :: !(Set TxIn)
    , forall era.
DijkstraTxBodyRaw SubTx era -> StrictSeq (Sized (TxOut era))
dstbrOutputs :: !(StrictSeq (Sized (TxOut era)))
    , forall era. DijkstraTxBodyRaw SubTx era -> OSet (TxCert era)
dstbrCerts :: !(OSet.OSet (TxCert era))
    , forall era. DijkstraTxBodyRaw SubTx era -> Withdrawals
dstbrWithdrawals :: !Withdrawals
    , forall era. DijkstraTxBodyRaw SubTx era -> ValidityInterval
dstbrVldt :: !ValidityInterval
    , forall era. DijkstraTxBodyRaw SubTx era -> OSet (Credential Guard)
dstbrGuards :: !(OSet (Credential Guard))
    , forall era. DijkstraTxBodyRaw SubTx era -> MultiAsset
dstbrMint :: !MultiAsset
    , forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash :: !(StrictMaybe ScriptIntegrityHash)
    , forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe TxAuxDataHash
dstbrAuxDataHash :: !(StrictMaybe TxAuxDataHash)
    , forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Network
dstbrNetworkId :: !(StrictMaybe Network)
    , forall era. DijkstraTxBodyRaw SubTx era -> VotingProcedures era
dstbrVotingProcedures :: !(VotingProcedures era)
    , forall era.
DijkstraTxBodyRaw SubTx era -> OSet (ProposalProcedure era)
dstbrProposalProcedures :: !(OSet.OSet (ProposalProcedure era))
    , forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Coin
dstbrCurrentTreasuryValue :: !(StrictMaybe Coin)
    , forall era. DijkstraTxBodyRaw SubTx era -> Coin
dstbrTreasuryDonation :: !Coin
    } ->
    DijkstraTxBodyRaw SubTx era

deriving instance (EraTxBody era, Eq (Tx SubTx era)) => Eq (DijkstraTxBodyRaw l era)

instance
  ( Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  EqRaw (TxBody l DijkstraEra)

deriving via
  InspectHeap (DijkstraTxBodyRaw l era)
  instance
    (Typeable l, EraTxBody era) => NoThunks (DijkstraTxBodyRaw l era)

instance (EraTxBody era, NFData (Tx SubTx era)) => NFData (DijkstraTxBodyRaw l era) where
  rnf :: DijkstraTxBodyRaw l era -> ()
rnf txBodyRaw :: DijkstraTxBodyRaw l era
txBodyRaw@(DijkstraTxBodyRaw Set TxIn
_ Set TxIn
_ Set TxIn
_ StrictSeq (Sized (TxOut era))
_ StrictMaybe (Sized (TxOut era))
_ StrictMaybe Coin
_ OSet (TxCert era)
_ Withdrawals
_ Coin
_ ValidityInterval
_ OSet (Credential Guard)
_ MultiAsset
_ StrictMaybe ScriptIntegrityHash
_ StrictMaybe TxAuxDataHash
_ StrictMaybe Network
_ VotingProcedures era
_ OSet (ProposalProcedure era)
_ StrictMaybe Coin
_ Coin
_ OMap TxId (Tx SubTx era)
_) =
    let DijkstraTxBodyRaw {OMap TxId (Tx SubTx era)
OSet (TxCert era)
OSet (ProposalProcedure era)
OSet (Credential Guard)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe (Sized (TxOut era))
StrictMaybe Coin
StrictMaybe Network
ValidityInterval
Withdrawals
VotingProcedures era
Coin
MultiAsset
StrictSeq (Sized (TxOut era))
dtbrSpendInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrCollateralInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrReferenceInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrOutputs :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
dtbrCollateralReturn :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
dtbrTotalCollateral :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrCerts :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (TxCert era)
dtbrWithdrawals :: forall era. DijkstraTxBodyRaw TopTx era -> Withdrawals
dtbrFee :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrVldt :: forall era. DijkstraTxBodyRaw TopTx era -> ValidityInterval
dtbrGuards :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (Credential Guard)
dtbrMint :: forall era. DijkstraTxBodyRaw TopTx era -> MultiAsset
dtbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
dtbrAuxDataHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
dtbrNetworkId :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Network
dtbrVotingProcedures :: forall era. DijkstraTxBodyRaw TopTx era -> VotingProcedures era
dtbrProposalProcedures :: forall era.
DijkstraTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
dtbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrTreasuryDonation :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrSubTransactions :: forall era. DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era)
dtbrSpendInputs :: Set TxIn
dtbrCollateralInputs :: Set TxIn
dtbrReferenceInputs :: Set TxIn
dtbrOutputs :: StrictSeq (Sized (TxOut era))
dtbrCollateralReturn :: StrictMaybe (Sized (TxOut era))
dtbrTotalCollateral :: StrictMaybe Coin
dtbrCerts :: OSet (TxCert era)
dtbrWithdrawals :: Withdrawals
dtbrFee :: Coin
dtbrVldt :: ValidityInterval
dtbrGuards :: OSet (Credential Guard)
dtbrMint :: MultiAsset
dtbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dtbrAuxDataHash :: StrictMaybe TxAuxDataHash
dtbrNetworkId :: StrictMaybe Network
dtbrVotingProcedures :: VotingProcedures era
dtbrProposalProcedures :: OSet (ProposalProcedure era)
dtbrCurrentTreasuryValue :: StrictMaybe Coin
dtbrTreasuryDonation :: Coin
dtbrSubTransactions :: OMap TxId (Tx SubTx era)
..} = DijkstraTxBodyRaw l era
txBodyRaw
     in Set TxIn
dtbrSpendInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
          Set TxIn
dtbrCollateralInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
            Set TxIn
dtbrReferenceInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
              StrictSeq (Sized (TxOut era))
dtbrOutputs StrictSeq (Sized (TxOut era)) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                StrictMaybe (Sized (TxOut era))
dtbrCollateralReturn StrictMaybe (Sized (TxOut era)) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                  StrictMaybe Coin
dtbrTotalCollateral StrictMaybe Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                    OSet (TxCert era)
dtbrCerts OSet (TxCert era) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                      Withdrawals
dtbrWithdrawals Withdrawals -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                        Coin
dtbrFee Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                          ValidityInterval
dtbrVldt ValidityInterval -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                            OSet (Credential Guard)
dtbrGuards OSet (Credential Guard) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                              MultiAsset
dtbrMint MultiAsset -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash StrictMaybe ScriptIntegrityHash -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                  StrictMaybe TxAuxDataHash
dtbrAuxDataHash StrictMaybe TxAuxDataHash -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                    StrictMaybe Network
dtbrNetworkId StrictMaybe Network -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                      VotingProcedures era
dtbrVotingProcedures VotingProcedures era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                        OSet (ProposalProcedure era)
dtbrProposalProcedures OSet (ProposalProcedure era) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                          StrictMaybe Coin
dtbrCurrentTreasuryValue StrictMaybe Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                            Coin
dtbrTreasuryDonation Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                              OMap TxId (Tx SubTx era) -> ()
forall a. NFData a => a -> ()
rnf OMap TxId (Tx SubTx era)
dtbrSubTransactions
  rnf txBodyRaw :: DijkstraTxBodyRaw l era
txBodyRaw@(DijkstraSubTxBodyRaw Set TxIn
_ Set TxIn
_ StrictSeq (Sized (TxOut era))
_ OSet (TxCert era)
_ Withdrawals
_ ValidityInterval
_ OSet (Credential Guard)
_ MultiAsset
_ StrictMaybe ScriptIntegrityHash
_ StrictMaybe TxAuxDataHash
_ StrictMaybe Network
_ VotingProcedures era
_ OSet (ProposalProcedure era)
_ StrictMaybe Coin
_ Coin
_) =
    let DijkstraSubTxBodyRaw {OSet (TxCert era)
OSet (ProposalProcedure era)
OSet (Credential Guard)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe Coin
StrictMaybe Network
ValidityInterval
Withdrawals
VotingProcedures era
Coin
MultiAsset
StrictSeq (Sized (TxOut era))
dstbrSpendInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrReferenceInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrOutputs :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictSeq (Sized (TxOut era))
dstbrCerts :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (TxCert era)
dstbrWithdrawals :: forall era. DijkstraTxBodyRaw SubTx era -> Withdrawals
dstbrVldt :: forall era. DijkstraTxBodyRaw SubTx era -> ValidityInterval
dstbrGuards :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (Credential Guard)
dstbrMint :: forall era. DijkstraTxBodyRaw SubTx era -> MultiAsset
dstbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe ScriptIntegrityHash
dstbrAuxDataHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe TxAuxDataHash
dstbrNetworkId :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Network
dstbrVotingProcedures :: forall era. DijkstraTxBodyRaw SubTx era -> VotingProcedures era
dstbrProposalProcedures :: forall era.
DijkstraTxBodyRaw SubTx era -> OSet (ProposalProcedure era)
dstbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Coin
dstbrTreasuryDonation :: forall era. DijkstraTxBodyRaw SubTx era -> Coin
dstbrSpendInputs :: Set TxIn
dstbrReferenceInputs :: Set TxIn
dstbrOutputs :: StrictSeq (Sized (TxOut era))
dstbrCerts :: OSet (TxCert era)
dstbrWithdrawals :: Withdrawals
dstbrVldt :: ValidityInterval
dstbrGuards :: OSet (Credential Guard)
dstbrMint :: MultiAsset
dstbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dstbrAuxDataHash :: StrictMaybe TxAuxDataHash
dstbrNetworkId :: StrictMaybe Network
dstbrVotingProcedures :: VotingProcedures era
dstbrProposalProcedures :: OSet (ProposalProcedure era)
dstbrCurrentTreasuryValue :: StrictMaybe Coin
dstbrTreasuryDonation :: Coin
..} = DijkstraTxBodyRaw l era
txBodyRaw
     in Set TxIn
dstbrSpendInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
          Set TxIn
dstbrReferenceInputs Set TxIn -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
            StrictSeq (Sized (TxOut era))
dstbrOutputs StrictSeq (Sized (TxOut era)) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
              OSet (TxCert era)
dstbrCerts OSet (TxCert era) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                Withdrawals
dstbrWithdrawals Withdrawals -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                  ValidityInterval
dstbrVldt ValidityInterval -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                    OSet (Credential Guard)
dstbrGuards OSet (Credential Guard) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                      MultiAsset
dstbrMint MultiAsset -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                        StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash StrictMaybe ScriptIntegrityHash -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                          StrictMaybe TxAuxDataHash
dstbrAuxDataHash StrictMaybe TxAuxDataHash -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                            StrictMaybe Network
dstbrNetworkId StrictMaybe Network -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                              VotingProcedures era
dstbrVotingProcedures VotingProcedures era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                OSet (ProposalProcedure era)
dstbrProposalProcedures OSet (ProposalProcedure era) -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                  StrictMaybe Coin
dstbrCurrentTreasuryValue StrictMaybe Coin -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
                                    Coin -> ()
forall a. NFData a => a -> ()
rnf Coin
dstbrTreasuryDonation

deriving instance (EraTxBody era, Show (Tx SubTx era)) => Show (DijkstraTxBodyRaw l era)

basicDijkstraTxBodyRaw :: EraTxBody era => STxBothLevels l era -> DijkstraTxBodyRaw l era
basicDijkstraTxBodyRaw :: forall era (l :: TxLevel).
EraTxBody era =>
STxBothLevels l era -> DijkstraTxBodyRaw l era
basicDijkstraTxBodyRaw STxBothLevels l era
STopTx =
  Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx era)
-> DijkstraTxBodyRaw TopTx era
forall era.
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx era)
-> DijkstraTxBodyRaw TopTx era
DijkstraTxBodyRaw
    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 era))
forall a. Monoid a => a
mempty
    StrictMaybe (Sized (TxOut era))
forall a. StrictMaybe a
SNothing
    StrictMaybe Coin
forall a. StrictMaybe a
SNothing
    OSet (TxCert era)
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)
    OSet (Credential 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 era))
-> VotingProcedures era
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
VotingProcedures Map Voter (Map GovActionId (VotingProcedure era))
forall a. Monoid a => a
mempty)
    OSet (ProposalProcedure era)
forall a. OSet a
OSet.empty
    StrictMaybe Coin
forall a. StrictMaybe a
SNothing
    Coin
forall a. Monoid a => a
mempty
    OMap TxId (Tx SubTx era)
forall k v. OMap k v
OMap.Empty
basicDijkstraTxBodyRaw STxBothLevels l era
SSubTx =
  Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> OSet (TxCert era)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> DijkstraTxBodyRaw SubTx era
forall era.
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> OSet (TxCert era)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> DijkstraTxBodyRaw SubTx era
DijkstraSubTxBodyRaw
    Set TxIn
forall a. Monoid a => a
mempty
    Set TxIn
forall a. Monoid a => a
mempty
    StrictSeq (Sized (TxOut era))
forall a. Monoid a => a
mempty
    OSet (TxCert era)
forall a. Monoid a => a
mempty
    (Map RewardAccount Coin -> Withdrawals
Withdrawals Map RewardAccount 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)
    OSet (Credential 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 era))
-> VotingProcedures era
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
VotingProcedures Map Voter (Map GovActionId (VotingProcedure era))
forall a. Monoid a => a
mempty)
    OSet (ProposalProcedure era)
forall a. Monoid a => a
mempty
    StrictMaybe Coin
forall a. Monoid a => a
mempty
    Coin
forall a. Monoid a => a
mempty

instance (Typeable l, EraTxBody era) => DecCBOR (DijkstraTxBodyRaw l era) where
  decCBOR :: forall s. Decoder s (DijkstraTxBodyRaw l era)
decCBOR = forall (l :: TxLevel) era a.
(Typeable l, HasCallStack) =>
(STxBothLevels l era -> a) -> a
withSTxBothLevels @l ((STxBothLevels l era -> Decoder s (DijkstraTxBodyRaw l era))
 -> Decoder s (DijkstraTxBodyRaw l era))
-> (STxBothLevels l era -> Decoder s (DijkstraTxBodyRaw l era))
-> Decoder s (DijkstraTxBodyRaw l era)
forall a b. (a -> b) -> a -> b
$ \STxBothLevels l era
sTxLevel ->
    Decode (Closed Dense) (DijkstraTxBodyRaw l era)
-> Decoder s (DijkstraTxBodyRaw l era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraTxBodyRaw l era)
 -> Decoder s (DijkstraTxBodyRaw l era))
-> Decode (Closed Dense) (DijkstraTxBodyRaw l era)
-> Decoder s (DijkstraTxBodyRaw l era)
forall a b. (a -> b) -> a -> b
$
      String
-> DijkstraTxBodyRaw l era
-> (Word -> Field (DijkstraTxBodyRaw l era))
-> [(Word, String)]
-> Decode (Closed Dense) (DijkstraTxBodyRaw l era)
forall t.
Typeable t =>
String
-> t
-> (Word -> Field t)
-> [(Word, String)]
-> Decode (Closed Dense) t
SparseKeyed
        String
"TxBodyRaw"
        (STxBothLevels l era -> DijkstraTxBodyRaw l era
forall era (l :: TxLevel).
EraTxBody era =>
STxBothLevels l era -> DijkstraTxBodyRaw l era
basicDijkstraTxBodyRaw STxBothLevels l era
sTxLevel)
        (STxBothLevels l era -> Word -> Field (DijkstraTxBodyRaw l era)
bodyFields STxBothLevels l era
sTxLevel)
        [(Word, String)]
requiredFields
    where
      bodyFields :: STxBothLevels l era -> Word -> Field (DijkstraTxBodyRaw l era)
      bodyFields :: STxBothLevels l era -> Word -> Field (DijkstraTxBodyRaw l era)
bodyFields STxBothLevels l era
sTxLevel = \case
        Word
0 -> (Set TxIn -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 0)) (Set TxIn)
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(x -> t -> t) -> Decode (Closed d) x -> Field t
field ((Set TxIn -> Identity (Set TxIn))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
inputsDijkstraTxBodyRawL ((Set TxIn -> Identity (Set TxIn))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> Set TxIn -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 0)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
1 -> (StrictSeq (TxOut era)
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 1)) (StrictSeq (TxOut era))
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(x -> t -> t) -> Decode (Closed d) x -> Field t
field ((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall era (l :: TxLevel).
EraTxOut era =>
Lens' (DijkstraTxBodyRaw l era) (StrictSeq (TxOut era))
Lens' (DijkstraTxBodyRaw l era) (StrictSeq (TxOut era))
outputsDijkstraTxBodyRawL ((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictSeq (TxOut era)
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 1)) (StrictSeq (TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
2 | STxBothLevels l era
STopTx <- STxBothLevels l era
sTxLevel -> (Coin -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 2)) Coin
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(x -> t -> t) -> Decode (Closed d) x -> Field t
field ((Coin -> Identity Coin)
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
(Coin -> Identity Coin)
-> DijkstraTxBodyRaw TopTx era
-> Identity (DijkstraTxBodyRaw TopTx era)
forall era (f :: * -> *).
Functor f =>
(Coin -> f Coin)
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
feeDijkstraTxBodyRawL ((Coin -> Identity Coin)
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> Coin -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 2)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
3 -> (StrictMaybe SlotNo
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 3)) SlotNo
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((ValidityInterval -> Identity ValidityInterval)
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(ValidityInterval -> f ValidityInterval)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
vldtDijkstraTxBodyRawL ((ValidityInterval -> Identity ValidityInterval)
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
    -> ValidityInterval -> Identity ValidityInterval)
-> (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> DijkstraTxBodyRaw l era
-> Identity (DijkstraTxBodyRaw l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> ValidityInterval -> Identity ValidityInterval
Lens' ValidityInterval (StrictMaybe SlotNo)
invalidHereAfterL ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe SlotNo
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 3)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
4 ->
          String
-> (OSet (TxCert era) -> Bool)
-> (OSet (TxCert era)
    -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 4)) (OSet (TxCert era))
-> Field (DijkstraTxBodyRaw l era)
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 (TxCert era) -> Bool
forall a. OSet a -> Bool
OSet.null
            ((OSet (TxCert era) -> Identity (OSet (TxCert era)))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (TxCert era) -> f (OSet (TxCert era)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
certsDijkstraTxBodyRawL ((OSet (TxCert era) -> Identity (OSet (TxCert era)))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> OSet (TxCert era)
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
            Decode (Closed (ZonkAny 4)) (OSet (TxCert era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
5 ->
          String
-> (Withdrawals -> Bool)
-> (Withdrawals
    -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 5)) Withdrawals
-> Field (DijkstraTxBodyRaw l era)
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 -> Identity Withdrawals)
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Withdrawals -> f Withdrawals)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
withdrawalsDijkstraTxBodyRawL ((Withdrawals -> Identity Withdrawals)
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> Withdrawals
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
            Decode (Closed (ZonkAny 5)) Withdrawals
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
7 -> (StrictMaybe TxAuxDataHash
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 6)) TxAuxDataHash
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((StrictMaybe TxAuxDataHash -> Identity (StrictMaybe TxAuxDataHash))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe TxAuxDataHash -> f (StrictMaybe TxAuxDataHash))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
auxDataHashDijkstraTxBodyRawL ((StrictMaybe TxAuxDataHash
  -> Identity (StrictMaybe TxAuxDataHash))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe TxAuxDataHash
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 6)) TxAuxDataHash
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
8 -> (StrictMaybe SlotNo
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 7)) SlotNo
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((ValidityInterval -> Identity ValidityInterval)
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(ValidityInterval -> f ValidityInterval)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
vldtDijkstraTxBodyRawL ((ValidityInterval -> Identity ValidityInterval)
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
    -> ValidityInterval -> Identity ValidityInterval)
-> (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> DijkstraTxBodyRaw l era
-> Identity (DijkstraTxBodyRaw l era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
-> ValidityInterval -> Identity ValidityInterval
Lens' ValidityInterval (StrictMaybe SlotNo)
invalidBeforeL ((StrictMaybe SlotNo -> Identity (StrictMaybe SlotNo))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe SlotNo
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 7)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
9 ->
          String
-> (MultiAsset -> Bool)
-> (MultiAsset
    -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 8)) MultiAsset
-> Field (DijkstraTxBodyRaw l era)
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 -> Identity MultiAsset)
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(MultiAsset -> f MultiAsset)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
mintDijkstraTxBodyRawL ((MultiAsset -> Identity MultiAsset)
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> MultiAsset -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
            Decode (Closed (ZonkAny 8)) MultiAsset
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
11 -> (StrictMaybe ScriptIntegrityHash
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 9)) ScriptIntegrityHash
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((StrictMaybe ScriptIntegrityHash
 -> Identity (StrictMaybe ScriptIntegrityHash))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe ScriptIntegrityHash
 -> f (StrictMaybe ScriptIntegrityHash))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
scriptIntegrityHashDijkstraTxBodyRawL ((StrictMaybe ScriptIntegrityHash
  -> Identity (StrictMaybe ScriptIntegrityHash))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe ScriptIntegrityHash
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 9)) ScriptIntegrityHash
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
13
          | STxBothLevels l era
STopTx <- STxBothLevels l era
sTxLevel ->
              String
-> (Set TxIn -> Bool)
-> (Set TxIn -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 10)) (Set TxIn)
-> Field (DijkstraTxBodyRaw l era)
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 -> Identity (Set TxIn))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
(Set TxIn -> Identity (Set TxIn))
-> DijkstraTxBodyRaw TopTx era
-> Identity (DijkstraTxBodyRaw TopTx era)
forall era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
collateralInputsDijkstraTxBodyRawL ((Set TxIn -> Identity (Set TxIn))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> Set TxIn -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
                Decode (Closed (ZonkAny 10)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
14 ->
          (StrictMaybe (OSet (Credential Guard))
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed Dense) (OSet (Credential Guard))
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield
            (\StrictMaybe (OSet (Credential Guard))
x -> (OSet (Credential Guard) -> Identity (OSet (Credential Guard)))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (Credential Guard) -> f (OSet (Credential Guard)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
guardsDijkstraTxBodyRawL ((OSet (Credential Guard) -> Identity (OSet (Credential Guard)))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> OSet (Credential Guard)
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ OSet (Credential Guard)
-> StrictMaybe (OSet (Credential Guard)) -> OSet (Credential Guard)
forall a. a -> StrictMaybe a -> a
fromSMaybe OSet (Credential Guard)
forall a. Monoid a => a
mempty StrictMaybe (OSet (Credential Guard))
x)
            ((forall s. Decoder s (OSet (Credential Guard)))
-> Decode (Closed Dense) (OSet (Credential Guard))
forall t. (forall s. Decoder s t) -> Decode (Closed Dense) t
D Decoder s (OSet (Credential Guard))
forall s. Decoder s (OSet (Credential Guard))
decodeGuards)
        Word
15 -> (StrictMaybe Network
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 11)) Network
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((StrictMaybe Network -> Identity (StrictMaybe Network))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe Network -> f (StrictMaybe Network))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
networkIdDijkstraTxBodyRawL ((StrictMaybe Network -> Identity (StrictMaybe Network))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe Network
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 11)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
16
          | STxBothLevels l era
STopTx <- STxBothLevels l era
sTxLevel ->
              (StrictMaybe (TxOut era)
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 12)) (TxOut era)
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((StrictMaybe (TxOut era) -> Identity (StrictMaybe (TxOut era)))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
(StrictMaybe (TxOut era) -> Identity (StrictMaybe (TxOut era)))
-> DijkstraTxBodyRaw TopTx era
-> Identity (DijkstraTxBodyRaw TopTx era)
forall era.
EraTxBody era =>
Lens' (DijkstraTxBodyRaw TopTx era) (StrictMaybe (TxOut era))
Lens' (DijkstraTxBodyRaw TopTx era) (StrictMaybe (TxOut era))
collateralReturnDijkstraTxBodyRawL ((StrictMaybe (TxOut era) -> Identity (StrictMaybe (TxOut era)))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe (TxOut era)
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 12)) (TxOut era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
17
          | STxBothLevels l era
STopTx <- STxBothLevels l era
sTxLevel ->
              (StrictMaybe Coin
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 13)) Coin
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
(StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> DijkstraTxBodyRaw TopTx era
-> Identity (DijkstraTxBodyRaw TopTx era)
forall era (f :: * -> *).
Functor f =>
(StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
totalCollateralDijkstraTxBodyRawL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe Coin
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 13)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
18 ->
          String
-> (Set TxIn -> Bool)
-> (Set TxIn -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 14)) (Set TxIn)
-> Field (DijkstraTxBodyRaw l era)
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 -> Identity (Set TxIn))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
referenceInputsDijkstraTxBodyRawL ((Set TxIn -> Identity (Set TxIn))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> Set TxIn -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
            Decode (Closed (ZonkAny 14)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
19 ->
          String
-> (VotingProcedures era -> Bool)
-> (VotingProcedures era
    -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 15)) (VotingProcedures era)
-> Field (DijkstraTxBodyRaw l era)
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 era)) -> Bool
forall a. Map Voter a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map Voter (Map GovActionId (VotingProcedure era)) -> Bool)
-> (VotingProcedures era
    -> Map Voter (Map GovActionId (VotingProcedure era)))
-> VotingProcedures era
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
forall era.
VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
unVotingProcedures)
            ((VotingProcedures era -> Identity (VotingProcedures era))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(VotingProcedures era -> f (VotingProcedures era))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
votingProceduresDijkstraTxBodyRawL ((VotingProcedures era -> Identity (VotingProcedures era))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> VotingProcedures era
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
            Decode (Closed (ZonkAny 15)) (VotingProcedures era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
20 ->
          String
-> (OSet (ProposalProcedure era) -> Bool)
-> (OSet (ProposalProcedure era)
    -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 16)) (OSet (ProposalProcedure era))
-> Field (DijkstraTxBodyRaw l era)
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 era) -> Bool
forall a. OSet a -> Bool
OSet.null
            ((OSet (ProposalProcedure era)
 -> Identity (OSet (ProposalProcedure era)))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (ProposalProcedure era) -> f (OSet (ProposalProcedure era)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
proposalProceduresDijkstraTxBodyRawL ((OSet (ProposalProcedure era)
  -> Identity (OSet (ProposalProcedure era)))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> OSet (ProposalProcedure era)
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~)
            Decode (Closed (ZonkAny 16)) (OSet (ProposalProcedure era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
21 -> (StrictMaybe Coin
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed (ZonkAny 17)) Coin
-> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
currentTreasuryValueDijkstraTxBodyRawL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> StrictMaybe Coin
-> DijkstraTxBodyRaw l era
-> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~) Decode (Closed (ZonkAny 17)) Coin
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
        Word
22 ->
          (StrictMaybe Coin
 -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era)
-> Decode (Closed Dense) Coin -> Field (DijkstraTxBodyRaw l era)
forall x t (d :: Density).
Typeable x =>
(StrictMaybe x -> t -> t) -> Decode (Closed d) x -> Field t
ofield
            (\StrictMaybe Coin
x -> (Coin -> Identity Coin)
-> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Coin -> f Coin)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
treasuryDonationDijkstraTxBodyRawL ((Coin -> Identity Coin)
 -> DijkstraTxBodyRaw l era -> Identity (DijkstraTxBodyRaw l era))
-> Coin -> DijkstraTxBodyRaw l era -> DijkstraTxBodyRaw l era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> StrictMaybe Coin -> Coin
forall a. a -> StrictMaybe a -> a
fromSMaybe Coin
forall t. Val t => t
zero StrictMaybe Coin
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"))
        Word
n -> Word -> Field (DijkstraTxBodyRaw l era)
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"

encodeTxBodyRaw ::
  (EraTxBody era, EncCBOR (Tx SubTx era)) =>
  DijkstraTxBodyRaw l era -> Encode (Closed Sparse) (DijkstraTxBodyRaw l era)
encodeTxBodyRaw :: forall era (l :: TxLevel).
(EraTxBody era, EncCBOR (Tx SubTx era)) =>
DijkstraTxBodyRaw l era
-> Encode (Closed Sparse) (DijkstraTxBodyRaw l era)
encodeTxBodyRaw DijkstraTxBodyRaw {OMap TxId (Tx SubTx era)
OSet (TxCert era)
OSet (ProposalProcedure era)
OSet (Credential Guard)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe (Sized (TxOut era))
StrictMaybe Coin
StrictMaybe Network
ValidityInterval
Withdrawals
VotingProcedures era
Coin
MultiAsset
StrictSeq (Sized (TxOut era))
dtbrSpendInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrCollateralInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrReferenceInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrOutputs :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
dtbrCollateralReturn :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
dtbrTotalCollateral :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrCerts :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (TxCert era)
dtbrWithdrawals :: forall era. DijkstraTxBodyRaw TopTx era -> Withdrawals
dtbrFee :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrVldt :: forall era. DijkstraTxBodyRaw TopTx era -> ValidityInterval
dtbrGuards :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (Credential Guard)
dtbrMint :: forall era. DijkstraTxBodyRaw TopTx era -> MultiAsset
dtbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
dtbrAuxDataHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
dtbrNetworkId :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Network
dtbrVotingProcedures :: forall era. DijkstraTxBodyRaw TopTx era -> VotingProcedures era
dtbrProposalProcedures :: forall era.
DijkstraTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
dtbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrTreasuryDonation :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrSubTransactions :: forall era. DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era)
dtbrSpendInputs :: Set TxIn
dtbrCollateralInputs :: Set TxIn
dtbrReferenceInputs :: Set TxIn
dtbrOutputs :: StrictSeq (Sized (TxOut era))
dtbrCollateralReturn :: StrictMaybe (Sized (TxOut era))
dtbrTotalCollateral :: StrictMaybe Coin
dtbrCerts :: OSet (TxCert era)
dtbrWithdrawals :: Withdrawals
dtbrFee :: Coin
dtbrVldt :: ValidityInterval
dtbrGuards :: OSet (Credential Guard)
dtbrMint :: MultiAsset
dtbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dtbrAuxDataHash :: StrictMaybe TxAuxDataHash
dtbrNetworkId :: StrictMaybe Network
dtbrVotingProcedures :: VotingProcedures era
dtbrProposalProcedures :: OSet (ProposalProcedure era)
dtbrCurrentTreasuryValue :: StrictMaybe Coin
dtbrTreasuryDonation :: Coin
dtbrSubTransactions :: OMap TxId (Tx SubTx era)
..} =
  let ValidityInterval StrictMaybe SlotNo
bot StrictMaybe SlotNo
top = ValidityInterval
dtbrVldt
   in (Set TxIn
 -> Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (TxOut era))
 -> StrictMaybe (Sized (TxOut era))
 -> StrictMaybe Coin
 -> Coin
 -> StrictMaybe SlotNo
 -> OSet (TxCert era)
 -> Withdrawals
 -> StrictMaybe SlotNo
 -> OSet (Credential Guard)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures era
 -> OSet (ProposalProcedure era)
 -> StrictMaybe Coin
 -> Coin
 -> OMap TxId (Tx SubTx era)
 -> DijkstraTxBodyRaw l era)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (TxOut era))
      -> StrictMaybe (Sized (TxOut era))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
forall t. t -> Encode (Closed Sparse) t
Keyed
        ( \Set TxIn
i Set TxIn
ci Set TxIn
ri StrictSeq (Sized (TxOut era))
o StrictMaybe (Sized (TxOut era))
cr StrictMaybe Coin
tc Coin
f StrictMaybe SlotNo
t OSet (TxCert era)
c Withdrawals
w StrictMaybe SlotNo
b ->
            Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx era)
-> DijkstraTxBodyRaw TopTx era
forall era.
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx era)
-> DijkstraTxBodyRaw TopTx era
DijkstraTxBodyRaw Set TxIn
i Set TxIn
ci Set TxIn
ri StrictSeq (Sized (TxOut era))
o StrictMaybe (Sized (TxOut era))
cr StrictMaybe Coin
tc OSet (TxCert era)
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 (TxOut era))
   -> StrictMaybe (Sized (TxOut era))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (TxOut era))
      -> StrictMaybe (Sized (TxOut era))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrSpendInputs)
        Encode
  (Closed Sparse)
  (Set TxIn
   -> Set TxIn
   -> StrictSeq (Sized (TxOut era))
   -> StrictMaybe (Sized (TxOut era))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> StrictSeq (Sized (TxOut era))
      -> StrictMaybe (Sized (TxOut era))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrCollateralInputs))
        Encode
  (Closed Sparse)
  (Set TxIn
   -> StrictSeq (Sized (TxOut era))
   -> StrictMaybe (Sized (TxOut era))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (StrictSeq (Sized (TxOut era))
      -> StrictMaybe (Sized (TxOut era))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrReferenceInputs))
        Encode
  (Closed Sparse)
  (StrictSeq (Sized (TxOut era))
   -> StrictMaybe (Sized (TxOut era))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictSeq (Sized (TxOut era)))
-> Encode
     (Closed Sparse)
     (StrictMaybe (Sized (TxOut era))
      -> StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> Encode (Closed Dense) (StrictSeq (Sized (TxOut era)))
-> Encode (Closed Sparse) (StrictSeq (Sized (TxOut era)))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
1 (StrictSeq (Sized (TxOut era))
-> Encode (Closed Dense) (StrictSeq (Sized (TxOut era)))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictSeq (Sized (TxOut era))
dtbrOutputs)
        Encode
  (Closed Sparse)
  (StrictMaybe (Sized (TxOut era))
   -> StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe (Sized (TxOut era)))
-> Encode
     (Closed Sparse)
     (StrictMaybe Coin
      -> Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> StrictMaybe (Sized (TxOut era))
-> Encode (Closed Sparse) (StrictMaybe (Sized (TxOut era)))
forall a.
EncCBOR a =>
Word -> StrictMaybe a -> Encode (Closed Sparse) (StrictMaybe a)
encodeKeyedStrictMaybe Word
16 StrictMaybe (Sized (TxOut era))
dtbrCollateralReturn
        Encode
  (Closed Sparse)
  (StrictMaybe Coin
   -> Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe Coin)
-> Encode
     (Closed Sparse)
     (Coin
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrTotalCollateral
        Encode
  (Closed Sparse)
  (Coin
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) Coin
-> Encode
     (Closed Sparse)
     (StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrFee)
        Encode
  (Closed Sparse)
  (StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
-> Encode
     (Closed Sparse)
     (OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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 (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OSet (TxCert era))
-> Encode
     (Closed Sparse)
     (Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (TxCert era) -> Bool)
-> Encode (Closed Sparse) (OSet (TxCert era))
-> Encode (Closed Sparse) (OSet (TxCert era))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (TxCert era) -> Bool
forall a. OSet a -> Bool
OSet.null (Word
-> Encode (Closed Dense) (OSet (TxCert era))
-> Encode (Closed Sparse) (OSet (TxCert era))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
4 (OSet (TxCert era) -> Encode (Closed Dense) (OSet (TxCert era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (TxCert era)
dtbrCerts))
        Encode
  (Closed Sparse)
  (Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) Withdrawals
-> Encode
     (Closed Sparse)
     (StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrWithdrawals))
        Encode
  (Closed Sparse)
  (StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
-> Encode
     (Closed Sparse)
     (OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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)
  (OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OSet (Credential Guard))
-> Encode
     (Closed Sparse)
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (Credential Guard) -> Bool)
-> Encode (Closed Sparse) (OSet (Credential Guard))
-> Encode (Closed Sparse) (OSet (Credential Guard))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (Credential Guard) -> Bool
forall a. OSet a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Word
-> Encode (Closed Dense) (OSet (Credential Guard))
-> Encode (Closed Sparse) (OSet (Credential Guard))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
14 (OSet (Credential Guard)
-> Encode (Closed Dense) (OSet (Credential Guard))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (Credential Guard)
dtbrGuards))
        Encode
  (Closed Sparse)
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) MultiAsset
-> Encode
     (Closed Sparse)
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrMint))
        Encode
  (Closed Sparse)
  (StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe ScriptIntegrityHash)
-> Encode
     (Closed Sparse)
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrScriptIntegrityHash
        Encode
  (Closed Sparse)
  (StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe TxAuxDataHash)
-> Encode
     (Closed Sparse)
     (StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrAuxDataHash
        Encode
  (Closed Sparse)
  (StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe Network)
-> Encode
     (Closed Sparse)
     (VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
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
dtbrNetworkId
        Encode
  (Closed Sparse)
  (VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (VotingProcedures era)
-> Encode
     (Closed Sparse)
     (OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx era)
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (VotingProcedures era -> Bool)
-> Encode (Closed Sparse) (VotingProcedures era)
-> Encode (Closed Sparse) (VotingProcedures era)
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit (Map Voter (Map GovActionId (VotingProcedure era)) -> Bool
forall a. Map Voter a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map Voter (Map GovActionId (VotingProcedure era)) -> Bool)
-> (VotingProcedures era
    -> Map Voter (Map GovActionId (VotingProcedure era)))
-> VotingProcedures era
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
forall era.
VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
unVotingProcedures) (Word
-> Encode (Closed Dense) (VotingProcedures era)
-> Encode (Closed Sparse) (VotingProcedures era)
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
19 (VotingProcedures era
-> Encode (Closed Dense) (VotingProcedures era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To VotingProcedures era
dtbrVotingProcedures))
        Encode
  (Closed Sparse)
  (OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx era)
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
-> Encode
     (Closed Sparse)
     (StrictMaybe Coin
      -> Coin -> OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (ProposalProcedure era) -> Bool)
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (ProposalProcedure era) -> Bool
forall a. OSet a -> Bool
OSet.null (Word
-> Encode (Closed Dense) (OSet (ProposalProcedure era))
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
20 (OSet (ProposalProcedure era)
-> Encode (Closed Dense) (OSet (ProposalProcedure era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (ProposalProcedure era)
dtbrProposalProcedures))
        Encode
  (Closed Sparse)
  (StrictMaybe Coin
   -> Coin -> OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe Coin)
-> Encode
     (Closed Sparse)
     (Coin -> OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw l era)
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
dtbrCurrentTreasuryValue
        Encode
  (Closed Sparse)
  (Coin -> OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) Coin
-> Encode
     (Closed Sparse)
     (OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw l era)
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
dtbrTreasuryDonation)
        Encode
  (Closed Sparse)
  (OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OMap TxId (Tx SubTx era))
-> Encode (Closed Sparse) (DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OMap TxId (Tx SubTx era) -> Bool)
-> Encode (Closed Sparse) (OMap TxId (Tx SubTx era))
-> Encode (Closed Sparse) (OMap TxId (Tx SubTx era))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OMap TxId (Tx SubTx era) -> Bool
forall a. OMap TxId a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Word
-> Encode (Closed Dense) (OMap TxId (Tx SubTx era))
-> Encode (Closed Sparse) (OMap TxId (Tx SubTx era))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
23 (Encode (Closed Dense) (OMap TxId (Tx SubTx era))
 -> Encode (Closed Sparse) (OMap TxId (Tx SubTx era)))
-> Encode (Closed Dense) (OMap TxId (Tx SubTx era))
-> Encode (Closed Sparse) (OMap TxId (Tx SubTx era))
forall a b. (a -> b) -> a -> b
$ OMap TxId (Tx SubTx era)
-> Encode (Closed Dense) (OMap TxId (Tx SubTx era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OMap TxId (Tx SubTx era)
dtbrSubTransactions)
encodeTxBodyRaw DijkstraSubTxBodyRaw {OSet (TxCert era)
OSet (ProposalProcedure era)
OSet (Credential Guard)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe Coin
StrictMaybe Network
ValidityInterval
Withdrawals
VotingProcedures era
Coin
MultiAsset
StrictSeq (Sized (TxOut era))
dstbrSpendInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrReferenceInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrOutputs :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictSeq (Sized (TxOut era))
dstbrCerts :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (TxCert era)
dstbrWithdrawals :: forall era. DijkstraTxBodyRaw SubTx era -> Withdrawals
dstbrVldt :: forall era. DijkstraTxBodyRaw SubTx era -> ValidityInterval
dstbrGuards :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (Credential Guard)
dstbrMint :: forall era. DijkstraTxBodyRaw SubTx era -> MultiAsset
dstbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe ScriptIntegrityHash
dstbrAuxDataHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe TxAuxDataHash
dstbrNetworkId :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Network
dstbrVotingProcedures :: forall era. DijkstraTxBodyRaw SubTx era -> VotingProcedures era
dstbrProposalProcedures :: forall era.
DijkstraTxBodyRaw SubTx era -> OSet (ProposalProcedure era)
dstbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Coin
dstbrTreasuryDonation :: forall era. DijkstraTxBodyRaw SubTx era -> Coin
dstbrSpendInputs :: Set TxIn
dstbrReferenceInputs :: Set TxIn
dstbrOutputs :: StrictSeq (Sized (TxOut era))
dstbrCerts :: OSet (TxCert era)
dstbrWithdrawals :: Withdrawals
dstbrVldt :: ValidityInterval
dstbrGuards :: OSet (Credential Guard)
dstbrMint :: MultiAsset
dstbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dstbrAuxDataHash :: StrictMaybe TxAuxDataHash
dstbrNetworkId :: StrictMaybe Network
dstbrVotingProcedures :: VotingProcedures era
dstbrProposalProcedures :: OSet (ProposalProcedure era)
dstbrCurrentTreasuryValue :: StrictMaybe Coin
dstbrTreasuryDonation :: Coin
..} =
  let ValidityInterval StrictMaybe SlotNo
bot StrictMaybe SlotNo
top = ValidityInterval
dstbrVldt
   in (Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (TxOut era))
 -> StrictMaybe SlotNo
 -> OSet (TxCert era)
 -> Withdrawals
 -> StrictMaybe SlotNo
 -> OSet (Credential Guard)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures era
 -> OSet (ProposalProcedure era)
 -> StrictMaybe Coin
 -> Coin
 -> DijkstraTxBodyRaw l era)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (TxOut era))
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
forall t. t -> Encode (Closed Sparse) t
Keyed
        ( \Set TxIn
i Set TxIn
ri StrictSeq (Sized (TxOut era))
o StrictMaybe SlotNo
t OSet (TxCert era)
c Withdrawals
w StrictMaybe SlotNo
b ->
            Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> OSet (TxCert era)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> DijkstraTxBodyRaw SubTx era
forall era.
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> OSet (TxCert era)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> DijkstraTxBodyRaw SubTx era
DijkstraSubTxBodyRaw Set TxIn
i Set TxIn
ri StrictSeq (Sized (TxOut era))
o OSet (TxCert era)
c Withdrawals
w (StrictMaybe SlotNo -> StrictMaybe SlotNo -> ValidityInterval
ValidityInterval StrictMaybe SlotNo
b StrictMaybe SlotNo
t)
        )
        Encode
  (Closed Sparse)
  (Set TxIn
   -> Set TxIn
   -> StrictSeq (Sized (TxOut era))
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (Set TxIn
      -> StrictSeq (Sized (TxOut era))
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrSpendInputs)
        Encode
  (Closed Sparse)
  (Set TxIn
   -> StrictSeq (Sized (TxOut era))
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (Set TxIn)
-> Encode
     (Closed Sparse)
     (StrictSeq (Sized (TxOut era))
      -> StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrReferenceInputs))
        Encode
  (Closed Sparse)
  (StrictSeq (Sized (TxOut era))
   -> StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictSeq (Sized (TxOut era)))
-> Encode
     (Closed Sparse)
     (StrictMaybe SlotNo
      -> OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Word
-> Encode (Closed Dense) (StrictSeq (Sized (TxOut era)))
-> Encode (Closed Sparse) (StrictSeq (Sized (TxOut era)))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
1 (StrictSeq (Sized (TxOut era))
-> Encode (Closed Dense) (StrictSeq (Sized (TxOut era)))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictSeq (Sized (TxOut era))
dstbrOutputs)
        Encode
  (Closed Sparse)
  (StrictMaybe SlotNo
   -> OSet (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
-> Encode
     (Closed Sparse)
     (OSet (TxCert era)
      -> Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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 (TxCert era)
   -> Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OSet (TxCert era))
-> Encode
     (Closed Sparse)
     (Withdrawals
      -> StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (TxCert era) -> Bool)
-> Encode (Closed Sparse) (OSet (TxCert era))
-> Encode (Closed Sparse) (OSet (TxCert era))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (TxCert era) -> Bool
forall a. OSet a -> Bool
OSet.null (Word
-> Encode (Closed Dense) (OSet (TxCert era))
-> Encode (Closed Sparse) (OSet (TxCert era))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
4 (OSet (TxCert era) -> Encode (Closed Dense) (OSet (TxCert era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (TxCert era)
dstbrCerts))
        Encode
  (Closed Sparse)
  (Withdrawals
   -> StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) Withdrawals
-> Encode
     (Closed Sparse)
     (StrictMaybe SlotNo
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrWithdrawals))
        Encode
  (Closed Sparse)
  (StrictMaybe SlotNo
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe SlotNo)
-> Encode
     (Closed Sparse)
     (OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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)
  (OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OSet (Credential Guard))
-> Encode
     (Closed Sparse)
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (Credential Guard) -> Bool)
-> Encode (Closed Sparse) (OSet (Credential Guard))
-> Encode (Closed Sparse) (OSet (Credential Guard))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (Credential Guard) -> Bool
forall a. OSet a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Word
-> Encode (Closed Dense) (OSet (Credential Guard))
-> Encode (Closed Sparse) (OSet (Credential Guard))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
14 (OSet (Credential Guard)
-> Encode (Closed Dense) (OSet (Credential Guard))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (Credential Guard)
dstbrGuards))
        Encode
  (Closed Sparse)
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) MultiAsset
-> Encode
     (Closed Sparse)
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrMint))
        Encode
  (Closed Sparse)
  (StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe ScriptIntegrityHash)
-> Encode
     (Closed Sparse)
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrScriptIntegrityHash
        Encode
  (Closed Sparse)
  (StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe TxAuxDataHash)
-> Encode
     (Closed Sparse)
     (StrictMaybe Network
      -> VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrAuxDataHash
        Encode
  (Closed Sparse)
  (StrictMaybe Network
   -> VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe Network)
-> Encode
     (Closed Sparse)
     (VotingProcedures era
      -> OSet (ProposalProcedure era)
      -> StrictMaybe Coin
      -> Coin
      -> DijkstraTxBodyRaw l era)
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
dstbrNetworkId
        Encode
  (Closed Sparse)
  (VotingProcedures era
   -> OSet (ProposalProcedure era)
   -> StrictMaybe Coin
   -> Coin
   -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (VotingProcedures era)
-> Encode
     (Closed Sparse)
     (OSet (ProposalProcedure era)
      -> StrictMaybe Coin -> Coin -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (VotingProcedures era -> Bool)
-> Encode (Closed Sparse) (VotingProcedures era)
-> Encode (Closed Sparse) (VotingProcedures era)
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit (Map Voter (Map GovActionId (VotingProcedure era)) -> Bool
forall a. Map Voter a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Map Voter (Map GovActionId (VotingProcedure era)) -> Bool)
-> (VotingProcedures era
    -> Map Voter (Map GovActionId (VotingProcedure era)))
-> VotingProcedures era
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
forall era.
VotingProcedures era
-> Map Voter (Map GovActionId (VotingProcedure era))
unVotingProcedures) (Word
-> Encode (Closed Dense) (VotingProcedures era)
-> Encode (Closed Sparse) (VotingProcedures era)
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
19 (VotingProcedures era
-> Encode (Closed Dense) (VotingProcedures era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To VotingProcedures era
dstbrVotingProcedures))
        Encode
  (Closed Sparse)
  (OSet (ProposalProcedure era)
   -> StrictMaybe Coin -> Coin -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
-> Encode
     (Closed Sparse)
     (StrictMaybe Coin -> Coin -> DijkstraTxBodyRaw l era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (OSet (ProposalProcedure era) -> Bool)
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
forall t.
(t -> Bool) -> Encode (Closed Sparse) t -> Encode (Closed Sparse) t
Omit OSet (ProposalProcedure era) -> Bool
forall a. OSet a -> Bool
OSet.null (Word
-> Encode (Closed Dense) (OSet (ProposalProcedure era))
-> Encode (Closed Sparse) (OSet (ProposalProcedure era))
forall t.
Word -> Encode (Closed Dense) t -> Encode (Closed Sparse) t
Key Word
20 (OSet (ProposalProcedure era)
-> Encode (Closed Dense) (OSet (ProposalProcedure era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To OSet (ProposalProcedure era)
dstbrProposalProcedures))
        Encode
  (Closed Sparse)
  (StrictMaybe Coin -> Coin -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) (StrictMaybe Coin)
-> Encode (Closed Sparse) (Coin -> DijkstraTxBodyRaw l era)
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
dstbrCurrentTreasuryValue
        Encode (Closed Sparse) (Coin -> DijkstraTxBodyRaw l era)
-> Encode (Closed Sparse) Coin
-> Encode (Closed Sparse) (DijkstraTxBodyRaw l era)
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
dstbrTreasuryDonation)

instance
  ( EraTxBody era
  , EncCBOR (Tx SubTx era)
  ) =>
  EncCBOR (DijkstraTxBodyRaw l era)
  where
  encCBOR :: DijkstraTxBodyRaw l era -> Encoding
encCBOR = Encode (Closed Sparse) (DijkstraTxBodyRaw l era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Sparse) (DijkstraTxBodyRaw l era) -> Encoding)
-> (DijkstraTxBodyRaw l era
    -> Encode (Closed Sparse) (DijkstraTxBodyRaw l era))
-> DijkstraTxBodyRaw l era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraTxBodyRaw l era
-> Encode (Closed Sparse) (DijkstraTxBodyRaw l era)
forall era (l :: TxLevel).
(EraTxBody era, EncCBOR (Tx SubTx era)) =>
DijkstraTxBodyRaw l era
-> Encode (Closed Sparse) (DijkstraTxBodyRaw l era)
encodeTxBodyRaw

deriving instance
  ( Typeable l
  , Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  NoThunks (TxBody l DijkstraEra)

deriving instance
  ( Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  Eq (TxBody l DijkstraEra)

deriving newtype instance
  ( NFData (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  NFData (TxBody l DijkstraEra)

deriving instance
  ( Show (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  Show (TxBody l DijkstraEra)

pattern DijkstraTxBody ::
  ( EncCBOR (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  ) =>
  Set TxIn ->
  Set TxIn ->
  Set TxIn ->
  StrictSeq (Sized (TxOut DijkstraEra)) ->
  StrictMaybe (Sized (TxOut DijkstraEra)) ->
  StrictMaybe Coin ->
  OSet.OSet (TxCert DijkstraEra) ->
  Withdrawals ->
  Coin ->
  ValidityInterval ->
  OSet (Credential Guard) ->
  MultiAsset ->
  StrictMaybe ScriptIntegrityHash ->
  StrictMaybe TxAuxDataHash ->
  StrictMaybe Network ->
  VotingProcedures DijkstraEra ->
  OSet.OSet (ProposalProcedure DijkstraEra) ->
  StrictMaybe Coin ->
  Coin ->
  OMap TxId (Tx SubTx DijkstraEra) ->
  TxBody TopTx DijkstraEra
pattern $mDijkstraTxBody :: forall {r}.
(EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra
-> (Set TxIn
    -> Set TxIn
    -> Set TxIn
    -> StrictSeq (Sized (TxOut DijkstraEra))
    -> StrictMaybe (Sized (TxOut DijkstraEra))
    -> StrictMaybe Coin
    -> OSet (TxCert DijkstraEra)
    -> Withdrawals
    -> Coin
    -> ValidityInterval
    -> OSet (Credential Guard)
    -> MultiAsset
    -> StrictMaybe ScriptIntegrityHash
    -> StrictMaybe TxAuxDataHash
    -> StrictMaybe Network
    -> VotingProcedures DijkstraEra
    -> OSet (ProposalProcedure DijkstraEra)
    -> StrictMaybe Coin
    -> Coin
    -> OMap TxId (Tx SubTx DijkstraEra)
    -> r)
-> ((# #) -> r)
-> r
$bDijkstraTxBody :: (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> StrictMaybe (Sized (TxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx DijkstraEra)
-> TxBody TopTx DijkstraEra
DijkstraTxBody
  { (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> Set TxIn
dtbSpendInputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> Set TxIn
dtbCollateralInputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> Set TxIn
dtbReferenceInputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictSeq (Sized (TxOut DijkstraEra))
dtbOutputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictMaybe (Sized (TxOut DijkstraEra))
dtbCollateralReturn
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictMaybe Coin
dtbTotalCollateral
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> OSet (TxCert DijkstraEra)
dtbCerts
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> Withdrawals
dtbWithdrawals
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> Coin
dtbTxfee
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> ValidityInterval
dtbVldt
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> OSet (Credential Guard)
dtbGuards
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> MultiAsset
dtbMint
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictMaybe ScriptIntegrityHash
dtbScriptIntegrityHash
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictMaybe TxAuxDataHash
dtbAdHash
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictMaybe Network
dtbTxNetworkId
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> VotingProcedures DijkstraEra
dtbVotingProcedures
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> OSet (ProposalProcedure DijkstraEra)
dtbProposalProcedures
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> StrictMaybe Coin
dtbCurrentTreasuryValue
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> Coin
dtbTreasuryDonation
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody TopTx DijkstraEra -> OMap TxId (Tx SubTx DijkstraEra)
dtbSubTransactions
  } <-
  ( getMemoRawType ->
      DijkstraTxBodyRaw
        { dtbrSpendInputs = dtbSpendInputs
        , dtbrCollateralInputs = dtbCollateralInputs
        , dtbrReferenceInputs = dtbReferenceInputs
        , dtbrOutputs = dtbOutputs
        , dtbrCollateralReturn = dtbCollateralReturn
        , dtbrTotalCollateral = dtbTotalCollateral
        , dtbrCerts = dtbCerts
        , dtbrWithdrawals = dtbWithdrawals
        , dtbrFee = dtbTxfee
        , dtbrVldt = dtbVldt
        , dtbrGuards = dtbGuards
        , dtbrMint = dtbMint
        , dtbrScriptIntegrityHash = dtbScriptIntegrityHash
        , dtbrAuxDataHash = dtbAdHash
        , dtbrNetworkId = dtbTxNetworkId
        , dtbrVotingProcedures = dtbVotingProcedures
        , dtbrProposalProcedures = dtbProposalProcedures
        , dtbrCurrentTreasuryValue = dtbCurrentTreasuryValue
        , dtbrTreasuryDonation = dtbTreasuryDonation
        , dtbrSubTransactions = dtbSubTransactions
        }
    )
  where
    DijkstraTxBody
      Set TxIn
inputsX
      Set TxIn
collateralX
      Set TxIn
referenceInputsX
      StrictSeq (Sized (TxOut DijkstraEra))
outputsX
      StrictMaybe (Sized (TxOut DijkstraEra))
collateralReturnX
      StrictMaybe Coin
totalCollateralX
      OSet (TxCert DijkstraEra)
certsX
      Withdrawals
withdrawalsX
      Coin
txfeeX
      ValidityInterval
vldtX
      OSet (Credential Guard)
guards
      MultiAsset
mintX
      StrictMaybe ScriptIntegrityHash
scriptIntegrityHashX
      StrictMaybe TxAuxDataHash
adHashX
      StrictMaybe Network
txnetworkidX
      VotingProcedures DijkstraEra
votingProcedures
      OSet (ProposalProcedure DijkstraEra)
proposalProcedures
      StrictMaybe Coin
currentTreasuryValue
      Coin
treasuryDonation
      OMap TxId (Tx SubTx DijkstraEra)
subTransactions =
        forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @DijkstraEra (RawType (TxBody TopTx DijkstraEra) -> TxBody TopTx DijkstraEra)
-> RawType (TxBody TopTx DijkstraEra) -> TxBody TopTx DijkstraEra
forall a b. (a -> b) -> a -> b
$
          Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> StrictMaybe (Sized (TxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx DijkstraEra)
-> DijkstraTxBodyRaw TopTx DijkstraEra
forall era.
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> StrictMaybe (Sized (TxOut era))
-> StrictMaybe Coin
-> OSet (TxCert era)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx era)
-> DijkstraTxBodyRaw TopTx era
DijkstraTxBodyRaw
            Set TxIn
inputsX
            Set TxIn
collateralX
            Set TxIn
referenceInputsX
            StrictSeq (Sized (TxOut DijkstraEra))
outputsX
            StrictMaybe (Sized (TxOut DijkstraEra))
collateralReturnX
            StrictMaybe Coin
totalCollateralX
            OSet (TxCert DijkstraEra)
certsX
            Withdrawals
withdrawalsX
            Coin
txfeeX
            ValidityInterval
vldtX
            OSet (Credential Guard)
guards
            MultiAsset
mintX
            StrictMaybe ScriptIntegrityHash
scriptIntegrityHashX
            StrictMaybe TxAuxDataHash
adHashX
            StrictMaybe Network
txnetworkidX
            VotingProcedures DijkstraEra
votingProcedures
            OSet (ProposalProcedure DijkstraEra)
proposalProcedures
            StrictMaybe Coin
currentTreasuryValue
            Coin
treasuryDonation
            OMap TxId (Tx SubTx DijkstraEra)
subTransactions

pattern DijkstraSubTxBody ::
  ( EncCBOR (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  ) =>
  Set TxIn ->
  Set TxIn ->
  StrictSeq (Sized (TxOut DijkstraEra)) ->
  OSet.OSet (TxCert DijkstraEra) ->
  Withdrawals ->
  ValidityInterval ->
  OSet (Credential Guard) ->
  MultiAsset ->
  StrictMaybe ScriptIntegrityHash ->
  StrictMaybe TxAuxDataHash ->
  StrictMaybe Network ->
  VotingProcedures DijkstraEra ->
  OSet.OSet (ProposalProcedure DijkstraEra) ->
  StrictMaybe Coin ->
  Coin ->
  TxBody SubTx DijkstraEra
pattern $mDijkstraSubTxBody :: forall {r}.
(EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra
-> (Set TxIn
    -> Set TxIn
    -> StrictSeq (Sized (TxOut DijkstraEra))
    -> OSet (TxCert DijkstraEra)
    -> Withdrawals
    -> ValidityInterval
    -> OSet (Credential Guard)
    -> MultiAsset
    -> StrictMaybe ScriptIntegrityHash
    -> StrictMaybe TxAuxDataHash
    -> StrictMaybe Network
    -> VotingProcedures DijkstraEra
    -> OSet (ProposalProcedure DijkstraEra)
    -> StrictMaybe Coin
    -> Coin
    -> r)
-> ((# #) -> r)
-> r
$bDijkstraSubTxBody :: (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> TxBody SubTx DijkstraEra
DijkstraSubTxBody
  { (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> Set TxIn
dstbSpendInputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> Set TxIn
dstbReferenceInputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> StrictSeq (Sized (TxOut DijkstraEra))
dstbOutputs
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> OSet (TxCert DijkstraEra)
dstbCerts
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> Withdrawals
dstbWithdrawals
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> ValidityInterval
dstbVldt
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> OSet (Credential Guard)
dstbGuards
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> MultiAsset
dstbMint
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> StrictMaybe ScriptIntegrityHash
dstbScriptIntegrityHash
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> StrictMaybe TxAuxDataHash
dstbAdHash
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> StrictMaybe Network
dstbTxNetworkId
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> VotingProcedures DijkstraEra
dstbVotingProcedures
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> OSet (ProposalProcedure DijkstraEra)
dstbProposalProcedures
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> StrictMaybe Coin
dstbCurrentTreasuryValue
  , (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra)) =>
TxBody SubTx DijkstraEra -> Coin
dstbTreasuryDonation
  } <-
  ( getMemoRawType ->
      DijkstraSubTxBodyRaw
        { dstbrSpendInputs = dstbSpendInputs
        , dstbrReferenceInputs = dstbReferenceInputs
        , dstbrOutputs = dstbOutputs
        , dstbrCerts = dstbCerts
        , dstbrWithdrawals = dstbWithdrawals
        , dstbrVldt = dstbVldt
        , dstbrGuards = dstbGuards
        , dstbrMint = dstbMint
        , dstbrScriptIntegrityHash = dstbScriptIntegrityHash
        , dstbrAuxDataHash = dstbAdHash
        , dstbrNetworkId = dstbTxNetworkId
        , dstbrVotingProcedures = dstbVotingProcedures
        , dstbrProposalProcedures = dstbProposalProcedures
        , dstbrCurrentTreasuryValue = dstbCurrentTreasuryValue
        , dstbrTreasuryDonation = dstbTreasuryDonation
        }
    )
  where
    DijkstraSubTxBody
      Set TxIn
inputsX
      Set TxIn
referenceInputsX
      StrictSeq (Sized (TxOut DijkstraEra))
outputsX
      OSet (TxCert DijkstraEra)
certsX
      Withdrawals
withdrawalsX
      ValidityInterval
vldtX
      OSet (Credential Guard)
guards
      MultiAsset
mintX
      StrictMaybe ScriptIntegrityHash
scriptIntegrityHashX
      StrictMaybe TxAuxDataHash
adHashX
      StrictMaybe Network
txnetworkidX
      VotingProcedures DijkstraEra
votingProcedures
      OSet (ProposalProcedure DijkstraEra)
proposalProcedures
      StrictMaybe Coin
currentTreasuryValue
      Coin
treasuryDonation =
        forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @DijkstraEra (RawType (TxBody SubTx DijkstraEra) -> TxBody SubTx DijkstraEra)
-> RawType (TxBody SubTx DijkstraEra) -> TxBody SubTx DijkstraEra
forall a b. (a -> b) -> a -> b
$
          Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> DijkstraTxBodyRaw SubTx DijkstraEra
forall era.
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut era))
-> OSet (TxCert era)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictMaybe Coin
-> Coin
-> DijkstraTxBodyRaw SubTx era
DijkstraSubTxBodyRaw
            Set TxIn
inputsX
            Set TxIn
referenceInputsX
            StrictSeq (Sized (TxOut DijkstraEra))
outputsX
            OSet (TxCert DijkstraEra)
certsX
            Withdrawals
withdrawalsX
            ValidityInterval
vldtX
            OSet (Credential Guard)
guards
            MultiAsset
mintX
            StrictMaybe ScriptIntegrityHash
scriptIntegrityHashX
            StrictMaybe TxAuxDataHash
adHashX
            StrictMaybe Network
txnetworkidX
            VotingProcedures DijkstraEra
votingProcedures
            OSet (ProposalProcedure DijkstraEra)
proposalProcedures
            StrictMaybe Coin
currentTreasuryValue
            Coin
treasuryDonation

{-# COMPLETE DijkstraTxBody, DijkstraSubTxBody #-}

instance Memoized (TxBody l DijkstraEra) where
  type RawType (TxBody l DijkstraEra) = DijkstraTxBodyRaw l DijkstraEra

deriving newtype instance EncCBOR (TxBody l DijkstraEra)

type instance MemoHashIndex (DijkstraTxBodyRaw l DijkstraEra) = EraIndependentTxBody

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

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

deriving via
  Mem (DijkstraTxBodyRaw l DijkstraEra)
  instance
    ( Typeable l
    , Eq (Tx SubTx DijkstraEra)
    , NFData (Tx SubTx DijkstraEra)
    , Show (Tx SubTx DijkstraEra)
    , EncCBOR (Tx SubTx DijkstraEra)
    ) =>
    DecCBOR (Annotator (TxBody l DijkstraEra))

instance HasEraTxLevel DijkstraTxBodyRaw DijkstraEra where
  toSTxLevel :: forall (l :: TxLevel).
DijkstraTxBodyRaw l DijkstraEra -> STxLevel l DijkstraEra
toSTxLevel DijkstraTxBodyRaw {} = STxLevel l DijkstraEra
STxBothLevels TopTx DijkstraEra
forall era. STxBothLevels TopTx era
STopTx
  toSTxLevel DijkstraSubTxBodyRaw {} = STxLevel l DijkstraEra
STxBothLevels SubTx DijkstraEra
forall era. STxBothLevels SubTx era
SSubTx

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

inputsDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (Set TxIn)
inputsDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
inputsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> Set TxIn)
-> (DijkstraTxBodyRaw l era -> Set TxIn -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (Set TxIn)
     (Set TxIn)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {Set TxIn
dtbrSpendInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrSpendInputs :: Set TxIn
dtbrSpendInputs} -> Set TxIn
dtbrSpendInputs
        DijkstraSubTxBodyRaw {Set TxIn
dstbrSpendInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrSpendInputs :: Set TxIn
dstbrSpendInputs} -> Set TxIn
dstbrSpendInputs
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \Set TxIn
y -> DijkstraTxBodyRaw l era
x {dtbrSpendInputs = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \Set TxIn
y -> DijkstraTxBodyRaw l era
x {dstbrSpendInputs = y}
    )

outputsDijkstraTxBodyRawL ::
  forall era l.
  EraTxOut era =>
  Lens' (DijkstraTxBodyRaw l era) (StrictSeq (TxOut era))
outputsDijkstraTxBodyRawL :: forall era (l :: TxLevel).
EraTxOut era =>
Lens' (DijkstraTxBodyRaw l era) (StrictSeq (TxOut era))
outputsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> StrictSeq (TxOut era))
-> (DijkstraTxBodyRaw l era
    -> StrictSeq (TxOut era) -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (StrictSeq (TxOut era))
     (StrictSeq (TxOut era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {StrictSeq (Sized (TxOut era))
dtbrOutputs :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
dtbrOutputs :: StrictSeq (Sized (TxOut era))
dtbrOutputs} -> Sized (TxOut era) -> TxOut era
forall a. Sized a -> a
sizedValue (Sized (TxOut era) -> TxOut era)
-> StrictSeq (Sized (TxOut era)) -> StrictSeq (TxOut era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StrictSeq (Sized (TxOut era))
dtbrOutputs
        DijkstraSubTxBodyRaw {StrictSeq (Sized (TxOut era))
dstbrOutputs :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictSeq (Sized (TxOut era))
dstbrOutputs :: StrictSeq (Sized (TxOut era))
dstbrOutputs} -> Sized (TxOut era) -> TxOut era
forall a. Sized a -> a
sizedValue (Sized (TxOut era) -> TxOut era)
-> StrictSeq (Sized (TxOut era)) -> StrictSeq (TxOut era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StrictSeq (Sized (TxOut era))
dstbrOutputs
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \StrictSeq (TxOut era)
y -> DijkstraTxBodyRaw l era
x {dtbrOutputs = mkSized (eraProtVerLow @era) <$> y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \StrictSeq (TxOut era)
y -> DijkstraTxBodyRaw l era
x {dstbrOutputs = mkSized (eraProtVerLow @era) <$> y}
    )

feeDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw TopTx era) Coin
feeDijkstraTxBodyRawL :: forall era (f :: * -> *).
Functor f =>
(Coin -> f Coin)
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
feeDijkstraTxBodyRawL = (DijkstraTxBodyRaw TopTx era -> Coin)
-> (DijkstraTxBodyRaw TopTx era
    -> Coin -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     Coin
     Coin
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens DijkstraTxBodyRaw TopTx era -> Coin
forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrFee (\DijkstraTxBodyRaw TopTx era
txb Coin
x -> DijkstraTxBodyRaw TopTx era
txb {dtbrFee = x})

auxDataHashDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (StrictMaybe TxAuxDataHash)
auxDataHashDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe TxAuxDataHash -> f (StrictMaybe TxAuxDataHash))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
auxDataHashDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> StrictMaybe TxAuxDataHash)
-> (DijkstraTxBodyRaw l era
    -> StrictMaybe TxAuxDataHash -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (StrictMaybe TxAuxDataHash)
     (StrictMaybe TxAuxDataHash)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {StrictMaybe TxAuxDataHash
dtbrAuxDataHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
dtbrAuxDataHash :: StrictMaybe TxAuxDataHash
dtbrAuxDataHash} -> StrictMaybe TxAuxDataHash
dtbrAuxDataHash
        DijkstraSubTxBodyRaw {StrictMaybe TxAuxDataHash
dstbrAuxDataHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe TxAuxDataHash
dstbrAuxDataHash :: StrictMaybe TxAuxDataHash
dstbrAuxDataHash} -> StrictMaybe TxAuxDataHash
dstbrAuxDataHash
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \StrictMaybe TxAuxDataHash
y -> DijkstraTxBodyRaw l era
x {dtbrAuxDataHash = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \StrictMaybe TxAuxDataHash
y -> DijkstraTxBodyRaw l era
x {dstbrAuxDataHash = y}
    )

certsDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (OSet (TxCert era))
certsDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (TxCert era) -> f (OSet (TxCert era)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
certsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> OSet (TxCert era))
-> (DijkstraTxBodyRaw l era
    -> OSet (TxCert era) -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (OSet (TxCert era))
     (OSet (TxCert era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {OSet (TxCert era)
dtbrCerts :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (TxCert era)
dtbrCerts :: OSet (TxCert era)
dtbrCerts} -> OSet (TxCert era)
dtbrCerts
        DijkstraSubTxBodyRaw {OSet (TxCert era)
dstbrCerts :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (TxCert era)
dstbrCerts :: OSet (TxCert era)
dstbrCerts} -> OSet (TxCert era)
dstbrCerts
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \OSet (TxCert era)
y -> DijkstraTxBodyRaw l era
x {dtbrCerts = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \OSet (TxCert era)
y -> DijkstraTxBodyRaw l era
x {dstbrCerts = y}
    )

withdrawalsDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) Withdrawals
withdrawalsDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Withdrawals -> f Withdrawals)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
withdrawalsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> Withdrawals)
-> (DijkstraTxBodyRaw l era
    -> Withdrawals -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     Withdrawals
     Withdrawals
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {Withdrawals
dtbrWithdrawals :: forall era. DijkstraTxBodyRaw TopTx era -> Withdrawals
dtbrWithdrawals :: Withdrawals
dtbrWithdrawals} -> Withdrawals
dtbrWithdrawals
        DijkstraSubTxBodyRaw {Withdrawals
dstbrWithdrawals :: forall era. DijkstraTxBodyRaw SubTx era -> Withdrawals
dstbrWithdrawals :: Withdrawals
dstbrWithdrawals} -> Withdrawals
dstbrWithdrawals
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \Withdrawals
y -> DijkstraTxBodyRaw l era
x {dtbrWithdrawals = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \Withdrawals
y -> DijkstraTxBodyRaw l era
x {dstbrWithdrawals = y}
    )

instance
  ( Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  EraTxBody DijkstraEra
  where
  newtype TxBody l DijkstraEra = MkDijkstraTxBody (MemoBytes (DijkstraTxBodyRaw l DijkstraEra))
    deriving ((forall x. TxBody l DijkstraEra -> Rep (TxBody l DijkstraEra) x)
-> (forall x. Rep (TxBody l DijkstraEra) x -> TxBody l DijkstraEra)
-> Generic (TxBody l DijkstraEra)
forall x. Rep (TxBody l DijkstraEra) x -> TxBody l DijkstraEra
forall x. TxBody l DijkstraEra -> Rep (TxBody l DijkstraEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (l :: TxLevel) x.
Rep (TxBody l DijkstraEra) x -> TxBody l DijkstraEra
forall (l :: TxLevel) x.
TxBody l DijkstraEra -> Rep (TxBody l DijkstraEra) x
$cfrom :: forall (l :: TxLevel) x.
TxBody l DijkstraEra -> Rep (TxBody l DijkstraEra) x
from :: forall x. TxBody l DijkstraEra -> Rep (TxBody l DijkstraEra) x
$cto :: forall (l :: TxLevel) x.
Rep (TxBody l DijkstraEra) x -> TxBody l DijkstraEra
to :: forall x. Rep (TxBody l DijkstraEra) x -> TxBody l DijkstraEra
Generic, TxBody l DijkstraEra -> Int
TxBody l DijkstraEra -> ByteString
(TxBody l DijkstraEra -> ByteString)
-> (TxBody l DijkstraEra -> Int)
-> (forall i. Proxy i -> TxBody l DijkstraEra -> SafeHash i)
-> SafeToHash (TxBody l DijkstraEra)
forall i. Proxy i -> TxBody l DijkstraEra -> SafeHash i
forall t.
(t -> ByteString)
-> (t -> Int)
-> (forall i. Proxy i -> t -> SafeHash i)
-> SafeToHash t
forall (l :: TxLevel). TxBody l DijkstraEra -> Int
forall (l :: TxLevel). TxBody l DijkstraEra -> ByteString
forall (l :: TxLevel) i.
Proxy i -> TxBody l DijkstraEra -> SafeHash i
$coriginalBytes :: forall (l :: TxLevel). TxBody l DijkstraEra -> ByteString
originalBytes :: TxBody l DijkstraEra -> ByteString
$coriginalBytesSize :: forall (l :: TxLevel). TxBody l DijkstraEra -> Int
originalBytesSize :: TxBody l DijkstraEra -> Int
$cmakeHashWithExplicitProxys :: forall (l :: TxLevel) i.
Proxy i -> TxBody l DijkstraEra -> SafeHash i
makeHashWithExplicitProxys :: forall i. Proxy i -> TxBody l DijkstraEra -> SafeHash i
SafeToHash, Typeable (TxBody l DijkstraEra)
Typeable (TxBody l DijkstraEra) =>
(TxBody l DijkstraEra -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
    -> Proxy (TxBody l DijkstraEra) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
    -> Proxy [TxBody l DijkstraEra] -> Size)
-> ToCBOR (TxBody l DijkstraEra)
TxBody l DijkstraEra -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l DijkstraEra] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l DijkstraEra) -> 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 DijkstraEra)
forall (l :: TxLevel).
Typeable l =>
TxBody l DijkstraEra -> Encoding
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l DijkstraEra] -> Size
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l DijkstraEra) -> Size
$ctoCBOR :: forall (l :: TxLevel).
Typeable l =>
TxBody l DijkstraEra -> Encoding
toCBOR :: TxBody l DijkstraEra -> Encoding
$cencodedSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l DijkstraEra) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (TxBody l DijkstraEra) -> Size
$cencodedListSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l DijkstraEra] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [TxBody l DijkstraEra] -> Size
ToCBOR)

  mkBasicTxBody :: forall (l :: TxLevel). Typeable l => TxBody l DijkstraEra
mkBasicTxBody = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @DijkstraEra (RawType (TxBody l DijkstraEra) -> TxBody l DijkstraEra)
-> RawType (TxBody l DijkstraEra) -> TxBody l DijkstraEra
forall a b. (a -> b) -> a -> b
$ (STxBothLevels l DijkstraEra -> DijkstraTxBodyRaw l DijkstraEra)
-> DijkstraTxBodyRaw l DijkstraEra
forall (l :: TxLevel) era a.
(Typeable l, HasCallStack) =>
(STxBothLevels l era -> a) -> a
withSTxBothLevels STxBothLevels l DijkstraEra -> DijkstraTxBodyRaw l DijkstraEra
forall era (l :: TxLevel).
EraTxBody era =>
STxBothLevels l era -> DijkstraTxBodyRaw l era
basicDijkstraTxBodyRaw

  inputsTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) (Set TxIn)
inputsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((Set TxIn -> f (Set TxIn))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (Set TxIn -> f (Set TxIn))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
inputsDijkstraTxBodyRawL
  {-# INLINE inputsTxBodyL #-}

  outputsTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictSeq (TxOut DijkstraEra))
outputsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((StrictSeq (BabbageTxOut DijkstraEra)
     -> f (StrictSeq (BabbageTxOut DijkstraEra)))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (StrictSeq (BabbageTxOut DijkstraEra)
    -> f (StrictSeq (BabbageTxOut DijkstraEra)))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictSeq (TxOut DijkstraEra)
 -> f (StrictSeq (TxOut DijkstraEra)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
(StrictSeq (BabbageTxOut DijkstraEra)
 -> f (StrictSeq (BabbageTxOut DijkstraEra)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall era (l :: TxLevel).
EraTxOut era =>
Lens' (DijkstraTxBodyRaw l era) (StrictSeq (TxOut era))
Lens'
  (DijkstraTxBodyRaw l DijkstraEra) (StrictSeq (TxOut DijkstraEra))
outputsDijkstraTxBodyRawL
  {-# INLINE outputsTxBodyL #-}

  feeTxBodyL :: Lens' (TxBody TopTx DijkstraEra) Coin
feeTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw TopTx DijkstraEra
  -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
 -> TxBody TopTx DijkstraEra -> f (TxBody TopTx DijkstraEra))
-> ((Coin -> f Coin)
    -> DijkstraTxBodyRaw TopTx DijkstraEra
    -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
-> (Coin -> f Coin)
-> TxBody TopTx DijkstraEra
-> f (TxBody TopTx DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Coin -> f Coin)
-> DijkstraTxBodyRaw TopTx DijkstraEra
-> f (DijkstraTxBodyRaw TopTx DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(Coin -> f Coin)
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
feeDijkstraTxBodyRawL
  {-# INLINE feeTxBodyL #-}

  auxDataHashTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe TxAuxDataHash)
auxDataHashTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((StrictMaybe TxAuxDataHash -> f (StrictMaybe TxAuxDataHash))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (StrictMaybe TxAuxDataHash -> f (StrictMaybe TxAuxDataHash))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe TxAuxDataHash -> f (StrictMaybe TxAuxDataHash))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe TxAuxDataHash -> f (StrictMaybe TxAuxDataHash))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
auxDataHashDijkstraTxBodyRawL
  {-# INLINE auxDataHashTxBodyL #-}

  spendableInputsTxBodyF :: forall (l :: TxLevel).
SimpleGetter (TxBody l DijkstraEra) (Set TxIn)
spendableInputsTxBodyF = (TxBody l DijkstraEra -> Set TxIn)
-> SimpleGetter (TxBody l DijkstraEra) (Set TxIn)
forall s a. (s -> a) -> SimpleGetter s a
to ((TxBody l DijkstraEra -> Set TxIn)
 -> SimpleGetter (TxBody l DijkstraEra) (Set TxIn))
-> (TxBody l DijkstraEra -> Set TxIn)
-> SimpleGetter (TxBody l DijkstraEra) (Set TxIn)
forall a b. (a -> b) -> a -> b
$ \TxBody l DijkstraEra
txBody ->
    TxBody l DijkstraEra
-> (TxBody TopTx DijkstraEra -> Set TxIn)
-> (TxBody SubTx DijkstraEra -> Set TxIn)
-> Set TxIn
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxBothLevels l era) =>
t l era -> (t TopTx era -> a) -> (t SubTx era -> a) -> a
withBothTxLevels TxBody l DijkstraEra
txBody (TxBody TopTx DijkstraEra
-> Getting (Set TxIn) (TxBody TopTx DijkstraEra) (Set TxIn)
-> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody TopTx DijkstraEra) (Set TxIn)
forall era.
BabbageEraTxBody era =>
SimpleGetter (TxBody TopTx era) (Set TxIn)
SimpleGetter (TxBody TopTx DijkstraEra) (Set TxIn)
babbageSpendableInputsTxBodyF) (TxBody SubTx DijkstraEra
-> Getting (Set TxIn) (TxBody SubTx DijkstraEra) (Set TxIn)
-> Set TxIn
forall s a. s -> Getting a s a -> a
^. Getting (Set TxIn) (TxBody SubTx DijkstraEra) (Set TxIn)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) (Set TxIn)
inputsTxBodyL)
  {-# INLINE spendableInputsTxBodyF #-}

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

  withdrawalsTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) Withdrawals
withdrawalsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((Withdrawals -> f Withdrawals)
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (Withdrawals -> f Withdrawals)
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Withdrawals -> f Withdrawals)
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Withdrawals -> f Withdrawals)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
withdrawalsDijkstraTxBodyRawL
  {-# INLINE withdrawalsTxBodyL #-}

  certsTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictSeq (TxCert DijkstraEra))
certsTxBodyL =
    forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra
      ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((StrictSeq (DijkstraTxCert DijkstraEra)
     -> f (StrictSeq (DijkstraTxCert DijkstraEra)))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (StrictSeq (DijkstraTxCert DijkstraEra)
    -> f (StrictSeq (DijkstraTxCert DijkstraEra)))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (TxCert DijkstraEra) -> f (OSet (TxCert DijkstraEra)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
(OSet (DijkstraTxCert DijkstraEra)
 -> f (OSet (DijkstraTxCert DijkstraEra)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (TxCert era) -> f (OSet (TxCert era)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
certsDijkstraTxBodyRawL
      ((OSet (DijkstraTxCert DijkstraEra)
  -> f (OSet (DijkstraTxCert DijkstraEra)))
 -> DijkstraTxBodyRaw l DijkstraEra
 -> f (DijkstraTxBodyRaw l DijkstraEra))
-> ((StrictSeq (DijkstraTxCert DijkstraEra)
     -> f (StrictSeq (DijkstraTxCert DijkstraEra)))
    -> OSet (DijkstraTxCert DijkstraEra)
    -> f (OSet (DijkstraTxCert DijkstraEra)))
-> (StrictSeq (DijkstraTxCert DijkstraEra)
    -> f (StrictSeq (DijkstraTxCert DijkstraEra)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (DijkstraTxCert DijkstraEra)
 -> StrictSeq (DijkstraTxCert DijkstraEra))
-> (OSet (DijkstraTxCert DijkstraEra)
    -> StrictSeq (DijkstraTxCert DijkstraEra)
    -> OSet (DijkstraTxCert DijkstraEra))
-> Lens
     (OSet (DijkstraTxCert DijkstraEra))
     (OSet (DijkstraTxCert DijkstraEra))
     (StrictSeq (DijkstraTxCert DijkstraEra))
     (StrictSeq (DijkstraTxCert DijkstraEra))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens OSet (DijkstraTxCert DijkstraEra)
-> StrictSeq (DijkstraTxCert DijkstraEra)
forall a. OSet a -> StrictSeq a
OSet.toStrictSeq (\OSet (DijkstraTxCert DijkstraEra)
_ StrictSeq (DijkstraTxCert DijkstraEra)
x -> StrictSeq (DijkstraTxCert DijkstraEra)
-> OSet (DijkstraTxCert DijkstraEra)
forall a. Ord a => StrictSeq a -> OSet a
OSet.fromStrictSeq StrictSeq (DijkstraTxCert DijkstraEra)
x)
  {-# INLINE certsTxBodyL #-}

  getTotalDepositsTxBody :: forall (l :: TxLevel).
PParams DijkstraEra
-> (KeyHash StakePool -> Bool) -> TxBody l DijkstraEra -> Coin
getTotalDepositsTxBody = PParams DijkstraEra
-> (KeyHash StakePool -> Bool) -> TxBody l DijkstraEra -> Coin
forall era (l :: TxLevel).
ConwayEraTxBody era =>
PParams era -> (KeyHash StakePool -> Bool) -> TxBody l era -> Coin
dijkstraTotalDepositsTxBody

  getTotalRefundsTxBody :: forall (l :: TxLevel).
PParams DijkstraEra
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> TxBody l DijkstraEra
-> Coin
getTotalRefundsTxBody PParams DijkstraEra
pp Credential Staking -> Maybe Coin
lookupStakingDeposit Credential DRepRole -> Maybe Coin
lookupDRepDeposit TxBody l DijkstraEra
txBody =
    PParams DijkstraEra
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> StrictSeq (TxCert DijkstraEra)
-> 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 DijkstraEra
-> (Credential Staking -> Maybe Coin)
-> (Credential DRepRole -> Maybe Coin)
-> f (TxCert DijkstraEra)
-> Coin
getTotalRefundsTxCerts PParams DijkstraEra
pp Credential Staking -> Maybe Coin
lookupStakingDeposit Credential DRepRole -> Maybe Coin
lookupDRepDeposit (TxBody l DijkstraEra
txBody TxBody l DijkstraEra
-> Getting
     (StrictSeq (DijkstraTxCert DijkstraEra))
     (TxBody l DijkstraEra)
     (StrictSeq (DijkstraTxCert DijkstraEra))
-> StrictSeq (DijkstraTxCert DijkstraEra)
forall s a. s -> Getting a s a -> a
^. (StrictSeq (TxCert DijkstraEra)
 -> Const
      (StrictSeq (DijkstraTxCert DijkstraEra))
      (StrictSeq (TxCert DijkstraEra)))
-> TxBody l DijkstraEra
-> Const
     (StrictSeq (DijkstraTxCert DijkstraEra)) (TxBody l DijkstraEra)
Getting
  (StrictSeq (DijkstraTxCert DijkstraEra))
  (TxBody l DijkstraEra)
  (StrictSeq (DijkstraTxCert DijkstraEra))
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictSeq (TxCert DijkstraEra))
certsTxBodyL)

upgradeGovAction ::
  forall era.
  (AlonzoEraPParams era, EraPParams (PreviousEra era)) =>
  GovAction (PreviousEra era) ->
  GovAction era
upgradeGovAction :: forall era.
(AlonzoEraPParams era, EraPParams (PreviousEra era)) =>
GovAction (PreviousEra era) -> GovAction era
upgradeGovAction (ParameterChange StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
x PParamsUpdate (PreviousEra era)
y StrictMaybe ScriptHash
z) =
  StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
ParameterChange (StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
forall a b. Coercible a b => a -> b
coerce StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
x) (UpgradePParams StrictMaybe era
-> PParamsUpdate (PreviousEra era) -> PParamsUpdate era
forall era.
(EraPParams era, EraPParams (PreviousEra era)) =>
UpgradePParams StrictMaybe era
-> PParamsUpdate (PreviousEra era) -> PParamsUpdate era
upgradePParamsUpdate (forall era. EraPParams era => UpgradePParams StrictMaybe era
emptyUpgradePParamsUpdate @era) PParamsUpdate (PreviousEra era)
y) StrictMaybe ScriptHash
z
upgradeGovAction (HardForkInitiation StrictMaybe (GovPurposeId 'HardForkPurpose)
x ProtVer
y) = StrictMaybe (GovPurposeId 'HardForkPurpose)
-> ProtVer -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose)
-> ProtVer -> GovAction era
HardForkInitiation (StrictMaybe (GovPurposeId 'HardForkPurpose)
-> StrictMaybe (GovPurposeId 'HardForkPurpose)
forall a b. Coercible a b => a -> b
coerce StrictMaybe (GovPurposeId 'HardForkPurpose)
x) ProtVer
y
upgradeGovAction (TreasuryWithdrawals Map RewardAccount Coin
x StrictMaybe ScriptHash
y) = Map RewardAccount Coin -> StrictMaybe ScriptHash -> GovAction era
forall era.
Map RewardAccount Coin -> StrictMaybe ScriptHash -> GovAction era
TreasuryWithdrawals Map RewardAccount Coin
x StrictMaybe ScriptHash
y
upgradeGovAction (NoConfidence StrictMaybe (GovPurposeId 'CommitteePurpose)
x) = StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
NoConfidence StrictMaybe (GovPurposeId 'CommitteePurpose)
x
upgradeGovAction (UpdateCommittee StrictMaybe (GovPurposeId 'CommitteePurpose)
x Set (Credential ColdCommitteeRole)
y Map (Credential ColdCommitteeRole) EpochNo
z UnitInterval
w) = StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
UpdateCommittee StrictMaybe (GovPurposeId 'CommitteePurpose)
x Set (Credential ColdCommitteeRole)
y Map (Credential ColdCommitteeRole) EpochNo
z UnitInterval
w
upgradeGovAction (NewConstitution StrictMaybe (GovPurposeId 'ConstitutionPurpose)
x Constitution (PreviousEra era)
y) = StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Constitution era -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Constitution era -> GovAction era
NewConstitution StrictMaybe (GovPurposeId 'ConstitutionPurpose)
x (Constitution (PreviousEra era) -> Constitution era
forall a b. Coercible a b => a -> b
coerce Constitution (PreviousEra era)
y)
upgradeGovAction GovAction (PreviousEra era)
InfoAction = GovAction era
forall era. GovAction era
InfoAction

upgradeProposals :: ProposalProcedure ConwayEra -> ProposalProcedure DijkstraEra
upgradeProposals :: ProposalProcedure ConwayEra -> ProposalProcedure DijkstraEra
upgradeProposals ProposalProcedure {Anchor
GovAction ConwayEra
Coin
RewardAccount
pProcDeposit :: Coin
pProcReturnAddr :: RewardAccount
pProcGovAction :: GovAction ConwayEra
pProcAnchor :: Anchor
pProcAnchor :: forall era. ProposalProcedure era -> Anchor
pProcGovAction :: forall era. ProposalProcedure era -> GovAction era
pProcReturnAddr :: forall era. ProposalProcedure era -> RewardAccount
pProcDeposit :: forall era. ProposalProcedure era -> Coin
..} =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Coin
pProcDeposit
    , pProcReturnAddr :: RewardAccount
pProcReturnAddr = RewardAccount
pProcReturnAddr
    , pProcGovAction :: GovAction DijkstraEra
pProcGovAction = GovAction (PreviousEra DijkstraEra) -> GovAction DijkstraEra
forall era.
(AlonzoEraPParams era, EraPParams (PreviousEra era)) =>
GovAction (PreviousEra era) -> GovAction era
upgradeGovAction GovAction (PreviousEra DijkstraEra)
GovAction ConwayEra
pProcGovAction
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
pProcAnchor
    }

dijkstraTotalDepositsTxBody ::
  ConwayEraTxBody era => PParams era -> (KeyHash StakePool -> Bool) -> TxBody l era -> Coin
dijkstraTotalDepositsTxBody :: forall era (l :: TxLevel).
ConwayEraTxBody era =>
PParams era -> (KeyHash StakePool -> Bool) -> TxBody l era -> Coin
dijkstraTotalDepositsTxBody PParams era
pp KeyHash StakePool -> Bool
isPoolRegisted TxBody l era
txBody =
  PParams era
-> (KeyHash StakePool -> Bool) -> StrictSeq (TxCert era) -> Coin
forall era (f :: * -> *).
(EraTxCert era, Foldable f) =>
PParams era
-> (KeyHash StakePool -> Bool) -> f (TxCert era) -> Coin
forall (f :: * -> *).
Foldable f =>
PParams era
-> (KeyHash StakePool -> Bool) -> f (TxCert era) -> Coin
getTotalDepositsTxCerts PParams era
pp KeyHash StakePool -> Bool
isPoolRegisted (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)
    Coin -> Coin -> Coin
forall t. Val t => t -> t -> t
<+> PParams era -> TxBody l era -> Coin
forall era (l :: TxLevel).
ConwayEraTxBody era =>
PParams era -> TxBody l era -> Coin
conwayProposalsDeposits PParams era
pp TxBody l era
txBody

-- | This newtype wrapper lets us index into the guards with a ScriptHash. It
-- will return the index of the credential when using `indexOf` and the `fromIndex`
-- method returns a `Nothing` if the credential at the index being looked up is
-- actually a keyhash.
newtype GuardsScriptHashView = GuardsScriptHashView (OSet (Credential Guard))

instance Indexable ScriptHash GuardsScriptHashView where
  indexOf :: AsItem Word32 ScriptHash
-> GuardsScriptHashView -> StrictMaybe (AsIx Word32 ScriptHash)
indexOf (AsItem ScriptHash
sh) (GuardsScriptHashView OSet (Credential Guard)
s) =
    StrictMaybe (AsIx Word32 (Credential Guard))
-> StrictMaybe (AsIx Word32 ScriptHash)
forall a b. Coercible a b => a -> b
coerce (StrictMaybe (AsIx Word32 (Credential Guard))
 -> StrictMaybe (AsIx Word32 ScriptHash))
-> StrictMaybe (AsIx Word32 (Credential Guard))
-> StrictMaybe (AsIx Word32 ScriptHash)
forall a b. (a -> b) -> a -> b
$ forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf @(Credential Guard) (Credential Guard -> AsItem Word32 (Credential Guard)
forall ix it. it -> AsItem ix it
AsItem (Credential Guard -> AsItem Word32 (Credential Guard))
-> Credential Guard -> AsItem Word32 (Credential Guard)
forall a b. (a -> b) -> a -> b
$ ScriptHash -> Credential Guard
forall (kr :: KeyRole). ScriptHash -> Credential kr
ScriptHashObj ScriptHash
sh) OSet (Credential Guard)
s
  fromIndex :: AsIx Word32 ScriptHash
-> GuardsScriptHashView -> StrictMaybe (AsIxItem Word32 ScriptHash)
fromIndex (AsIx Word32
i) (GuardsScriptHashView OSet (Credential Guard)
s) = AsIxItem Word32 (Credential Guard)
-> StrictMaybe (AsIxItem Word32 ScriptHash)
forall {ix} {kr :: KeyRole}.
AsIxItem ix (Credential kr) -> StrictMaybe (AsIxItem ix ScriptHash)
toScriptHash (AsIxItem Word32 (Credential Guard)
 -> StrictMaybe (AsIxItem Word32 ScriptHash))
-> StrictMaybe (AsIxItem Word32 (Credential Guard))
-> StrictMaybe (AsIxItem Word32 ScriptHash)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex @(Credential Guard) (Word32 -> AsIx Word32 (Credential Guard)
forall ix it. ix -> AsIx ix it
AsIx Word32
i) OSet (Credential Guard)
s
    where
      toScriptHash :: AsIxItem ix (Credential kr) -> StrictMaybe (AsIxItem ix ScriptHash)
toScriptHash (AsIxItem ix
idx (ScriptHashObj ScriptHash
sh)) = AsIxItem ix ScriptHash -> StrictMaybe (AsIxItem ix ScriptHash)
forall a. a -> StrictMaybe a
SJust (AsIxItem ix ScriptHash -> StrictMaybe (AsIxItem ix ScriptHash))
-> AsIxItem ix ScriptHash -> StrictMaybe (AsIxItem ix ScriptHash)
forall a b. (a -> b) -> a -> b
$ ix -> ScriptHash -> AsIxItem ix ScriptHash
forall ix it. ix -> it -> AsIxItem ix it
AsIxItem ix
idx ScriptHash
sh
      toScriptHash AsIxItem ix (Credential kr)
_ = StrictMaybe (AsIxItem ix ScriptHash)
forall a. StrictMaybe a
SNothing

dijkstraRedeemerPointer ::
  forall era l.
  DijkstraEraTxBody era =>
  TxBody l era ->
  DijkstraPlutusPurpose AsItem era ->
  StrictMaybe (DijkstraPlutusPurpose AsIx era)
dijkstraRedeemerPointer :: forall era (l :: TxLevel).
DijkstraEraTxBody era =>
TxBody l era
-> DijkstraPlutusPurpose AsItem era
-> StrictMaybe (DijkstraPlutusPurpose AsIx era)
dijkstraRedeemerPointer TxBody l era
txBody = \case
  DijkstraMinting AsItem Word32 PolicyID
policyID ->
    AsIx Word32 PolicyID -> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting (AsIx Word32 PolicyID -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 PolicyID)
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraSpending AsItem Word32 TxIn
txIn ->
    AsIx Word32 TxIn -> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending (AsIx Word32 TxIn -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 TxIn)
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraRewarding AsItem Word32 RewardAccount
rewardAccount ->
    AsIx Word32 RewardAccount -> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding (AsIx Word32 RewardAccount -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 RewardAccount)
-> StrictMaybe (DijkstraPlutusPurpose 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))
  DijkstraCertifying AsItem Word32 (TxCert era)
txCert ->
    AsIx Word32 (TxCert era) -> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying (AsIx Word32 (TxCert era) -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 (TxCert era))
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraVoting AsItem Word32 Voter
votingProcedure ->
    AsIx Word32 Voter -> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting (AsIx Word32 Voter -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 Voter)
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraProposing AsItem Word32 (ProposalProcedure era)
proposalProcedure ->
    AsIx Word32 (ProposalProcedure era)
-> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing (AsIx Word32 (ProposalProcedure era)
 -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 (ProposalProcedure era))
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraGuarding AsItem Word32 ScriptHash
scriptHash ->
    AsIx Word32 ScriptHash -> DijkstraPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 ScriptHash -> DijkstraPlutusPurpose f era
DijkstraGuarding
      (AsIx Word32 ScriptHash -> DijkstraPlutusPurpose AsIx era)
-> StrictMaybe (AsIx Word32 ScriptHash)
-> StrictMaybe (DijkstraPlutusPurpose AsIx era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsItem Word32 ScriptHash
-> GuardsScriptHashView -> StrictMaybe (AsIx Word32 ScriptHash)
forall elem container.
Indexable elem container =>
AsItem Word32 elem -> container -> StrictMaybe (AsIx Word32 elem)
indexOf AsItem Word32 ScriptHash
scriptHash (OSet (Credential Guard) -> GuardsScriptHashView
GuardsScriptHashView (OSet (Credential Guard) -> GuardsScriptHashView)
-> OSet (Credential Guard) -> GuardsScriptHashView
forall a b. (a -> b) -> a -> b
$ TxBody l era
txBody TxBody l era
-> Getting
     (OSet (Credential Guard)) (TxBody l era) (OSet (Credential Guard))
-> OSet (Credential Guard)
forall s a. s -> Getting a s a -> a
^. Getting
  (OSet (Credential Guard)) (TxBody l era) (OSet (Credential Guard))
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l era) (OSet (Credential Guard))
guardsTxBodyL)

dijkstraRedeemerPointerInverse ::
  DijkstraEraTxBody era =>
  TxBody l era ->
  DijkstraPlutusPurpose AsIx era ->
  StrictMaybe (DijkstraPlutusPurpose AsIxItem era)
dijkstraRedeemerPointerInverse :: forall era (l :: TxLevel).
DijkstraEraTxBody era =>
TxBody l era
-> DijkstraPlutusPurpose AsIx era
-> StrictMaybe (DijkstraPlutusPurpose AsIxItem era)
dijkstraRedeemerPointerInverse TxBody l era
txBody = \case
  DijkstraMinting AsIx Word32 PolicyID
idx ->
    AsIxItem Word32 PolicyID -> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting (AsIxItem Word32 PolicyID -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 PolicyID)
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraSpending AsIx Word32 TxIn
idx ->
    AsIxItem Word32 TxIn -> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending (AsIxItem Word32 TxIn -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 TxIn)
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraRewarding AsIx Word32 RewardAccount
idx ->
    AsIxItem Word32 RewardAccount -> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding (AsIxItem Word32 RewardAccount
 -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 RewardAccount)
-> StrictMaybe (DijkstraPlutusPurpose 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))
  DijkstraCertifying AsIx Word32 (TxCert era)
idx ->
    AsIxItem Word32 (TxCert era) -> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying (AsIxItem Word32 (TxCert era)
 -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 (TxCert era))
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraVoting AsIx Word32 Voter
idx ->
    AsIxItem Word32 Voter -> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting (AsIxItem Word32 Voter -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 Voter)
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraProposing AsIx Word32 (ProposalProcedure era)
idx ->
    AsIxItem Word32 (ProposalProcedure era)
-> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing (AsIxItem Word32 (ProposalProcedure era)
 -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 (ProposalProcedure era))
-> StrictMaybe (DijkstraPlutusPurpose 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)
  DijkstraGuarding AsIx Word32 ScriptHash
idx ->
    AsIxItem Word32 ScriptHash -> DijkstraPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 ScriptHash -> DijkstraPlutusPurpose f era
DijkstraGuarding (AsIxItem Word32 ScriptHash -> DijkstraPlutusPurpose AsIxItem era)
-> StrictMaybe (AsIxItem Word32 ScriptHash)
-> StrictMaybe (DijkstraPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> AsIx Word32 ScriptHash
-> GuardsScriptHashView -> StrictMaybe (AsIxItem Word32 ScriptHash)
forall elem container.
Indexable elem container =>
AsIx Word32 elem -> container -> StrictMaybe (AsIxItem Word32 elem)
fromIndex AsIx Word32 ScriptHash
idx (OSet (Credential Guard) -> GuardsScriptHashView
GuardsScriptHashView (OSet (Credential Guard) -> GuardsScriptHashView)
-> OSet (Credential Guard) -> GuardsScriptHashView
forall a b. (a -> b) -> a -> b
$ TxBody l era
txBody TxBody l era
-> Getting
     (OSet (Credential Guard)) (TxBody l era) (OSet (Credential Guard))
-> OSet (Credential Guard)
forall s a. s -> Getting a s a -> a
^. Getting
  (OSet (Credential Guard)) (TxBody l era) (OSet (Credential Guard))
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l era) (OSet (Credential Guard))
guardsTxBodyL)

vldtDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) ValidityInterval
vldtDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(ValidityInterval -> f ValidityInterval)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
vldtDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> ValidityInterval)
-> (DijkstraTxBodyRaw l era
    -> ValidityInterval -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     ValidityInterval
     ValidityInterval
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {ValidityInterval
dtbrVldt :: forall era. DijkstraTxBodyRaw TopTx era -> ValidityInterval
dtbrVldt :: ValidityInterval
dtbrVldt} -> ValidityInterval
dtbrVldt
        DijkstraSubTxBodyRaw {ValidityInterval
dstbrVldt :: forall era. DijkstraTxBodyRaw SubTx era -> ValidityInterval
dstbrVldt :: ValidityInterval
dstbrVldt} -> ValidityInterval
dstbrVldt
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \ValidityInterval
y -> DijkstraTxBodyRaw l era
x {dtbrVldt = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \ValidityInterval
y -> DijkstraTxBodyRaw l era
x {dstbrVldt = y}
    )

instance
  ( Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  AllegraEraTxBody DijkstraEra
  where
  vldtTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) ValidityInterval
vldtTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((ValidityInterval -> f ValidityInterval)
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (ValidityInterval -> f ValidityInterval)
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ValidityInterval -> f ValidityInterval)
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(ValidityInterval -> f ValidityInterval)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
vldtDijkstraTxBodyRawL
  {-# INLINE vldtTxBodyL #-}

mintDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) MultiAsset
mintDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(MultiAsset -> f MultiAsset)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
mintDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> MultiAsset)
-> (DijkstraTxBodyRaw l era
    -> MultiAsset -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     MultiAsset
     MultiAsset
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {MultiAsset
dtbrMint :: forall era. DijkstraTxBodyRaw TopTx era -> MultiAsset
dtbrMint :: MultiAsset
dtbrMint} -> MultiAsset
dtbrMint
        DijkstraSubTxBodyRaw {MultiAsset
dstbrMint :: forall era. DijkstraTxBodyRaw SubTx era -> MultiAsset
dstbrMint :: MultiAsset
dstbrMint} -> MultiAsset
dstbrMint
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \MultiAsset
y -> DijkstraTxBodyRaw l era
x {dtbrMint = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \MultiAsset
y -> DijkstraTxBodyRaw l era
x {dstbrMint = y}
    )

instance
  ( Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  MaryEraTxBody DijkstraEra
  where
  mintTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) MultiAsset
mintTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((MultiAsset -> f MultiAsset)
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (MultiAsset -> f MultiAsset)
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (MultiAsset -> f MultiAsset)
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(MultiAsset -> f MultiAsset)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
mintDijkstraTxBodyRawL
  {-# INLINE mintTxBodyL #-}

collateralInputsDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw TopTx era) (Set TxIn)
collateralInputsDijkstraTxBodyRawL :: forall era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
collateralInputsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw TopTx era -> Set TxIn)
-> (DijkstraTxBodyRaw TopTx era
    -> Set TxIn -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (Set TxIn)
     (Set TxIn)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens DijkstraTxBodyRaw TopTx era -> Set TxIn
forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrCollateralInputs ((DijkstraTxBodyRaw TopTx era
  -> Set TxIn -> DijkstraTxBodyRaw TopTx era)
 -> Lens
      (DijkstraTxBodyRaw TopTx era)
      (DijkstraTxBodyRaw TopTx era)
      (Set TxIn)
      (Set TxIn))
-> (DijkstraTxBodyRaw TopTx era
    -> Set TxIn -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (Set TxIn)
     (Set TxIn)
forall a b. (a -> b) -> a -> b
$ \DijkstraTxBodyRaw TopTx era
txb Set TxIn
x -> DijkstraTxBodyRaw TopTx era
txb {dtbrCollateralInputs = x}

scriptIntegrityHashDijkstraTxBodyRawL ::
  Lens' (DijkstraTxBodyRaw l era) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe ScriptIntegrityHash
 -> f (StrictMaybe ScriptIntegrityHash))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
scriptIntegrityHashDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> StrictMaybe ScriptIntegrityHash)
-> (DijkstraTxBodyRaw l era
    -> StrictMaybe ScriptIntegrityHash -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (StrictMaybe ScriptIntegrityHash)
     (StrictMaybe ScriptIntegrityHash)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash} -> StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash
        DijkstraSubTxBodyRaw {StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash} -> StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \StrictMaybe ScriptIntegrityHash
y -> DijkstraTxBodyRaw l era
x {dtbrScriptIntegrityHash = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \StrictMaybe ScriptIntegrityHash
y -> DijkstraTxBodyRaw l era
x {dstbrScriptIntegrityHash = y}
    )

networkIdDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (StrictMaybe Network)
networkIdDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe Network -> f (StrictMaybe Network))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
networkIdDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> StrictMaybe Network)
-> (DijkstraTxBodyRaw l era
    -> StrictMaybe Network -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (StrictMaybe Network)
     (StrictMaybe Network)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {StrictMaybe Network
dtbrNetworkId :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Network
dtbrNetworkId :: StrictMaybe Network
dtbrNetworkId} -> StrictMaybe Network
dtbrNetworkId
        DijkstraSubTxBodyRaw {StrictMaybe Network
dstbrNetworkId :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Network
dstbrNetworkId :: StrictMaybe Network
dstbrNetworkId} -> StrictMaybe Network
dstbrNetworkId
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \StrictMaybe Network
y -> DijkstraTxBodyRaw l era
x {dtbrNetworkId = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \StrictMaybe Network
y -> DijkstraTxBodyRaw l era
x {dstbrNetworkId = y}
    )

instance
  ( Eq (Tx SubTx DijkstraEra)
  , NFData (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  AlonzoEraTxBody DijkstraEra
  where
  collateralInputsTxBodyL :: Lens' (TxBody TopTx DijkstraEra) (Set TxIn)
collateralInputsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw TopTx DijkstraEra
  -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
 -> TxBody TopTx DijkstraEra -> f (TxBody TopTx DijkstraEra))
-> ((Set TxIn -> f (Set TxIn))
    -> DijkstraTxBodyRaw TopTx DijkstraEra
    -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
-> (Set TxIn -> f (Set TxIn))
-> TxBody TopTx DijkstraEra
-> f (TxBody TopTx DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw TopTx DijkstraEra
-> f (DijkstraTxBodyRaw TopTx DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
collateralInputsDijkstraTxBodyRawL
  {-# INLINE collateralInputsTxBodyL #-}

  reqSignerHashesTxBodyL :: forall (l :: TxLevel).
AtMostEra "Conway" DijkstraEra =>
Lens' (TxBody l DijkstraEra) (Set (KeyHash Guard))
reqSignerHashesTxBodyL = (Set (KeyHash Guard) -> f (Set (KeyHash Guard)))
-> TxBody l DijkstraEra -> f (TxBody l DijkstraEra)
forall a b. HasCallStack => Lens' a b
Lens' (TxBody l DijkstraEra) (Set (KeyHash Guard))
notSupportedInThisEraL
  {-# INLINE reqSignerHashesTxBodyL #-}

  reqSignerHashesTxBodyG :: forall (l :: TxLevel).
SimpleGetter (TxBody l DijkstraEra) (Set (KeyHash Guard))
reqSignerHashesTxBodyG = (OSet (Credential Guard) -> Const r (OSet (Credential Guard)))
-> TxBody l DijkstraEra -> Const r (TxBody l DijkstraEra)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (OSet (Credential Guard))
guardsTxBodyL ((OSet (Credential Guard) -> Const r (OSet (Credential Guard)))
 -> TxBody l DijkstraEra -> Const r (TxBody l DijkstraEra))
-> ((Set (KeyHash Guard) -> Const r (Set (KeyHash Guard)))
    -> OSet (Credential Guard) -> Const r (OSet (Credential Guard)))
-> (Set (KeyHash Guard) -> Const r (Set (KeyHash Guard)))
-> TxBody l DijkstraEra
-> Const r (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (Credential Guard) -> Set (KeyHash Guard))
-> SimpleGetter (OSet (Credential Guard)) (Set (KeyHash Guard))
forall s a. (s -> a) -> SimpleGetter s a
to ((Credential Guard -> Set (KeyHash Guard) -> Set (KeyHash Guard))
-> Set (KeyHash Guard)
-> Set (Credential Guard)
-> Set (KeyHash Guard)
forall a b. (a -> b -> b) -> b -> Set a -> b
foldr' Credential Guard -> Set (KeyHash Guard) -> Set (KeyHash Guard)
forall {r :: KeyRole} {r' :: KeyRole}.
Credential r -> Set (KeyHash r') -> Set (KeyHash r')
insertKeyHash Set (KeyHash Guard)
forall a. Monoid a => a
mempty (Set (Credential Guard) -> Set (KeyHash Guard))
-> (OSet (Credential Guard) -> Set (Credential Guard))
-> OSet (Credential Guard)
-> Set (KeyHash Guard)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OSet (Credential Guard) -> Set (Credential Guard)
forall a. OSet a -> Set a
OSet.toSet)
    where
      insertKeyHash :: Credential r -> Set (KeyHash r') -> Set (KeyHash r')
insertKeyHash (KeyHashObj KeyHash r
kh) = KeyHash r' -> Set (KeyHash r') -> Set (KeyHash r')
forall a. Ord a => a -> Set a -> Set a
Set.insert (KeyHash r' -> Set (KeyHash r') -> Set (KeyHash r'))
-> KeyHash r' -> Set (KeyHash r') -> Set (KeyHash r')
forall a b. (a -> b) -> a -> b
$ KeyHash r -> KeyHash r'
forall (r :: KeyRole) (r' :: KeyRole). KeyHash r -> KeyHash r'
forall (a :: KeyRole -> *) (r :: KeyRole) (r' :: KeyRole).
HasKeyRole a =>
a r -> a r'
coerceKeyRole KeyHash r
kh
      insertKeyHash (ScriptHashObj ScriptHash
_) = Set (KeyHash r') -> Set (KeyHash r')
forall a. a -> a
id
  {-# INLINE reqSignerHashesTxBodyG #-}

  scriptIntegrityHashTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((StrictMaybe ScriptIntegrityHash
     -> f (StrictMaybe ScriptIntegrityHash))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (StrictMaybe ScriptIntegrityHash
    -> f (StrictMaybe ScriptIntegrityHash))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe ScriptIntegrityHash
 -> f (StrictMaybe ScriptIntegrityHash))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe ScriptIntegrityHash
 -> f (StrictMaybe ScriptIntegrityHash))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
scriptIntegrityHashDijkstraTxBodyRawL
  {-# INLINE scriptIntegrityHashTxBodyL #-}

  networkIdTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe Network)
networkIdTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((StrictMaybe Network -> f (StrictMaybe Network))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (StrictMaybe Network -> f (StrictMaybe Network))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Network -> f (StrictMaybe Network))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe Network -> f (StrictMaybe Network))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
networkIdDijkstraTxBodyRawL
  {-# INLINE networkIdTxBodyL #-}

  redeemerPointer :: forall (l :: TxLevel).
TxBody l DijkstraEra
-> PlutusPurpose AsItem DijkstraEra
-> StrictMaybe (PlutusPurpose AsIx DijkstraEra)
redeemerPointer = TxBody l DijkstraEra
-> PlutusPurpose AsItem DijkstraEra
-> StrictMaybe (PlutusPurpose AsIx DijkstraEra)
TxBody l DijkstraEra
-> DijkstraPlutusPurpose AsItem DijkstraEra
-> StrictMaybe (DijkstraPlutusPurpose AsIx DijkstraEra)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
TxBody l era
-> DijkstraPlutusPurpose AsItem era
-> StrictMaybe (DijkstraPlutusPurpose AsIx era)
dijkstraRedeemerPointer

  redeemerPointerInverse :: forall (l :: TxLevel).
TxBody l DijkstraEra
-> PlutusPurpose AsIx DijkstraEra
-> StrictMaybe (PlutusPurpose AsIxItem DijkstraEra)
redeemerPointerInverse = TxBody l DijkstraEra
-> PlutusPurpose AsIx DijkstraEra
-> StrictMaybe (PlutusPurpose AsIxItem DijkstraEra)
TxBody l DijkstraEra
-> DijkstraPlutusPurpose AsIx DijkstraEra
-> StrictMaybe (DijkstraPlutusPurpose AsIxItem DijkstraEra)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
TxBody l era
-> DijkstraPlutusPurpose AsIx era
-> StrictMaybe (DijkstraPlutusPurpose AsIxItem era)
dijkstraRedeemerPointerInverse

collateralReturnDijkstraTxBodyRawL ::
  forall era.
  EraTxBody era =>
  Lens' (DijkstraTxBodyRaw TopTx era) (StrictMaybe (TxOut era))
collateralReturnDijkstraTxBodyRawL :: forall era.
EraTxBody era =>
Lens' (DijkstraTxBodyRaw TopTx era) (StrictMaybe (TxOut era))
collateralReturnDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw TopTx era -> StrictMaybe (TxOut era))
-> (DijkstraTxBodyRaw TopTx era
    -> StrictMaybe (TxOut era) -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (StrictMaybe (TxOut era))
     (StrictMaybe (TxOut era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens ((Sized (TxOut era) -> TxOut era)
-> StrictMaybe (Sized (TxOut era)) -> StrictMaybe (TxOut era)
forall a b. (a -> b) -> StrictMaybe a -> StrictMaybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Sized (TxOut era) -> TxOut era
forall a. Sized a -> a
sizedValue (StrictMaybe (Sized (TxOut era)) -> StrictMaybe (TxOut era))
-> (DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era)))
-> DijkstraTxBodyRaw TopTx era
-> StrictMaybe (TxOut era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
dtbrCollateralReturn) ((DijkstraTxBodyRaw TopTx era
  -> StrictMaybe (TxOut era) -> DijkstraTxBodyRaw TopTx era)
 -> Lens
      (DijkstraTxBodyRaw TopTx era)
      (DijkstraTxBodyRaw TopTx era)
      (StrictMaybe (TxOut era))
      (StrictMaybe (TxOut era)))
-> (DijkstraTxBodyRaw TopTx era
    -> StrictMaybe (TxOut era) -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (StrictMaybe (TxOut era))
     (StrictMaybe (TxOut era))
forall a b. (a -> b) -> a -> b
$
    \DijkstraTxBodyRaw TopTx era
txb StrictMaybe (TxOut era)
x -> DijkstraTxBodyRaw TopTx era
txb {dtbrCollateralReturn = mkSized (eraProtVerLow @era) <$> x}

totalCollateralDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw TopTx era) (StrictMaybe Coin)
totalCollateralDijkstraTxBodyRawL :: forall era (f :: * -> *).
Functor f =>
(StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
totalCollateralDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin)
-> (DijkstraTxBodyRaw TopTx era
    -> StrictMaybe Coin -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (StrictMaybe Coin)
     (StrictMaybe Coin)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrTotalCollateral ((DijkstraTxBodyRaw TopTx era
  -> StrictMaybe Coin -> DijkstraTxBodyRaw TopTx era)
 -> Lens
      (DijkstraTxBodyRaw TopTx era)
      (DijkstraTxBodyRaw TopTx era)
      (StrictMaybe Coin)
      (StrictMaybe Coin))
-> (DijkstraTxBodyRaw TopTx era
    -> StrictMaybe Coin -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (StrictMaybe Coin)
     (StrictMaybe Coin)
forall a b. (a -> b) -> a -> b
$
    \DijkstraTxBodyRaw TopTx era
txb StrictMaybe Coin
x -> DijkstraTxBodyRaw TopTx era
txb {dtbrTotalCollateral = x}

referenceInputsDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (Set TxIn)
referenceInputsDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
referenceInputsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> Set TxIn)
-> (DijkstraTxBodyRaw l era -> Set TxIn -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (Set TxIn)
     (Set TxIn)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {Set TxIn
dtbrReferenceInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrReferenceInputs :: Set TxIn
dtbrReferenceInputs} -> Set TxIn
dtbrReferenceInputs
        DijkstraSubTxBodyRaw {Set TxIn
dstbrReferenceInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrReferenceInputs :: Set TxIn
dstbrReferenceInputs} -> Set TxIn
dstbrReferenceInputs
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \Set TxIn
y -> DijkstraTxBodyRaw l era
x {dtbrReferenceInputs = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \Set TxIn
y -> DijkstraTxBodyRaw l era
x {dstbrReferenceInputs = y}
    )

instance
  ( NFData (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  BabbageEraTxBody DijkstraEra
  where
  sizedOutputsTxBodyL :: forall (l :: TxLevel).
Lens'
  (TxBody l DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra)))
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 @DijkstraEra
      ( \case
          DijkstraTxBodyRaw {StrictSeq (Sized (TxOut DijkstraEra))
dtbrOutputs :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
dtbrOutputs :: StrictSeq (Sized (TxOut DijkstraEra))
dtbrOutputs} -> StrictSeq (Sized (TxOut DijkstraEra))
StrictSeq (Sized (BabbageTxOut DijkstraEra))
dtbrOutputs
          DijkstraSubTxBodyRaw {StrictSeq (Sized (TxOut DijkstraEra))
dstbrOutputs :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictSeq (Sized (TxOut era))
dstbrOutputs :: StrictSeq (Sized (TxOut DijkstraEra))
dstbrOutputs} -> StrictSeq (Sized (TxOut DijkstraEra))
StrictSeq (Sized (BabbageTxOut DijkstraEra))
dstbrOutputs
      )
      ( \case
          x :: RawType (TxBody l DijkstraEra)
x@DijkstraTxBodyRaw {} -> \StrictSeq (Sized (BabbageTxOut DijkstraEra))
y -> RawType (TxBody l DijkstraEra)
x {dtbrOutputs = y}
          x :: RawType (TxBody l DijkstraEra)
x@DijkstraSubTxBodyRaw {} -> \StrictSeq (Sized (BabbageTxOut DijkstraEra))
y -> RawType (TxBody l DijkstraEra)
x {dstbrOutputs = y}
      )
  {-# INLINE sizedOutputsTxBodyL #-}

  referenceInputsTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) (Set TxIn)
referenceInputsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((Set TxIn -> f (Set TxIn))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (Set TxIn -> f (Set TxIn))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Set TxIn -> f (Set TxIn))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
referenceInputsDijkstraTxBodyRawL
  {-# INLINE referenceInputsTxBodyL #-}

  totalCollateralTxBodyL :: Lens' (TxBody TopTx DijkstraEra) (StrictMaybe Coin)
totalCollateralTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw TopTx DijkstraEra
  -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
 -> TxBody TopTx DijkstraEra -> f (TxBody TopTx DijkstraEra))
-> ((StrictMaybe Coin -> f (StrictMaybe Coin))
    -> DijkstraTxBodyRaw TopTx DijkstraEra
    -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
-> (StrictMaybe Coin -> f (StrictMaybe Coin))
-> TxBody TopTx DijkstraEra
-> f (TxBody TopTx DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw TopTx DijkstraEra
-> f (DijkstraTxBodyRaw TopTx DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
totalCollateralDijkstraTxBodyRawL
  {-# INLINE totalCollateralTxBodyL #-}

  collateralReturnTxBodyL :: Lens' (TxBody TopTx DijkstraEra) (StrictMaybe (TxOut DijkstraEra))
collateralReturnTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw TopTx DijkstraEra
  -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
 -> TxBody TopTx DijkstraEra -> f (TxBody TopTx DijkstraEra))
-> ((StrictMaybe (BabbageTxOut DijkstraEra)
     -> f (StrictMaybe (BabbageTxOut DijkstraEra)))
    -> DijkstraTxBodyRaw TopTx DijkstraEra
    -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
-> (StrictMaybe (BabbageTxOut DijkstraEra)
    -> f (StrictMaybe (BabbageTxOut DijkstraEra)))
-> TxBody TopTx DijkstraEra
-> f (TxBody TopTx DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (TxOut DijkstraEra)
 -> f (StrictMaybe (TxOut DijkstraEra)))
-> DijkstraTxBodyRaw TopTx DijkstraEra
-> f (DijkstraTxBodyRaw TopTx DijkstraEra)
(StrictMaybe (BabbageTxOut DijkstraEra)
 -> f (StrictMaybe (BabbageTxOut DijkstraEra)))
-> DijkstraTxBodyRaw TopTx DijkstraEra
-> f (DijkstraTxBodyRaw TopTx DijkstraEra)
forall era.
EraTxBody era =>
Lens' (DijkstraTxBodyRaw TopTx era) (StrictMaybe (TxOut era))
Lens'
  (DijkstraTxBodyRaw TopTx DijkstraEra)
  (StrictMaybe (TxOut DijkstraEra))
collateralReturnDijkstraTxBodyRawL
  {-# INLINE collateralReturnTxBodyL #-}

  sizedCollateralReturnTxBodyL :: Lens'
  (TxBody TopTx DijkstraEra)
  (StrictMaybe (Sized (TxOut DijkstraEra)))
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 @DijkstraEra RawType (TxBody TopTx DijkstraEra)
-> StrictMaybe (Sized (TxOut DijkstraEra))
DijkstraTxBodyRaw TopTx DijkstraEra
-> StrictMaybe (Sized (TxOut DijkstraEra))
forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
dtbrCollateralReturn ((RawType (TxBody TopTx DijkstraEra)
  -> StrictMaybe (Sized (TxOut DijkstraEra))
  -> RawType (TxBody TopTx DijkstraEra))
 -> Lens'
      (TxBody TopTx DijkstraEra)
      (StrictMaybe (Sized (TxOut DijkstraEra))))
-> (RawType (TxBody TopTx DijkstraEra)
    -> StrictMaybe (Sized (TxOut DijkstraEra))
    -> RawType (TxBody TopTx DijkstraEra))
-> Lens'
     (TxBody TopTx DijkstraEra)
     (StrictMaybe (Sized (TxOut DijkstraEra)))
forall a b. (a -> b) -> a -> b
$
      \RawType (TxBody TopTx DijkstraEra)
txb StrictMaybe (Sized (TxOut DijkstraEra))
x -> RawType (TxBody TopTx DijkstraEra)
txb {dtbrCollateralReturn = x}
  {-# INLINE sizedCollateralReturnTxBodyL #-}

  allSizedOutputsTxBodyF :: forall (l :: TxLevel).
SimpleGetter
  (TxBody l DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra)))
allSizedOutputsTxBodyF = (TxBody l DijkstraEra -> StrictSeq (Sized (TxOut DijkstraEra)))
-> SimpleGetter
     (TxBody l DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra)))
forall s a. (s -> a) -> SimpleGetter s a
to ((TxBody l DijkstraEra -> StrictSeq (Sized (TxOut DijkstraEra)))
 -> SimpleGetter
      (TxBody l DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra))))
-> (TxBody l DijkstraEra -> StrictSeq (Sized (TxOut DijkstraEra)))
-> SimpleGetter
     (TxBody l DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra)))
forall a b. (a -> b) -> a -> b
$ \TxBody l DijkstraEra
txBody ->
    TxBody l DijkstraEra
-> (TxBody TopTx DijkstraEra
    -> StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> (TxBody SubTx DijkstraEra
    -> StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> StrictSeq (Sized (BabbageTxOut DijkstraEra))
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxBothLevels l era) =>
t l era -> (t TopTx era -> a) -> (t SubTx era -> a) -> a
withBothTxLevels TxBody l DijkstraEra
txBody (TxBody TopTx DijkstraEra
-> Getting
     (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
     (TxBody TopTx DijkstraEra)
     (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> StrictSeq (Sized (BabbageTxOut DijkstraEra))
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
  (TxBody TopTx DijkstraEra)
  (StrictSeq (Sized (TxOut DijkstraEra)))
Getting
  (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
  (TxBody TopTx DijkstraEra)
  (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
forall era.
BabbageEraTxBody era =>
SimpleGetter (TxBody TopTx era) (StrictSeq (Sized (TxOut era)))
SimpleGetter
  (TxBody TopTx DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra)))
allSizedOutputsBabbageTxBodyF) (TxBody SubTx DijkstraEra
-> Getting
     (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
     (TxBody SubTx DijkstraEra)
     (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> StrictSeq (Sized (BabbageTxOut DijkstraEra))
forall s a. s -> Getting a s a -> a
^. (StrictSeq (Sized (TxOut DijkstraEra))
 -> Const
      (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
      (StrictSeq (Sized (TxOut DijkstraEra))))
-> TxBody SubTx DijkstraEra
-> Const
     (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
     (TxBody SubTx DijkstraEra)
Getting
  (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
  (TxBody SubTx DijkstraEra)
  (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
forall era (l :: TxLevel).
BabbageEraTxBody era =>
Lens' (TxBody l era) (StrictSeq (Sized (TxOut era)))
forall (l :: TxLevel).
Lens'
  (TxBody l DijkstraEra) (StrictSeq (Sized (TxOut DijkstraEra)))
sizedOutputsTxBodyL)
  {-# INLINE allSizedOutputsTxBodyF #-}

votingProceduresDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (VotingProcedures era)
votingProceduresDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(VotingProcedures era -> f (VotingProcedures era))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
votingProceduresDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> VotingProcedures era)
-> (DijkstraTxBodyRaw l era
    -> VotingProcedures era -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (VotingProcedures era)
     (VotingProcedures era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {VotingProcedures era
dtbrVotingProcedures :: forall era. DijkstraTxBodyRaw TopTx era -> VotingProcedures era
dtbrVotingProcedures :: VotingProcedures era
dtbrVotingProcedures} -> VotingProcedures era
dtbrVotingProcedures
        DijkstraSubTxBodyRaw {VotingProcedures era
dstbrVotingProcedures :: forall era. DijkstraTxBodyRaw SubTx era -> VotingProcedures era
dstbrVotingProcedures :: VotingProcedures era
dstbrVotingProcedures} -> VotingProcedures era
dstbrVotingProcedures
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \VotingProcedures era
y -> DijkstraTxBodyRaw l era
x {dtbrVotingProcedures = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \VotingProcedures era
y -> DijkstraTxBodyRaw l era
x {dstbrVotingProcedures = y}
    )

proposalProceduresDijkstraTxBodyRawL ::
  Lens' (DijkstraTxBodyRaw l era) (OSet (ProposalProcedure era))
proposalProceduresDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (ProposalProcedure era) -> f (OSet (ProposalProcedure era)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
proposalProceduresDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> OSet (ProposalProcedure era))
-> (DijkstraTxBodyRaw l era
    -> OSet (ProposalProcedure era) -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (OSet (ProposalProcedure era))
     (OSet (ProposalProcedure era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {OSet (ProposalProcedure era)
dtbrProposalProcedures :: forall era.
DijkstraTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
dtbrProposalProcedures :: OSet (ProposalProcedure era)
dtbrProposalProcedures} -> OSet (ProposalProcedure era)
dtbrProposalProcedures
        DijkstraSubTxBodyRaw {OSet (ProposalProcedure era)
dstbrProposalProcedures :: forall era.
DijkstraTxBodyRaw SubTx era -> OSet (ProposalProcedure era)
dstbrProposalProcedures :: OSet (ProposalProcedure era)
dstbrProposalProcedures} -> OSet (ProposalProcedure era)
dstbrProposalProcedures
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \OSet (ProposalProcedure era)
y -> DijkstraTxBodyRaw l era
x {dtbrProposalProcedures = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \OSet (ProposalProcedure era)
y -> DijkstraTxBodyRaw l era
x {dstbrProposalProcedures = y}
    )

treasuryDonationDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) Coin
treasuryDonationDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Coin -> f Coin)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
treasuryDonationDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> Coin)
-> (DijkstraTxBodyRaw l era -> Coin -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era) (DijkstraTxBodyRaw l era) Coin Coin
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {Coin
dtbrTreasuryDonation :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrTreasuryDonation :: Coin
dtbrTreasuryDonation} -> Coin
dtbrTreasuryDonation
        DijkstraSubTxBodyRaw {Coin
dstbrTreasuryDonation :: forall era. DijkstraTxBodyRaw SubTx era -> Coin
dstbrTreasuryDonation :: Coin
dstbrTreasuryDonation} -> Coin
dstbrTreasuryDonation
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \Coin
y -> DijkstraTxBodyRaw l era
x {dtbrTreasuryDonation = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \Coin
y -> DijkstraTxBodyRaw l era
x {dstbrTreasuryDonation = y}
    )

currentTreasuryValueDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (StrictMaybe Coin)
currentTreasuryValueDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
currentTreasuryValueDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> StrictMaybe Coin)
-> (DijkstraTxBodyRaw l era
    -> StrictMaybe Coin -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (StrictMaybe Coin)
     (StrictMaybe Coin)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {StrictMaybe Coin
dtbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrCurrentTreasuryValue :: StrictMaybe Coin
dtbrCurrentTreasuryValue} -> StrictMaybe Coin
dtbrCurrentTreasuryValue
        DijkstraSubTxBodyRaw {StrictMaybe Coin
dstbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Coin
dstbrCurrentTreasuryValue :: StrictMaybe Coin
dstbrCurrentTreasuryValue} -> StrictMaybe Coin
dstbrCurrentTreasuryValue
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \StrictMaybe Coin
y -> DijkstraTxBodyRaw l era
x {dtbrCurrentTreasuryValue = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \StrictMaybe Coin
y -> DijkstraTxBodyRaw l era
x {dstbrCurrentTreasuryValue = y}
    )

instance
  ( NFData (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  ConwayEraTxBody DijkstraEra
  where
  votingProceduresTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (VotingProcedures DijkstraEra)
votingProceduresTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((VotingProcedures DijkstraEra
     -> f (VotingProcedures DijkstraEra))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (VotingProcedures DijkstraEra
    -> f (VotingProcedures DijkstraEra))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VotingProcedures DijkstraEra -> f (VotingProcedures DijkstraEra))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(VotingProcedures era -> f (VotingProcedures era))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
votingProceduresDijkstraTxBodyRawL
  {-# INLINE votingProceduresTxBodyL #-}
  proposalProceduresTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (OSet (ProposalProcedure DijkstraEra))
proposalProceduresTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((OSet (ProposalProcedure DijkstraEra)
     -> f (OSet (ProposalProcedure DijkstraEra)))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (OSet (ProposalProcedure DijkstraEra)
    -> f (OSet (ProposalProcedure DijkstraEra)))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (ProposalProcedure DijkstraEra)
 -> f (OSet (ProposalProcedure DijkstraEra)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (ProposalProcedure era) -> f (OSet (ProposalProcedure era)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
proposalProceduresDijkstraTxBodyRawL
  {-# INLINE proposalProceduresTxBodyL #-}
  currentTreasuryValueTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe Coin)
currentTreasuryValueTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((StrictMaybe Coin -> f (StrictMaybe Coin))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (StrictMaybe Coin -> f (StrictMaybe Coin))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe Coin -> f (StrictMaybe Coin))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
currentTreasuryValueDijkstraTxBodyRawL
  {-# INLINE currentTreasuryValueTxBodyL #-}
  treasuryDonationTxBodyL :: forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) Coin
treasuryDonationTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((Coin -> f Coin)
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (Coin -> f Coin)
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Coin -> f Coin)
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(Coin -> f Coin)
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
treasuryDonationDijkstraTxBodyRawL
  {-# INLINE treasuryDonationTxBodyL #-}

class ConwayEraTxBody era => DijkstraEraTxBody era where
  guardsTxBodyL :: Lens' (TxBody l era) (OSet (Credential Guard))

  subTransactionsTxBodyL :: Lens' (TxBody TopTx era) (OMap TxId (Tx SubTx era))

guardsDijkstraTxBodyRawL :: Lens' (DijkstraTxBodyRaw l era) (OSet (Credential Guard))
guardsDijkstraTxBodyRawL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (Credential Guard) -> f (OSet (Credential Guard)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
guardsDijkstraTxBodyRawL =
  (DijkstraTxBodyRaw l era -> OSet (Credential Guard))
-> (DijkstraTxBodyRaw l era
    -> OSet (Credential Guard) -> DijkstraTxBodyRaw l era)
-> Lens
     (DijkstraTxBodyRaw l era)
     (DijkstraTxBodyRaw l era)
     (OSet (Credential Guard))
     (OSet (Credential Guard))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
    ( \case
        DijkstraTxBodyRaw {OSet (Credential Guard)
dtbrGuards :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (Credential Guard)
dtbrGuards :: OSet (Credential Guard)
dtbrGuards} -> OSet (Credential Guard)
dtbrGuards
        DijkstraSubTxBodyRaw {OSet (Credential Guard)
dstbrGuards :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (Credential Guard)
dstbrGuards :: OSet (Credential Guard)
dstbrGuards} -> OSet (Credential Guard)
dstbrGuards
    )
    ( \case
        x :: DijkstraTxBodyRaw l era
x@DijkstraTxBodyRaw {} -> \OSet (Credential Guard)
y -> DijkstraTxBodyRaw l era
x {dtbrGuards = y}
        x :: DijkstraTxBodyRaw l era
x@DijkstraSubTxBodyRaw {} -> \OSet (Credential Guard)
y -> DijkstraTxBodyRaw l era
x {dstbrGuards = y}
    )

subTransactionsDijkstraTxBodyL :: Lens' (DijkstraTxBodyRaw TopTx era) (OMap TxId (Tx SubTx era))
subTransactionsDijkstraTxBodyL :: forall era (f :: * -> *).
Functor f =>
(OMap TxId (Tx SubTx era) -> f (OMap TxId (Tx SubTx era)))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
subTransactionsDijkstraTxBodyL = (DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era))
-> (DijkstraTxBodyRaw TopTx era
    -> OMap TxId (Tx SubTx era) -> DijkstraTxBodyRaw TopTx era)
-> Lens
     (DijkstraTxBodyRaw TopTx era)
     (DijkstraTxBodyRaw TopTx era)
     (OMap TxId (Tx SubTx era))
     (OMap TxId (Tx SubTx era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era)
forall era. DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era)
dtbrSubTransactions (\DijkstraTxBodyRaw TopTx era
x OMap TxId (Tx SubTx era)
y -> DijkstraTxBodyRaw TopTx era
x {dtbrSubTransactions = y})

instance
  ( NFData (Tx SubTx DijkstraEra)
  , Eq (Tx SubTx DijkstraEra)
  , Show (Tx SubTx DijkstraEra)
  , EncCBOR (Tx SubTx DijkstraEra)
  ) =>
  DijkstraEraTxBody DijkstraEra
  where
  {-# INLINE guardsTxBodyL #-}
  guardsTxBodyL :: forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (OSet (Credential Guard))
guardsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw l DijkstraEra
  -> f (DijkstraTxBodyRaw l DijkstraEra))
 -> TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> ((OSet (Credential Guard) -> f (OSet (Credential Guard)))
    -> DijkstraTxBodyRaw l DijkstraEra
    -> f (DijkstraTxBodyRaw l DijkstraEra))
-> (OSet (Credential Guard) -> f (OSet (Credential Guard)))
-> TxBody l DijkstraEra
-> f (TxBody l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (Credential Guard) -> f (OSet (Credential Guard)))
-> DijkstraTxBodyRaw l DijkstraEra
-> f (DijkstraTxBodyRaw l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(OSet (Credential Guard) -> f (OSet (Credential Guard)))
-> DijkstraTxBodyRaw l era -> f (DijkstraTxBodyRaw l era)
guardsDijkstraTxBodyRawL

  {-# INLINE subTransactionsTxBodyL #-}
  subTransactionsTxBodyL :: Lens' (TxBody TopTx DijkstraEra) (OMap TxId (Tx SubTx DijkstraEra))
subTransactionsTxBodyL = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
Lens' t (RawType t)
memoRawTypeL @DijkstraEra ((DijkstraTxBodyRaw TopTx DijkstraEra
  -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
 -> TxBody TopTx DijkstraEra -> f (TxBody TopTx DijkstraEra))
-> ((OMap TxId (Tx SubTx DijkstraEra)
     -> f (OMap TxId (Tx SubTx DijkstraEra)))
    -> DijkstraTxBodyRaw TopTx DijkstraEra
    -> f (DijkstraTxBodyRaw TopTx DijkstraEra))
-> (OMap TxId (Tx SubTx DijkstraEra)
    -> f (OMap TxId (Tx SubTx DijkstraEra)))
-> TxBody TopTx DijkstraEra
-> f (TxBody TopTx DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OMap TxId (Tx SubTx DijkstraEra)
 -> f (OMap TxId (Tx SubTx DijkstraEra)))
-> DijkstraTxBodyRaw TopTx DijkstraEra
-> f (DijkstraTxBodyRaw TopTx DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(OMap TxId (Tx SubTx era) -> f (OMap TxId (Tx SubTx era)))
-> DijkstraTxBodyRaw TopTx era -> f (DijkstraTxBodyRaw TopTx era)
subTransactionsDijkstraTxBodyL

-- | Decoder for decoding guards in a backwards-compatible manner. It peeks at
-- the first element and if it's a credential, it decodes the rest of the
-- elements as credentials. If the first element is a plain keyhash, it will
-- decode rest of the elements as keyhashes.
decodeGuards :: Decoder s (OSet (Credential Guard))
decodeGuards :: forall s. Decoder s (OSet (Credential Guard))
decodeGuards = do
  elementsAreCredentials <- ST s (STRef s (Maybe Bool)) -> Decoder s (STRef s (Maybe Bool))
forall s a. ST s a -> Decoder s a
liftST (ST s (STRef s (Maybe Bool)) -> Decoder s (STRef s (Maybe Bool)))
-> ST s (STRef s (Maybe Bool)) -> Decoder s (STRef s (Maybe Bool))
forall a b. (a -> b) -> a -> b
$ Maybe Bool -> ST s (STRef s (Maybe Bool))
forall a s. a -> ST s (STRef s a)
newSTRef Maybe Bool
forall a. Maybe a
Nothing
  let
    decodeElement = do
      ST s (Maybe Bool) -> Decoder s (Maybe Bool)
forall s a. ST s a -> Decoder s a
liftST (STRef s (Maybe Bool) -> ST s (Maybe Bool)
forall s a. STRef s a -> ST s a
readSTRef STRef s (Maybe Bool)
elementsAreCredentials) Decoder s (Maybe Bool)
-> (Maybe Bool -> Decoder s (Credential Guard))
-> Decoder s (Credential Guard)
forall a b. Decoder s a -> (a -> Decoder s b) -> Decoder s b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
        Maybe Bool
Nothing -> do
          tokenType <- Decoder s TokenType
forall s. Decoder s TokenType
peekTokenType
          liftST . writeSTRef elementsAreCredentials . Just $ case tokenType of
            TokenType
TypeListLen -> Bool
True
            TokenType
TypeListLen64 -> Bool
True
            TokenType
TypeListLenIndef -> Bool
True
            TokenType
_ -> Bool
False
          decodeElement
        Just Bool
True -> Decoder s (Credential Guard)
forall s. Decoder s (Credential Guard)
forall a s. DecCBOR a => Decoder s a
decCBOR
        Just Bool
False -> KeyHash Guard -> Credential Guard
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (KeyHash Guard -> Credential Guard)
-> Decoder s (KeyHash Guard) -> Decoder s (Credential Guard)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (KeyHash Guard)
forall s. Decoder s (KeyHash Guard)
forall a s. DecCBOR a => Decoder s a
decCBOR
  decodeOSet decodeElement