{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}

module Test.Cardano.Ledger.Generic.Updaters where

import Cardano.Crypto.DSIGN.Class ()
import Cardano.Ledger.Alonzo.Scripts (emptyCostModels)
import Cardano.Ledger.Alonzo.Tx (AlonzoTx (..), hashScriptIntegrity)
import qualified Cardano.Ledger.Alonzo.Tx as Alonzo
import Cardano.Ledger.Alonzo.TxBody (AlonzoTxOut (..))
import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits (..), Redeemers (..), TxDats (..))
import Cardano.Ledger.Babbage.Core
import Cardano.Ledger.Babbage.TxBody (BabbageTxOut (..))
import Cardano.Ledger.Conway.PParams (
  ppCommitteeMaxTermLengthL,
  ppCommitteeMinSizeL,
  ppDRepActivityL,
  ppDRepDepositL,
  ppDRepVotingThresholdsL,
  ppGovActionDepositL,
  ppGovActionLifetimeL,
  ppPoolVotingThresholdsL,
 )
import Cardano.Ledger.Conway.TxBody (ConwayEraTxBody (..))
import Cardano.Ledger.Plutus.Data (Datum (..))
import Cardano.Ledger.Plutus.Language (Language (..))
import Cardano.Ledger.Shelley.Tx as Shelley (
  ShelleyTx (..),
 )
import Cardano.Ledger.Shelley.TxOut as Shelley (ShelleyTxOut (..))
import Cardano.Ledger.Shelley.TxWits as Shelley (
  addrWits,
  bootWits,
  scriptWits,
 )
import qualified Data.List as List
import Data.Map (Map)
import qualified Data.Map.Strict as Map
import Data.Maybe.Strict (StrictMaybe (..))
import Data.Set (Set)
import qualified Data.Set as Set
import Lens.Micro
import Test.Cardano.Ledger.Generic.Fields
import Test.Cardano.Ledger.Generic.Proof
import Test.Cardano.Ledger.Plutus (zeroTestingCostModels)

-- ===========================================================================
-- Upaters and the use of Policy to specify Merge Semantics and use of [t] as inputs.
-- When using the Updaters, one will usually consruct the fields by hand.
-- So if a Field consists of (Set t), (StrictSeq t), [t], (Maybe t), (StrictMaybe t), or (Map key t)
-- we will use a list, and convert to the appropriate type for each Field and Era.
-- Several of these: (Map key t), (Maybe t) and (StrictMaybe t) can be problematic
-- since they only have a well defined Merge semantics when (SemiGroup t) .
-- So we define specialized functions applyMap, applyMaybe and applySMaybe that raise
-- an error if a Merge semantics finds more than one copy of the elements being combined.
-- Users may choose what merge semantics they want by passing the right Policy
-- =============================================================================

-- =======================================================================
-- A Policy lets you choose to keep the old (first) or the new (override)
-- or combine (merge) of two values. We only use this for elements in the
-- WitnessesField data type. That is because we assemble witnesses in small
-- pieces and we combine the pieces together. Every field in ShelleyTxWits and
-- AlonzoTxWits has clear way of being merged. We don't use Policies in the other
-- xxxField types because most of those parts cannot be safely combined.
-- (The only execeptions are Coin and Value, but they both have Monoid
-- instances, where we can easliy use (<>) instead.).

class Merge t where
  first :: t -> t -> t
  first t
x t
_ = t
x
  override :: t -> t -> t
  override t
_ t
y = t
y
  merge :: t -> t -> t

type Policy = (forall t. Merge t => t -> t -> t)

-- We need just these 4 instances to merge components of TxWitnesses

instance Ord a => Merge (Set a) where
  merge :: Set a -> Set a -> Set a
merge = Set a -> Set a -> Set a
forall a. Ord a => Set a -> Set a -> Set a
Set.union

instance Era era => Merge (TxDats era) where
  merge :: TxDats era -> TxDats era -> TxDats era
merge (TxDats Map DataHash (Data era)
x) (TxDats Map DataHash (Data era)
y) = Map DataHash (Data era) -> TxDats era
forall era. Era era => Map DataHash (Data era) -> TxDats era
TxDats (Map DataHash (Data era)
-> Map DataHash (Data era) -> Map DataHash (Data era)
forall k a. Ord k => Map k a -> Map k a -> Map k a
Map.union Map DataHash (Data era)
x Map DataHash (Data era)
y)

instance AlonzoEraScript era => Merge (Redeemers era) where
  merge :: Redeemers era -> Redeemers era -> Redeemers era
merge (Redeemers Map (PlutusPurpose AsIx era) (Data era, ExUnits)
x) (Redeemers Map (PlutusPurpose AsIx era) (Data era, ExUnits)
y) = Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
forall era.
AlonzoEraScript era =>
Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Redeemers era
Redeemers (Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
-> Map (PlutusPurpose AsIx era) (Data era, ExUnits)
forall k a. Ord k => Map k a -> Map k a -> Map k a
Map.union Map (PlutusPurpose AsIx era) (Data era, ExUnits)
x Map (PlutusPurpose AsIx era) (Data era, ExUnits)
y)

instance Merge (Map ScriptHash v) where
  merge :: Map ScriptHash v -> Map ScriptHash v -> Map ScriptHash v
merge = Map ScriptHash v -> Map ScriptHash v -> Map ScriptHash v
forall k a. Ord k => Map k a -> Map k a -> Map k a
Map.union

-- ====================================================================
-- Building Era parametric Records
-- ====================================================================

-- Updaters for Tx

updateTx :: Proof era -> Tx era -> TxField era -> Tx era
updateTx :: forall era. Proof era -> Tx era -> TxField era -> Tx era
updateTx wit :: Proof era
wit@Proof era
Shelley tx :: Tx era
tx@(ShelleyTx TxBody ShelleyEra
b TxWits ShelleyEra
w StrictMaybe (TxAuxData ShelleyEra)
d) TxField era
dt =
  case TxField era
dt of
    Body TxBody era
fbody -> TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody era
fbody TxWits era
TxWits ShelleyEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData ShelleyEra)
d
    BodyI [TxBodyField era]
bfields -> TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx (Proof era -> [TxBodyField era] -> TxBody era
forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
wit [TxBodyField era]
bfields) TxWits era
TxWits ShelleyEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData ShelleyEra)
d
    TxWits TxWits era
fwit -> TxBody ShelleyEra
-> TxWits ShelleyEra
-> StrictMaybe (TxAuxData ShelleyEra)
-> ShelleyTx ShelleyEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody ShelleyEra
b TxWits era
TxWits ShelleyEra
fwit StrictMaybe (TxAuxData ShelleyEra)
d
    WitnessesI [WitnessesField era]
wfields -> TxBody ShelleyEra
-> TxWits ShelleyEra
-> StrictMaybe (TxAuxData ShelleyEra)
-> ShelleyTx ShelleyEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody ShelleyEra
b (Policy -> Proof era -> [WitnessesField era] -> TxWits era
forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses t -> t -> t
Policy
override Proof era
wit [WitnessesField era]
wfields) StrictMaybe (TxAuxData ShelleyEra)
d
    AuxData StrictMaybe (TxAuxData era)
faux -> TxBody ShelleyEra
-> TxWits ShelleyEra
-> StrictMaybe (TxAuxData ShelleyEra)
-> ShelleyTx ShelleyEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody ShelleyEra
b TxWits ShelleyEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData ShelleyEra)
faux
    Valid IsValid
_ -> Tx era
tx
updateTx wit :: Proof era
wit@Proof era
Allegra tx :: Tx era
tx@(ShelleyTx TxBody AllegraEra
b TxWits AllegraEra
w StrictMaybe (TxAuxData AllegraEra)
d) TxField era
dt =
  case TxField era
dt of
    Body TxBody era
fbody -> TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody era
fbody TxWits era
TxWits AllegraEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData AllegraEra)
d
    BodyI [TxBodyField era]
bfields -> TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx (Proof era -> [TxBodyField era] -> TxBody era
forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
wit [TxBodyField era]
bfields) TxWits era
TxWits AllegraEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData AllegraEra)
d
    TxWits TxWits era
fwit -> TxBody AllegraEra
-> TxWits AllegraEra
-> StrictMaybe (TxAuxData AllegraEra)
-> ShelleyTx AllegraEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody AllegraEra
b TxWits era
TxWits AllegraEra
fwit StrictMaybe (TxAuxData AllegraEra)
d
    WitnessesI [WitnessesField era]
wfields -> TxBody AllegraEra
-> TxWits AllegraEra
-> StrictMaybe (TxAuxData AllegraEra)
-> ShelleyTx AllegraEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody AllegraEra
b (Policy -> Proof era -> [WitnessesField era] -> TxWits era
forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses t -> t -> t
Policy
override Proof era
wit [WitnessesField era]
wfields) StrictMaybe (TxAuxData AllegraEra)
d
    AuxData StrictMaybe (TxAuxData era)
faux -> TxBody AllegraEra
-> TxWits AllegraEra
-> StrictMaybe (TxAuxData AllegraEra)
-> ShelleyTx AllegraEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody AllegraEra
b TxWits AllegraEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData AllegraEra)
faux
    Valid IsValid
_ -> Tx era
tx
updateTx wit :: Proof era
wit@Proof era
Mary tx :: Tx era
tx@(ShelleyTx TxBody MaryEra
b TxWits MaryEra
w StrictMaybe (TxAuxData MaryEra)
d) TxField era
dt =
  case TxField era
dt of
    Body TxBody era
fbody -> TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody era
fbody TxWits era
TxWits MaryEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData MaryEra)
d
    BodyI [TxBodyField era]
bfields -> TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx (Proof era -> [TxBodyField era] -> TxBody era
forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
wit [TxBodyField era]
bfields) TxWits era
TxWits MaryEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData MaryEra)
d
    TxWits TxWits era
fwit -> TxBody MaryEra
-> TxWits MaryEra
-> StrictMaybe (TxAuxData MaryEra)
-> ShelleyTx MaryEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody MaryEra
b TxWits era
TxWits MaryEra
fwit StrictMaybe (TxAuxData MaryEra)
d
    WitnessesI [WitnessesField era]
wfields -> TxBody MaryEra
-> TxWits MaryEra
-> StrictMaybe (TxAuxData MaryEra)
-> ShelleyTx MaryEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody MaryEra
b (Policy -> Proof era -> [WitnessesField era] -> TxWits era
forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses t -> t -> t
Policy
override Proof era
wit [WitnessesField era]
wfields) StrictMaybe (TxAuxData MaryEra)
d
    AuxData StrictMaybe (TxAuxData era)
faux -> TxBody MaryEra
-> TxWits MaryEra
-> StrictMaybe (TxAuxData MaryEra)
-> ShelleyTx MaryEra
forall era.
TxBody era
-> TxWits era -> StrictMaybe (TxAuxData era) -> ShelleyTx era
ShelleyTx TxBody MaryEra
b TxWits MaryEra
w StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData MaryEra)
faux
    Valid IsValid
_ -> Tx era
tx
updateTx wit :: Proof era
wit@Proof era
Alonzo (Alonzo.AlonzoTx TxBody AlonzoEra
b TxWits AlonzoEra
w IsValid
iv StrictMaybe (TxAuxData AlonzoEra)
d) TxField era
dt =
  case TxField era
dt of
    Body TxBody era
fbody -> TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
Alonzo.AlonzoTx TxBody era
fbody TxWits era
TxWits AlonzoEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData AlonzoEra)
d
    BodyI [TxBodyField era]
bfields -> TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
Alonzo.AlonzoTx (Proof era -> [TxBodyField era] -> TxBody era
forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
wit [TxBodyField era]
bfields) TxWits era
TxWits AlonzoEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData AlonzoEra)
d
    TxWits TxWits era
fwit -> TxBody AlonzoEra
-> TxWits AlonzoEra
-> IsValid
-> StrictMaybe (TxAuxData AlonzoEra)
-> AlonzoTx AlonzoEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
Alonzo.AlonzoTx TxBody AlonzoEra
b TxWits era
TxWits AlonzoEra
fwit IsValid
iv StrictMaybe (TxAuxData AlonzoEra)
d
    WitnessesI [WitnessesField era]
wfields -> TxBody AlonzoEra
-> TxWits AlonzoEra
-> IsValid
-> StrictMaybe (TxAuxData AlonzoEra)
-> AlonzoTx AlonzoEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
Alonzo.AlonzoTx TxBody AlonzoEra
b (Policy -> Proof era -> [WitnessesField era] -> TxWits era
forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses t -> t -> t
Policy
override Proof era
wit [WitnessesField era]
wfields) IsValid
iv StrictMaybe (TxAuxData AlonzoEra)
d
    AuxData StrictMaybe (TxAuxData era)
faux -> TxBody AlonzoEra
-> TxWits AlonzoEra
-> IsValid
-> StrictMaybe (TxAuxData AlonzoEra)
-> AlonzoTx AlonzoEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
Alonzo.AlonzoTx TxBody AlonzoEra
b TxWits AlonzoEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData AlonzoEra)
faux
    Valid IsValid
iv' -> TxBody AlonzoEra
-> TxWits AlonzoEra
-> IsValid
-> StrictMaybe (TxAuxData AlonzoEra)
-> AlonzoTx AlonzoEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
Alonzo.AlonzoTx TxBody AlonzoEra
b TxWits AlonzoEra
w IsValid
iv' StrictMaybe (TxAuxData AlonzoEra)
d
updateTx wit :: Proof era
wit@Proof era
Babbage (AlonzoTx TxBody BabbageEra
b TxWits BabbageEra
w IsValid
iv StrictMaybe (TxAuxData BabbageEra)
d) TxField era
dt =
  case TxField era
dt of
    Body TxBody era
fbody -> TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody era
fbody TxWits era
TxWits BabbageEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData BabbageEra)
d
    BodyI [TxBodyField era]
bfields -> TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx (Proof era -> [TxBodyField era] -> TxBody era
forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
wit [TxBodyField era]
bfields) TxWits era
TxWits BabbageEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData BabbageEra)
d
    TxWits TxWits era
fwit -> TxBody BabbageEra
-> TxWits BabbageEra
-> IsValid
-> StrictMaybe (TxAuxData BabbageEra)
-> AlonzoTx BabbageEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody BabbageEra
b TxWits era
TxWits BabbageEra
fwit IsValid
iv StrictMaybe (TxAuxData BabbageEra)
d
    WitnessesI [WitnessesField era]
wfields -> TxBody BabbageEra
-> TxWits BabbageEra
-> IsValid
-> StrictMaybe (TxAuxData BabbageEra)
-> AlonzoTx BabbageEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody BabbageEra
b (Policy -> Proof era -> [WitnessesField era] -> TxWits era
forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses t -> t -> t
Policy
override Proof era
wit [WitnessesField era]
wfields) IsValid
iv StrictMaybe (TxAuxData BabbageEra)
d
    AuxData StrictMaybe (TxAuxData era)
faux -> TxBody BabbageEra
-> TxWits BabbageEra
-> IsValid
-> StrictMaybe (TxAuxData BabbageEra)
-> AlonzoTx BabbageEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody BabbageEra
b TxWits BabbageEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData BabbageEra)
faux
    Valid IsValid
iv' -> TxBody BabbageEra
-> TxWits BabbageEra
-> IsValid
-> StrictMaybe (TxAuxData BabbageEra)
-> AlonzoTx BabbageEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody BabbageEra
b TxWits BabbageEra
w IsValid
iv' StrictMaybe (TxAuxData BabbageEra)
d
updateTx wit :: Proof era
wit@Proof era
Conway (AlonzoTx TxBody ConwayEra
b TxWits ConwayEra
w IsValid
iv StrictMaybe (TxAuxData ConwayEra)
d) TxField era
dt =
  case TxField era
dt of
    Body TxBody era
fbody -> TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody era
fbody TxWits era
TxWits ConwayEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData ConwayEra)
d
    BodyI [TxBodyField era]
bfields -> TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx (Proof era -> [TxBodyField era] -> TxBody era
forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
wit [TxBodyField era]
bfields) TxWits era
TxWits ConwayEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData ConwayEra)
d
    TxWits TxWits era
fwit -> TxBody ConwayEra
-> TxWits ConwayEra
-> IsValid
-> StrictMaybe (TxAuxData ConwayEra)
-> AlonzoTx ConwayEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody ConwayEra
b TxWits era
TxWits ConwayEra
fwit IsValid
iv StrictMaybe (TxAuxData ConwayEra)
d
    WitnessesI [WitnessesField era]
wfields -> TxBody ConwayEra
-> TxWits ConwayEra
-> IsValid
-> StrictMaybe (TxAuxData ConwayEra)
-> AlonzoTx ConwayEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody ConwayEra
b (Policy -> Proof era -> [WitnessesField era] -> TxWits era
forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses t -> t -> t
Policy
override Proof era
wit [WitnessesField era]
wfields) IsValid
iv StrictMaybe (TxAuxData ConwayEra)
d
    AuxData StrictMaybe (TxAuxData era)
faux -> TxBody ConwayEra
-> TxWits ConwayEra
-> IsValid
-> StrictMaybe (TxAuxData ConwayEra)
-> AlonzoTx ConwayEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody ConwayEra
b TxWits ConwayEra
w IsValid
iv StrictMaybe (TxAuxData era)
StrictMaybe (TxAuxData ConwayEra)
faux
    Valid IsValid
iv' -> TxBody ConwayEra
-> TxWits ConwayEra
-> IsValid
-> StrictMaybe (TxAuxData ConwayEra)
-> AlonzoTx ConwayEra
forall era.
TxBody era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> AlonzoTx era
AlonzoTx TxBody ConwayEra
b TxWits ConwayEra
w IsValid
iv' StrictMaybe (TxAuxData ConwayEra)
d
{-# NOINLINE updateTx #-}

newTx :: Proof era -> [TxField era] -> Tx era
newTx :: forall era. Proof era -> [TxField era] -> Tx era
newTx Proof era
era = (Tx era -> TxField era -> Tx era)
-> Tx era -> [TxField era] -> Tx era
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
List.foldl' (Proof era -> Tx era -> TxField era -> Tx era
forall era. Proof era -> Tx era -> TxField era -> Tx era
updateTx Proof era
era) (Proof era -> Tx era
forall era. Proof era -> Tx era
initialTx Proof era
era)

--------------------------------------------------------------------
-- Updaters for TxBody

updateTxBody :: EraTxBody era => Proof era -> TxBody era -> TxBodyField era -> TxBody era
updateTxBody :: forall era.
EraTxBody era =>
Proof era -> TxBody era -> TxBodyField era -> TxBody era
updateTxBody Proof era
pf TxBody era
txBody TxBodyField era
dt =
  case Proof era
pf of
    Proof era
_ | Inputs Set TxIn
ins <- TxBodyField era
dt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody era) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody era -> Identity (TxBody era))
-> Set TxIn -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set TxIn
ins
    Proof era
_ | Outputs StrictSeq (TxOut era)
outs <- TxBodyField era
dt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxOut era))
Lens' (TxBody era) (StrictSeq (TxOut era))
outputsTxBodyL ((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (TxOut era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxOut era)
outs
    Proof era
_ | Txfee Coin
fee <- TxBodyField era
dt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Coin
Lens' (TxBody era) Coin
feeTxBodyL ((Coin -> Identity Coin) -> TxBody era -> Identity (TxBody era))
-> Coin -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
fee
    Proof era
_ | AdHash StrictMaybe TxAuxDataHash
auxDataHash <- TxBodyField era
dt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe TxAuxDataHash -> Identity (StrictMaybe TxAuxDataHash))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictMaybe TxAuxDataHash)
Lens' (TxBody era) (StrictMaybe TxAuxDataHash)
auxDataHashTxBodyL ((StrictMaybe TxAuxDataHash
  -> Identity (StrictMaybe TxAuxDataHash))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe TxAuxDataHash -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe TxAuxDataHash
auxDataHash
    Proof era
Shelley -> case TxBodyField era
dt of
      Certs StrictSeq (TxCert era)
certs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody era -> Identity (TxBody era)
(StrictSeq (ShelleyTxCert ShelleyEra)
 -> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens' (TxBody era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (ShelleyTxCert ShelleyEra)
  -> Identity (StrictSeq (ShelleyTxCert ShelleyEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (ShelleyTxCert ShelleyEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
StrictSeq (ShelleyTxCert ShelleyEra)
certs
      Withdrawals' Withdrawals
withdrawals -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Withdrawals
Lens' (TxBody era) Withdrawals
withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
 -> TxBody era -> Identity (TxBody era))
-> Withdrawals -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Withdrawals
withdrawals
      TTL SlotNo
ttl -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (SlotNo -> Identity SlotNo) -> TxBody era -> Identity (TxBody era)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody era) SlotNo
Lens' (TxBody era) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
 -> TxBody era -> Identity (TxBody era))
-> SlotNo -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ SlotNo
ttl
      Update StrictMaybe (Update era)
update -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
-> TxBody era -> Identity (TxBody era)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (Update era))
Lens' (TxBody era) (StrictMaybe (Update era))
updateTxBodyL ((StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (Update era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (Update era)
update
      TxBodyField era
_ -> TxBody era
txBody
    Proof era
Allegra -> case TxBodyField era
dt of
      Certs StrictSeq (TxCert era)
certs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody era -> Identity (TxBody era)
(StrictSeq (ShelleyTxCert AllegraEra)
 -> Identity (StrictSeq (ShelleyTxCert AllegraEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens' (TxBody era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (ShelleyTxCert AllegraEra)
  -> Identity (StrictSeq (ShelleyTxCert AllegraEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (ShelleyTxCert AllegraEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
StrictSeq (ShelleyTxCert AllegraEra)
certs
      Withdrawals' Withdrawals
withdrawals -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Withdrawals
Lens' (TxBody era) Withdrawals
withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
 -> TxBody era -> Identity (TxBody era))
-> Withdrawals -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Withdrawals
withdrawals
      Vldt ValidityInterval
vldt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody era -> Identity (TxBody era)
forall era.
AllegraEraTxBody era =>
Lens' (TxBody era) ValidityInterval
Lens' (TxBody era) ValidityInterval
vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
 -> TxBody era -> Identity (TxBody era))
-> ValidityInterval -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ValidityInterval
vldt
      Update StrictMaybe (Update era)
update -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
-> TxBody era -> Identity (TxBody era)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (Update era))
Lens' (TxBody era) (StrictMaybe (Update era))
updateTxBodyL ((StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (Update era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (Update era)
update
      TxBodyField era
_ -> TxBody era
txBody
    Proof era
Mary -> case TxBodyField era
dt of
      Certs StrictSeq (TxCert era)
certs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody era -> Identity (TxBody era)
(StrictSeq (ShelleyTxCert MaryEra)
 -> Identity (StrictSeq (ShelleyTxCert MaryEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens' (TxBody era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (ShelleyTxCert MaryEra)
  -> Identity (StrictSeq (ShelleyTxCert MaryEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (ShelleyTxCert MaryEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
StrictSeq (ShelleyTxCert MaryEra)
certs
      Withdrawals' Withdrawals
withdrawals -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Withdrawals
Lens' (TxBody era) Withdrawals
withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
 -> TxBody era -> Identity (TxBody era))
-> Withdrawals -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Withdrawals
withdrawals
      Vldt ValidityInterval
vldt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody era -> Identity (TxBody era)
forall era.
AllegraEraTxBody era =>
Lens' (TxBody era) ValidityInterval
Lens' (TxBody era) ValidityInterval
vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
 -> TxBody era -> Identity (TxBody era))
-> ValidityInterval -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ValidityInterval
vldt
      Update StrictMaybe (Update era)
update -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
-> TxBody era -> Identity (TxBody era)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (Update era))
Lens' (TxBody era) (StrictMaybe (Update era))
updateTxBodyL ((StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (Update era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (Update era)
update
      Mint MultiAsset
mint -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (MultiAsset -> Identity MultiAsset)
-> TxBody era -> Identity (TxBody era)
forall era. MaryEraTxBody era => Lens' (TxBody era) MultiAsset
Lens' (TxBody era) MultiAsset
mintTxBodyL ((MultiAsset -> Identity MultiAsset)
 -> TxBody era -> Identity (TxBody era))
-> MultiAsset -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ MultiAsset
mint
      TxBodyField era
_ -> TxBody era
txBody
    Proof era
Alonzo -> case TxBodyField era
dt of
      Certs StrictSeq (TxCert era)
certs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody era -> Identity (TxBody era)
(StrictSeq (ShelleyTxCert AlonzoEra)
 -> Identity (StrictSeq (ShelleyTxCert AlonzoEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens' (TxBody era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (ShelleyTxCert AlonzoEra)
  -> Identity (StrictSeq (ShelleyTxCert AlonzoEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (ShelleyTxCert AlonzoEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
StrictSeq (ShelleyTxCert AlonzoEra)
certs
      Withdrawals' Withdrawals
withdrawals -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Withdrawals
Lens' (TxBody era) Withdrawals
withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
 -> TxBody era -> Identity (TxBody era))
-> Withdrawals -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Withdrawals
withdrawals
      Vldt ValidityInterval
vldt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody era -> Identity (TxBody era)
forall era.
AllegraEraTxBody era =>
Lens' (TxBody era) ValidityInterval
Lens' (TxBody era) ValidityInterval
vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
 -> TxBody era -> Identity (TxBody era))
-> ValidityInterval -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ValidityInterval
vldt
      Update StrictMaybe (Update era)
update -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
-> TxBody era -> Identity (TxBody era)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (Update era))
Lens' (TxBody era) (StrictMaybe (Update era))
updateTxBodyL ((StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (Update era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (Update era)
update
      Mint MultiAsset
mint -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (MultiAsset -> Identity MultiAsset)
-> TxBody era -> Identity (TxBody era)
forall era. MaryEraTxBody era => Lens' (TxBody era) MultiAsset
Lens' (TxBody era) MultiAsset
mintTxBodyL ((MultiAsset -> Identity MultiAsset)
 -> TxBody era -> Identity (TxBody era))
-> MultiAsset -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ MultiAsset
mint
      Collateral Set TxIn
collateral -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody era -> Identity (TxBody era)
forall era. AlonzoEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody era) (Set TxIn)
collateralInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody era -> Identity (TxBody era))
-> Set TxIn -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set TxIn
collateral
      ReqSignerHashes Set (KeyHash 'Witness)
reqSignerHashes -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set (KeyHash 'Witness) -> Identity (Set (KeyHash 'Witness)))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (Set (KeyHash 'Witness))
Lens' (TxBody era) (Set (KeyHash 'Witness))
reqSignerHashesTxBodyL ((Set (KeyHash 'Witness) -> Identity (Set (KeyHash 'Witness)))
 -> TxBody era -> Identity (TxBody era))
-> Set (KeyHash 'Witness) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set (KeyHash 'Witness)
reqSignerHashes
      WppHash StrictMaybe ScriptIntegrityHash
scriptIntegrityHash -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe ScriptIntegrityHash
 -> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
  -> Identity (StrictMaybe ScriptIntegrityHash))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe ScriptIntegrityHash -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ScriptIntegrityHash
scriptIntegrityHash
      Txnetworkid StrictMaybe Network
networkId -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Network -> Identity (StrictMaybe Network))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Network)
Lens' (TxBody era) (StrictMaybe Network)
networkIdTxBodyL ((StrictMaybe Network -> Identity (StrictMaybe Network))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe Network -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Network
networkId
      TxBodyField era
_ -> TxBody era
txBody
    Proof era
Babbage -> case TxBodyField era
dt of
      Certs StrictSeq (TxCert era)
certs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody era -> Identity (TxBody era)
(StrictSeq (ShelleyTxCert BabbageEra)
 -> Identity (StrictSeq (ShelleyTxCert BabbageEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens' (TxBody era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (ShelleyTxCert BabbageEra)
  -> Identity (StrictSeq (ShelleyTxCert BabbageEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (ShelleyTxCert BabbageEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
StrictSeq (ShelleyTxCert BabbageEra)
certs
      Withdrawals' Withdrawals
withdrawals -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Withdrawals
Lens' (TxBody era) Withdrawals
withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
 -> TxBody era -> Identity (TxBody era))
-> Withdrawals -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Withdrawals
withdrawals
      Vldt ValidityInterval
vldt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody era -> Identity (TxBody era)
forall era.
AllegraEraTxBody era =>
Lens' (TxBody era) ValidityInterval
Lens' (TxBody era) ValidityInterval
vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
 -> TxBody era -> Identity (TxBody era))
-> ValidityInterval -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ValidityInterval
vldt
      Update StrictMaybe (Update era)
update -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
-> TxBody era -> Identity (TxBody era)
forall era.
ShelleyEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (Update era))
Lens' (TxBody era) (StrictMaybe (Update era))
updateTxBodyL ((StrictMaybe (Update era) -> Identity (StrictMaybe (Update era)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (Update era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (Update era)
update
      Mint MultiAsset
mint -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (MultiAsset -> Identity MultiAsset)
-> TxBody era -> Identity (TxBody era)
forall era. MaryEraTxBody era => Lens' (TxBody era) MultiAsset
Lens' (TxBody era) MultiAsset
mintTxBodyL ((MultiAsset -> Identity MultiAsset)
 -> TxBody era -> Identity (TxBody era))
-> MultiAsset -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ MultiAsset
mint
      Collateral Set TxIn
collateral -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody era -> Identity (TxBody era)
forall era. AlonzoEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody era) (Set TxIn)
collateralInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody era -> Identity (TxBody era))
-> Set TxIn -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set TxIn
collateral
      ReqSignerHashes Set (KeyHash 'Witness)
reqSignerHashes -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set (KeyHash 'Witness) -> Identity (Set (KeyHash 'Witness)))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (Set (KeyHash 'Witness))
Lens' (TxBody era) (Set (KeyHash 'Witness))
reqSignerHashesTxBodyL ((Set (KeyHash 'Witness) -> Identity (Set (KeyHash 'Witness)))
 -> TxBody era -> Identity (TxBody era))
-> Set (KeyHash 'Witness) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set (KeyHash 'Witness)
reqSignerHashes
      WppHash StrictMaybe ScriptIntegrityHash
scriptIntegrityHash -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe ScriptIntegrityHash
 -> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
  -> Identity (StrictMaybe ScriptIntegrityHash))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe ScriptIntegrityHash -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ScriptIntegrityHash
scriptIntegrityHash
      Txnetworkid StrictMaybe Network
networkId -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Network -> Identity (StrictMaybe Network))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Network)
Lens' (TxBody era) (StrictMaybe Network)
networkIdTxBodyL ((StrictMaybe Network -> Identity (StrictMaybe Network))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe Network -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Network
networkId
      RefInputs Set TxIn
refInputs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody era -> Identity (TxBody era)
forall era. BabbageEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody era) (Set TxIn)
referenceInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody era -> Identity (TxBody era))
-> Set TxIn -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set TxIn
refInputs
      TotalCol StrictMaybe Coin
totalCol -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody era -> Identity (TxBody era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Coin)
Lens' (TxBody era) (StrictMaybe Coin)
totalCollateralTxBodyL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe Coin -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
totalCol
      CollateralReturn StrictMaybe (TxOut era)
collateralReturn -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (TxOut era) -> Identity (StrictMaybe (TxOut era)))
-> TxBody era -> Identity (TxBody era)
(StrictMaybe (BabbageTxOut BabbageEra)
 -> Identity (StrictMaybe (BabbageTxOut BabbageEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (TxOut era))
Lens' (TxBody era) (StrictMaybe (TxOut era))
collateralReturnTxBodyL ((StrictMaybe (BabbageTxOut BabbageEra)
  -> Identity (StrictMaybe (BabbageTxOut BabbageEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (BabbageTxOut BabbageEra)
-> TxBody era
-> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (TxOut era)
StrictMaybe (BabbageTxOut BabbageEra)
collateralReturn
      TxBodyField era
_ -> TxBody era
txBody
    Proof era
Conway -> case TxBodyField era
dt of
      Certs StrictSeq (TxCert era)
certs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody era -> Identity (TxBody era)
(StrictSeq (ConwayTxCert ConwayEra)
 -> Identity (StrictSeq (ConwayTxCert ConwayEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxCert era))
Lens' (TxBody era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (ConwayTxCert ConwayEra)
  -> Identity (StrictSeq (ConwayTxCert ConwayEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictSeq (ConwayTxCert ConwayEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
StrictSeq (ConwayTxCert ConwayEra)
certs
      Withdrawals' Withdrawals
withdrawals -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody era -> Identity (TxBody era)
forall era. EraTxBody era => Lens' (TxBody era) Withdrawals
Lens' (TxBody era) Withdrawals
withdrawalsTxBodyL ((Withdrawals -> Identity Withdrawals)
 -> TxBody era -> Identity (TxBody era))
-> Withdrawals -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Withdrawals
withdrawals
      Vldt ValidityInterval
vldt -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody era -> Identity (TxBody era)
forall era.
AllegraEraTxBody era =>
Lens' (TxBody era) ValidityInterval
Lens' (TxBody era) ValidityInterval
vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
 -> TxBody era -> Identity (TxBody era))
-> ValidityInterval -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ValidityInterval
vldt
      Mint MultiAsset
mint -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (MultiAsset -> Identity MultiAsset)
-> TxBody era -> Identity (TxBody era)
forall era. MaryEraTxBody era => Lens' (TxBody era) MultiAsset
Lens' (TxBody era) MultiAsset
mintTxBodyL ((MultiAsset -> Identity MultiAsset)
 -> TxBody era -> Identity (TxBody era))
-> MultiAsset -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ MultiAsset
mint
      Collateral Set TxIn
collateral -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody era -> Identity (TxBody era)
forall era. AlonzoEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody era) (Set TxIn)
collateralInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody era -> Identity (TxBody era))
-> Set TxIn -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set TxIn
collateral
      ReqSignerHashes Set (KeyHash 'Witness)
reqSignerHashes -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set (KeyHash 'Witness) -> Identity (Set (KeyHash 'Witness)))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (Set (KeyHash 'Witness))
Lens' (TxBody era) (Set (KeyHash 'Witness))
reqSignerHashesTxBodyL ((Set (KeyHash 'Witness) -> Identity (Set (KeyHash 'Witness)))
 -> TxBody era -> Identity (TxBody era))
-> Set (KeyHash 'Witness) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set (KeyHash 'Witness)
reqSignerHashes
      WppHash StrictMaybe ScriptIntegrityHash
scriptIntegrityHash -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe ScriptIntegrityHash
 -> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
  -> Identity (StrictMaybe ScriptIntegrityHash))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe ScriptIntegrityHash -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ScriptIntegrityHash
scriptIntegrityHash
      Txnetworkid StrictMaybe Network
networkId -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Network -> Identity (StrictMaybe Network))
-> TxBody era -> Identity (TxBody era)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Network)
Lens' (TxBody era) (StrictMaybe Network)
networkIdTxBodyL ((StrictMaybe Network -> Identity (StrictMaybe Network))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe Network -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Network
networkId
      RefInputs Set TxIn
refInputs -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody era -> Identity (TxBody era)
forall era. BabbageEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody era) (Set TxIn)
referenceInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody era -> Identity (TxBody era))
-> Set TxIn -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Set TxIn
refInputs
      TotalCol StrictMaybe Coin
totalCol -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody era -> Identity (TxBody era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Coin)
Lens' (TxBody era) (StrictMaybe Coin)
totalCollateralTxBodyL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe Coin -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
totalCol
      CollateralReturn StrictMaybe (TxOut era)
collateralReturn -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (TxOut era) -> Identity (StrictMaybe (TxOut era)))
-> TxBody era -> Identity (TxBody era)
(StrictMaybe (BabbageTxOut ConwayEra)
 -> Identity (StrictMaybe (BabbageTxOut ConwayEra)))
-> TxBody era -> Identity (TxBody era)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (TxOut era))
Lens' (TxBody era) (StrictMaybe (TxOut era))
collateralReturnTxBodyL ((StrictMaybe (BabbageTxOut ConwayEra)
  -> Identity (StrictMaybe (BabbageTxOut ConwayEra)))
 -> TxBody era -> Identity (TxBody era))
-> StrictMaybe (BabbageTxOut ConwayEra) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (TxOut era)
StrictMaybe (BabbageTxOut ConwayEra)
collateralReturn
      VotingProc VotingProcedures era
vp -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (VotingProcedures era -> Identity (VotingProcedures era))
-> TxBody era -> Identity (TxBody era)
forall era.
ConwayEraTxBody era =>
Lens' (TxBody era) (VotingProcedures era)
Lens' (TxBody era) (VotingProcedures era)
votingProceduresTxBodyL ((VotingProcedures era -> Identity (VotingProcedures era))
 -> TxBody era -> Identity (TxBody era))
-> VotingProcedures era -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VotingProcedures era
vp
      ProposalProc OSet (ProposalProcedure era)
pp -> TxBody era
txBody TxBody era -> (TxBody era -> TxBody era) -> TxBody era
forall a b. a -> (a -> b) -> b
& (OSet (ProposalProcedure era)
 -> Identity (OSet (ProposalProcedure era)))
-> TxBody era -> Identity (TxBody era)
forall era.
ConwayEraTxBody era =>
Lens' (TxBody era) (OSet (ProposalProcedure era))
Lens' (TxBody era) (OSet (ProposalProcedure era))
proposalProceduresTxBodyL ((OSet (ProposalProcedure era)
  -> Identity (OSet (ProposalProcedure era)))
 -> TxBody era -> Identity (TxBody era))
-> OSet (ProposalProcedure era) -> TxBody era -> TxBody era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ OSet (ProposalProcedure era)
pp
      TxBodyField era
_ -> TxBody era
txBody
{-# NOINLINE updateTxBody #-}

newTxBody :: EraTxBody era => Proof era -> [TxBodyField era] -> TxBody era
newTxBody :: forall era.
EraTxBody era =>
Proof era -> [TxBodyField era] -> TxBody era
newTxBody Proof era
era = (TxBody era -> TxBodyField era -> TxBody era)
-> TxBody era -> [TxBodyField era] -> TxBody era
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
List.foldl' (Proof era -> TxBody era -> TxBodyField era -> TxBody era
forall era.
EraTxBody era =>
Proof era -> TxBody era -> TxBodyField era -> TxBody era
updateTxBody Proof era
era) (Proof era -> TxBody era
forall era. Proof era -> TxBody era
initialTxBody Proof era
era)

--------------------------------------------------------------------
-- Updaters for TxWits

updateWitnesses :: forall era. Policy -> Proof era -> TxWits era -> WitnessesField era -> TxWits era
updateWitnesses :: forall era.
Policy
-> Proof era -> TxWits era -> WitnessesField era -> TxWits era
updateWitnesses Policy
p Proof era
Shelley TxWits era
w WitnessesField era
dw = case WitnessesField era
dw of
  (AddrWits Set (WitVKey 'Witness)
ks) -> TxWits era
w {Shelley.addrWits = p (Shelley.addrWits w) ks}
  (BootWits Set BootstrapWitness
boots) -> TxWits era
w {Shelley.bootWits = p (Shelley.bootWits w) boots}
  (ScriptWits Map ScriptHash (Script era)
ss) -> TxWits era
w {Shelley.scriptWits = p (Shelley.scriptWits w) ss}
  WitnessesField era
_ -> TxWits era
w
updateWitnesses Policy
p Proof era
Allegra TxWits era
w WitnessesField era
dw = case WitnessesField era
dw of
  (AddrWits Set (WitVKey 'Witness)
ks) -> TxWits era
w {Shelley.addrWits = p (Shelley.addrWits w) ks}
  (BootWits Set BootstrapWitness
boots) -> TxWits era
w {Shelley.bootWits = p (Shelley.bootWits w) boots}
  (ScriptWits Map ScriptHash (Script era)
ss) -> TxWits era
w {Shelley.scriptWits = p (Shelley.scriptWits w) ss}
  WitnessesField era
_ -> TxWits era
w
updateWitnesses Policy
p Proof era
Mary TxWits era
w WitnessesField era
dw = case WitnessesField era
dw of
  (AddrWits Set (WitVKey 'Witness)
ks) -> TxWits era
w {Shelley.addrWits = p (Shelley.addrWits w) ks}
  (BootWits Set BootstrapWitness
boots) -> TxWits era
w {Shelley.bootWits = p (Shelley.bootWits w) boots}
  (ScriptWits Map ScriptHash (Script era)
ss) -> TxWits era
w {Shelley.scriptWits = p (Shelley.scriptWits w) ss}
  WitnessesField era
_ -> TxWits era
w
updateWitnesses Policy
p Proof era
Alonzo TxWits era
w WitnessesField era
dw = case WitnessesField era
dw of
  (AddrWits Set (WitVKey 'Witness)
ks) -> TxWits era
w {txwitsVKey = p (txwitsVKey w) ks}
  (BootWits Set BootstrapWitness
boots) -> TxWits era
w {txwitsBoot = p (txwitsBoot w) boots}
  (ScriptWits Map ScriptHash (Script era)
ss) -> TxWits era
w {txscripts = p (txscripts w) ss}
  (DataWits TxDats era
ds) -> TxWits era
w {txdats = p (txdats w) ds}
  (RdmrWits Redeemers era
r) -> TxWits era
w {txrdmrs = p (txrdmrs w) r}
updateWitnesses Policy
p Proof era
Babbage TxWits era
w WitnessesField era
dw = case WitnessesField era
dw of
  (AddrWits Set (WitVKey 'Witness)
ks) -> TxWits era
w {txwitsVKey = p (txwitsVKey w) ks}
  (BootWits Set BootstrapWitness
boots) -> TxWits era
w {txwitsBoot = p (txwitsBoot w) boots}
  (ScriptWits Map ScriptHash (Script era)
ss) -> TxWits era
w {txscripts = p (txscripts w) ss}
  (DataWits TxDats era
ds) -> TxWits era
w {txdats = p (txdats w) ds}
  (RdmrWits Redeemers era
r) -> TxWits era
w {txrdmrs = p (txrdmrs w) r}
updateWitnesses Policy
p Proof era
Conway TxWits era
w WitnessesField era
dw = case WitnessesField era
dw of
  (AddrWits Set (WitVKey 'Witness)
ks) -> TxWits era
w {txwitsVKey = p (txwitsVKey w) ks}
  (BootWits Set BootstrapWitness
boots) -> TxWits era
w {txwitsBoot = p (txwitsBoot w) boots}
  (ScriptWits Map ScriptHash (Script era)
ss) -> TxWits era
w {txscripts = p (txscripts w) ss}
  (DataWits TxDats era
ds) -> TxWits era
w {txdats = p (txdats w) ds}
  (RdmrWits Redeemers era
r) -> TxWits era
w {txrdmrs = p (txrdmrs w) r}
{-# NOINLINE updateWitnesses #-}

newWitnesses :: Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses :: forall era.
Policy -> Proof era -> [WitnessesField era] -> TxWits era
newWitnesses Policy
p Proof era
era = (TxWits era -> WitnessesField era -> TxWits era)
-> TxWits era -> [WitnessesField era] -> TxWits era
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
List.foldl' (Policy
-> Proof era -> TxWits era -> WitnessesField era -> TxWits era
forall era.
Policy
-> Proof era -> TxWits era -> WitnessesField era -> TxWits era
updateWitnesses t -> t -> t
Policy
p Proof era
era) (Proof era -> TxWits era
forall era. Proof era -> TxWits era
initialWitnesses Proof era
era)

--------------------------------------------------------------------
-- Updaters for TxOut

notAddress :: TxOutField era -> Bool
notAddress :: forall era. TxOutField era -> Bool
notAddress (Address Addr
_) = Bool
False
notAddress TxOutField era
_ = Bool
True

updateTxOut :: Proof era -> TxOut era -> TxOutField era -> TxOut era
updateTxOut :: forall era. Proof era -> TxOut era -> TxOutField era -> TxOut era
updateTxOut Proof era
Shelley (out :: TxOut era
out@(ShelleyTxOut Addr
a Value ShelleyEra
v)) TxOutField era
txoutd = case TxOutField era
txoutd of
  Address Addr
addr -> Addr -> Value ShelleyEra -> ShelleyTxOut ShelleyEra
forall era.
(HasCallStack, Era era, Val (Value era)) =>
Addr -> Value era -> ShelleyTxOut era
ShelleyTxOut Addr
addr Value ShelleyEra
v
  Amount Value era
val -> Addr -> Value ShelleyEra -> ShelleyTxOut ShelleyEra
forall era.
(HasCallStack, Era era, Val (Value era)) =>
Addr -> Value era -> ShelleyTxOut era
ShelleyTxOut Addr
a Value era
Value ShelleyEra
val
  TxOutField era
_ -> TxOut era
out
updateTxOut Proof era
Allegra (out :: TxOut era
out@(ShelleyTxOut Addr
a Value AllegraEra
v)) TxOutField era
txoutd = case TxOutField era
txoutd of
  Address Addr
addr -> Addr -> Value AllegraEra -> ShelleyTxOut AllegraEra
forall era.
(HasCallStack, Era era, Val (Value era)) =>
Addr -> Value era -> ShelleyTxOut era
ShelleyTxOut Addr
addr Value AllegraEra
v
  Amount Value era
val -> Addr -> Value AllegraEra -> ShelleyTxOut AllegraEra
forall era.
(HasCallStack, Era era, Val (Value era)) =>
Addr -> Value era -> ShelleyTxOut era
ShelleyTxOut Addr
a Value era
Value AllegraEra
val
  TxOutField era
_ -> TxOut era
out
updateTxOut Proof era
Mary (out :: TxOut era
out@(ShelleyTxOut Addr
a Value MaryEra
v)) TxOutField era
txoutd = case TxOutField era
txoutd of
  Address Addr
addr -> Addr -> Value MaryEra -> ShelleyTxOut MaryEra
forall era.
(HasCallStack, Era era, Val (Value era)) =>
Addr -> Value era -> ShelleyTxOut era
ShelleyTxOut Addr
addr Value MaryEra
v
  Amount Value era
val -> Addr -> Value MaryEra -> ShelleyTxOut MaryEra
forall era.
(HasCallStack, Era era, Val (Value era)) =>
Addr -> Value era -> ShelleyTxOut era
ShelleyTxOut Addr
a Value era
Value MaryEra
val
  TxOutField era
_ -> TxOut era
out
updateTxOut Proof era
Alonzo (out :: TxOut era
out@(AlonzoTxOut Addr
a Value AlonzoEra
v StrictMaybe DataHash
h)) TxOutField era
txoutd = case TxOutField era
txoutd of
  Address Addr
addr -> Addr
-> Value AlonzoEra -> StrictMaybe DataHash -> AlonzoTxOut AlonzoEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr -> Value era -> StrictMaybe DataHash -> AlonzoTxOut era
AlonzoTxOut Addr
addr Value AlonzoEra
v StrictMaybe DataHash
h
  Amount Value era
val -> Addr
-> Value AlonzoEra -> StrictMaybe DataHash -> AlonzoTxOut AlonzoEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr -> Value era -> StrictMaybe DataHash -> AlonzoTxOut era
AlonzoTxOut Addr
a Value era
Value AlonzoEra
val StrictMaybe DataHash
h
  DHash StrictMaybe DataHash
mdh -> Addr
-> Value AlonzoEra -> StrictMaybe DataHash -> AlonzoTxOut AlonzoEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr -> Value era -> StrictMaybe DataHash -> AlonzoTxOut era
AlonzoTxOut Addr
a Value AlonzoEra
v StrictMaybe DataHash
mdh
  FDatum Datum era
d -> [Char] -> AlonzoTxOut AlonzoEra
forall a. HasCallStack => [Char] -> a
error ([Char]
"This feature is only available from Babbage onward " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Datum era -> [Char]
forall a. Show a => a -> [Char]
show Datum era
d)
  TxOutField era
_ -> TxOut era
out
updateTxOut Proof era
Babbage (BabbageTxOut Addr
a Value BabbageEra
v Datum BabbageEra
h StrictMaybe (Script BabbageEra)
refscript) TxOutField era
txoutd = case TxOutField era
txoutd of
  Address Addr
addr -> Addr
-> Value BabbageEra
-> Datum BabbageEra
-> StrictMaybe (Script BabbageEra)
-> BabbageTxOut BabbageEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
addr Value BabbageEra
v Datum BabbageEra
h StrictMaybe (Script BabbageEra)
refscript
  Amount Value era
val -> Addr
-> Value BabbageEra
-> Datum BabbageEra
-> StrictMaybe (Script BabbageEra)
-> BabbageTxOut BabbageEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value era
Value BabbageEra
val Datum BabbageEra
h StrictMaybe (Script BabbageEra)
refscript
  DHash StrictMaybe DataHash
SNothing -> Addr
-> Value BabbageEra
-> Datum BabbageEra
-> StrictMaybe (Script BabbageEra)
-> BabbageTxOut BabbageEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value BabbageEra
v Datum BabbageEra
forall era. Datum era
NoDatum StrictMaybe (Script BabbageEra)
refscript
  DHash (SJust DataHash
dh) -> Addr
-> Value BabbageEra
-> Datum BabbageEra
-> StrictMaybe (Script BabbageEra)
-> BabbageTxOut BabbageEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value BabbageEra
v (DataHash -> Datum BabbageEra
forall era. DataHash -> Datum era
DatumHash DataHash
dh) StrictMaybe (Script BabbageEra)
refscript
  FDatum Datum era
d -> Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value era
Value BabbageEra
v Datum era
d StrictMaybe (Script era)
StrictMaybe (Script BabbageEra)
refscript
  RefScript StrictMaybe (Script era)
s -> Addr
-> Value BabbageEra
-> Datum BabbageEra
-> StrictMaybe (Script BabbageEra)
-> BabbageTxOut BabbageEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value BabbageEra
v Datum BabbageEra
h StrictMaybe (Script era)
StrictMaybe (Script BabbageEra)
s
updateTxOut Proof era
Conway (BabbageTxOut Addr
a Value ConwayEra
v Datum ConwayEra
h StrictMaybe (Script ConwayEra)
refscript) TxOutField era
txoutd = case TxOutField era
txoutd of
  Address Addr
addr -> Addr
-> Value ConwayEra
-> Datum ConwayEra
-> StrictMaybe (Script ConwayEra)
-> BabbageTxOut ConwayEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
addr Value ConwayEra
v Datum ConwayEra
h StrictMaybe (Script ConwayEra)
refscript
  Amount Value era
val -> Addr
-> Value ConwayEra
-> Datum ConwayEra
-> StrictMaybe (Script ConwayEra)
-> BabbageTxOut ConwayEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value era
Value ConwayEra
val Datum ConwayEra
h StrictMaybe (Script ConwayEra)
refscript
  DHash StrictMaybe DataHash
SNothing -> Addr
-> Value ConwayEra
-> Datum ConwayEra
-> StrictMaybe (Script ConwayEra)
-> BabbageTxOut ConwayEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value ConwayEra
v Datum ConwayEra
forall era. Datum era
NoDatum StrictMaybe (Script ConwayEra)
refscript
  DHash (SJust DataHash
dh) -> Addr
-> Value ConwayEra
-> Datum ConwayEra
-> StrictMaybe (Script ConwayEra)
-> BabbageTxOut ConwayEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value ConwayEra
v (DataHash -> Datum ConwayEra
forall era. DataHash -> Datum era
DatumHash DataHash
dh) StrictMaybe (Script ConwayEra)
refscript
  FDatum Datum era
d -> Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value era
Value ConwayEra
v Datum era
d StrictMaybe (Script era)
StrictMaybe (Script ConwayEra)
refscript
  RefScript StrictMaybe (Script era)
s -> Addr
-> Value ConwayEra
-> Datum ConwayEra
-> StrictMaybe (Script ConwayEra)
-> BabbageTxOut ConwayEra
forall era.
(Era era, Val (Value era), HasCallStack) =>
Addr
-> Value era
-> Datum era
-> StrictMaybe (Script era)
-> BabbageTxOut era
BabbageTxOut Addr
a Value ConwayEra
v Datum ConwayEra
h StrictMaybe (Script era)
StrictMaybe (Script ConwayEra)
s
{-# NOINLINE updateTxOut #-}

newTxOut :: Proof era -> [TxOutField era] -> TxOut era
newTxOut :: forall era. Proof era -> [TxOutField era] -> TxOut era
newTxOut Proof era
_ [TxOutField era]
dts | (TxOutField era -> Bool) -> [TxOutField era] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all TxOutField era -> Bool
forall era. TxOutField era -> Bool
notAddress [TxOutField era]
dts = [Char] -> TxOut era
forall a. HasCallStack => [Char] -> a
error ([Char]
"A call to newTxOut must have an (Address x) field.")
-- This is because we don't have a good story about an initial Address, so the user MUST supply one
newTxOut Proof era
era [TxOutField era]
dts = (TxOut era -> TxOutField era -> TxOut era)
-> TxOut era -> [TxOutField era] -> TxOut era
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
List.foldl' (Proof era -> TxOut era -> TxOutField era -> TxOut era
forall era. Proof era -> TxOut era -> TxOutField era -> TxOut era
updateTxOut Proof era
era) (Proof era -> TxOut era
forall era. Proof era -> TxOut era
initialTxOut Proof era
era) [TxOutField era]
dts

-- =====================================================

-- | updatePParams uses the Override policy exclusively
updatePParams :: EraPParams era => Proof era -> PParams era -> PParamsField era -> PParams era
updatePParams :: forall era.
EraPParams era =>
Proof era -> PParams era -> PParamsField era -> PParams era
updatePParams Proof era
proof PParams era
pp' PParamsField era
ppf =
  -- update all of the common fields first
  let pp :: PParams era
pp = case PParamsField era
ppf of
        MinfeeA Coin
minFeeA -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinFeeAL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
minFeeA
        MinfeeB Coin
minFeeB -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinFeeBL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
minFeeB
        MaxBBSize Word32
maxBBSize -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Word32 -> Identity Word32)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Word32
Lens' (PParams era) Word32
ppMaxBBSizeL ((Word32 -> Identity Word32)
 -> PParams era -> Identity (PParams era))
-> Word32 -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word32
maxBBSize
        MaxTxSize Word32
maxTxSize -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Word32 -> Identity Word32)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Word32
Lens' (PParams era) Word32
ppMaxTxSizeL ((Word32 -> Identity Word32)
 -> PParams era -> Identity (PParams era))
-> Word32 -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word32
maxTxSize
        MaxBHSize Word16
maxBHSize -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Word16 -> Identity Word16)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Word16
Lens' (PParams era) Word16
ppMaxBHSizeL ((Word16 -> Identity Word16)
 -> PParams era -> Identity (PParams era))
-> Word16 -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word16
maxBHSize
        KeyDeposit Coin
keyDeposit -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppKeyDepositL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
keyDeposit
        PoolDeposit Coin
poolDeposit -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppPoolDepositL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
poolDeposit
        EMax EpochInterval
e -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (EpochInterval -> Identity EpochInterval)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) EpochInterval
Lens' (PParams era) EpochInterval
ppEMaxL ((EpochInterval -> Identity EpochInterval)
 -> PParams era -> Identity (PParams era))
-> EpochInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ EpochInterval
e
        NOpt Word16
nat -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Word16 -> Identity Word16)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Word16
Lens' (PParams era) Word16
ppNOptL ((Word16 -> Identity Word16)
 -> PParams era -> Identity (PParams era))
-> Word16 -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word16
nat
        A0 NonNegativeInterval
a0 -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (NonNegativeInterval -> Identity NonNegativeInterval)
-> PParams era -> Identity (PParams era)
forall era.
EraPParams era =>
Lens' (PParams era) NonNegativeInterval
Lens' (PParams era) NonNegativeInterval
ppA0L ((NonNegativeInterval -> Identity NonNegativeInterval)
 -> PParams era -> Identity (PParams era))
-> NonNegativeInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ NonNegativeInterval
a0
        Rho UnitInterval
rho -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (UnitInterval -> Identity UnitInterval)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) UnitInterval
Lens' (PParams era) UnitInterval
ppRhoL ((UnitInterval -> Identity UnitInterval)
 -> PParams era -> Identity (PParams era))
-> UnitInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ UnitInterval
rho
        Tau UnitInterval
tau -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (UnitInterval -> Identity UnitInterval)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) UnitInterval
Lens' (PParams era) UnitInterval
ppTauL ((UnitInterval -> Identity UnitInterval)
 -> PParams era -> Identity (PParams era))
-> UnitInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ UnitInterval
tau
        ProtocolVersion ProtVer
pv -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ProtVer -> Identity ProtVer)
-> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) ProtVer
Lens' (PParams era) ProtVer
ppProtocolVersionL ((ProtVer -> Identity ProtVer)
 -> PParams era -> Identity (PParams era))
-> ProtVer -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ProtVer
pv
        MinPoolCost Coin
coin -> PParams era
pp' PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. EraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinPoolCostL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
coin
        PParamsField era
_ -> PParams era
pp'
   in case Proof era
proof of
        Proof era
Shelley ->
          case PParamsField era
ppf of
            D UnitInterval
d -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (UnitInterval -> Identity UnitInterval)
-> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) UnitInterval
Lens' (PParams era) UnitInterval
ppDL ((UnitInterval -> Identity UnitInterval)
 -> PParams era -> Identity (PParams era))
-> UnitInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ UnitInterval
d
            ExtraEntropy Nonce
nonce -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nonce -> Identity Nonce) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) Nonce
Lens' (PParams era) Nonce
ppExtraEntropyL ((Nonce -> Identity Nonce)
 -> PParams era -> Identity (PParams era))
-> Nonce -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nonce
nonce
            MinUTxOValue Coin
mu -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 4) =>
Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinUTxOValueL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
mu
            PParamsField era
_ -> PParams era
pp
        Proof era
Allegra ->
          case PParamsField era
ppf of
            D UnitInterval
d -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (UnitInterval -> Identity UnitInterval)
-> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) UnitInterval
Lens' (PParams era) UnitInterval
ppDL ((UnitInterval -> Identity UnitInterval)
 -> PParams era -> Identity (PParams era))
-> UnitInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ UnitInterval
d
            ExtraEntropy Nonce
nonce -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nonce -> Identity Nonce) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) Nonce
Lens' (PParams era) Nonce
ppExtraEntropyL ((Nonce -> Identity Nonce)
 -> PParams era -> Identity (PParams era))
-> Nonce -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nonce
nonce
            MinUTxOValue Coin
mu -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 4) =>
Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinUTxOValueL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
mu
            PParamsField era
_ -> PParams era
pp
        Proof era
Mary ->
          case PParamsField era
ppf of
            D UnitInterval
d -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (UnitInterval -> Identity UnitInterval)
-> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) UnitInterval
Lens' (PParams era) UnitInterval
ppDL ((UnitInterval -> Identity UnitInterval)
 -> PParams era -> Identity (PParams era))
-> UnitInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ UnitInterval
d
            ExtraEntropy Nonce
nonce -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nonce -> Identity Nonce) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) Nonce
Lens' (PParams era) Nonce
ppExtraEntropyL ((Nonce -> Identity Nonce)
 -> PParams era -> Identity (PParams era))
-> Nonce -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nonce
nonce
            MinUTxOValue Coin
mu -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 4) =>
Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppMinUTxOValueL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
mu
            PParamsField era
_ -> PParams era
pp
        Proof era
Alonzo ->
          case PParamsField era
ppf of
            D UnitInterval
d -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (UnitInterval -> Identity UnitInterval)
-> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) UnitInterval
Lens' (PParams era) UnitInterval
ppDL ((UnitInterval -> Identity UnitInterval)
 -> PParams era -> Identity (PParams era))
-> UnitInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ UnitInterval
d
            ExtraEntropy Nonce
nonce -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nonce -> Identity Nonce) -> PParams era -> Identity (PParams era)
forall era.
(EraPParams era, ProtVerAtMost era 6) =>
Lens' (PParams era) Nonce
Lens' (PParams era) Nonce
ppExtraEntropyL ((Nonce -> Identity Nonce)
 -> PParams era -> Identity (PParams era))
-> Nonce -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nonce
nonce
            CoinPerUTxOWord CoinPerWord
coinPerWord -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (CoinPerWord -> Identity CoinPerWord)
-> PParams era -> Identity (PParams era)
forall era.
(AlonzoEraPParams era, ExactEra AlonzoEra era) =>
Lens' (PParams era) CoinPerWord
Lens' (PParams era) CoinPerWord
ppCoinsPerUTxOWordL ((CoinPerWord -> Identity CoinPerWord)
 -> PParams era -> Identity (PParams era))
-> CoinPerWord -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ CoinPerWord
coinPerWord
            Costmdls CostModels
costModels -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (CostModels -> Identity CostModels)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams era) CostModels
ppCostModelsL ((CostModels -> Identity CostModels)
 -> PParams era -> Identity (PParams era))
-> CostModels -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ CostModels
costModels
            Prices Prices
prices -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Prices -> Identity Prices)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Prices
Lens' (PParams era) Prices
ppPricesL ((Prices -> Identity Prices)
 -> PParams era -> Identity (PParams era))
-> Prices -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Prices
prices
            MaxTxExUnits ExUnits
maxTxExUnits -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ExUnits -> Identity ExUnits)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxTxExUnitsL ((ExUnits -> Identity ExUnits)
 -> PParams era -> Identity (PParams era))
-> ExUnits -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ExUnits
maxTxExUnits
            MaxBlockExUnits ExUnits
maxBlockExUnits -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ExUnits -> Identity ExUnits)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxBlockExUnitsL ((ExUnits -> Identity ExUnits)
 -> PParams era -> Identity (PParams era))
-> ExUnits -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ExUnits
maxBlockExUnits
            MaxValSize Nat
maxValSize -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppMaxValSizeL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
maxValSize
            CollateralPercentage Nat
colPerc -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppCollateralPercentageL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
colPerc
            MaxCollateralInputs Nat
maxColInputs -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppMaxCollateralInputsL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
maxColInputs
            PParamsField era
_ -> PParams era
pp
        Proof era
Babbage ->
          case PParamsField era
ppf of
            CoinPerUTxOByte CoinPerByte
coinPerByte -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (CoinPerByte -> Identity CoinPerByte)
-> PParams era -> Identity (PParams era)
forall era.
BabbageEraPParams era =>
Lens' (PParams era) CoinPerByte
Lens' (PParams era) CoinPerByte
ppCoinsPerUTxOByteL ((CoinPerByte -> Identity CoinPerByte)
 -> PParams era -> Identity (PParams era))
-> CoinPerByte -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ CoinPerByte
coinPerByte
            Costmdls CostModels
costModels -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (CostModels -> Identity CostModels)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams era) CostModels
ppCostModelsL ((CostModels -> Identity CostModels)
 -> PParams era -> Identity (PParams era))
-> CostModels -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ CostModels
costModels
            Prices Prices
prices -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Prices -> Identity Prices)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Prices
Lens' (PParams era) Prices
ppPricesL ((Prices -> Identity Prices)
 -> PParams era -> Identity (PParams era))
-> Prices -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Prices
prices
            MaxTxExUnits ExUnits
maxTxExUnits -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ExUnits -> Identity ExUnits)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxTxExUnitsL ((ExUnits -> Identity ExUnits)
 -> PParams era -> Identity (PParams era))
-> ExUnits -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ExUnits
maxTxExUnits
            MaxBlockExUnits ExUnits
maxBlockExUnits -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ExUnits -> Identity ExUnits)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxBlockExUnitsL ((ExUnits -> Identity ExUnits)
 -> PParams era -> Identity (PParams era))
-> ExUnits -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ExUnits
maxBlockExUnits
            MaxValSize Nat
maxValSize -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppMaxValSizeL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
maxValSize
            CollateralPercentage Nat
colPerc -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppCollateralPercentageL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
colPerc
            MaxCollateralInputs Nat
maxColInputs -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppMaxCollateralInputsL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
maxColInputs
            PParamsField era
_ -> PParams era
pp
        Proof era
Conway ->
          case PParamsField era
ppf of
            CoinPerUTxOByte CoinPerByte
coinPerByte -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (CoinPerByte -> Identity CoinPerByte)
-> PParams era -> Identity (PParams era)
forall era.
BabbageEraPParams era =>
Lens' (PParams era) CoinPerByte
Lens' (PParams era) CoinPerByte
ppCoinsPerUTxOByteL ((CoinPerByte -> Identity CoinPerByte)
 -> PParams era -> Identity (PParams era))
-> CoinPerByte -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ CoinPerByte
coinPerByte
            Costmdls CostModels
costModels -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (CostModels -> Identity CostModels)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams era) CostModels
ppCostModelsL ((CostModels -> Identity CostModels)
 -> PParams era -> Identity (PParams era))
-> CostModels -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ CostModels
costModels
            Prices Prices
prices -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Prices -> Identity Prices)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Prices
Lens' (PParams era) Prices
ppPricesL ((Prices -> Identity Prices)
 -> PParams era -> Identity (PParams era))
-> Prices -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Prices
prices
            MaxTxExUnits ExUnits
maxTxExUnits -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ExUnits -> Identity ExUnits)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxTxExUnitsL ((ExUnits -> Identity ExUnits)
 -> PParams era -> Identity (PParams era))
-> ExUnits -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ExUnits
maxTxExUnits
            MaxBlockExUnits ExUnits
maxBlockExUnits -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (ExUnits -> Identity ExUnits)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxBlockExUnitsL ((ExUnits -> Identity ExUnits)
 -> PParams era -> Identity (PParams era))
-> ExUnits -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ExUnits
maxBlockExUnits
            MaxValSize Nat
maxValSize -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppMaxValSizeL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
maxValSize
            CollateralPercentage Nat
colPerc -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppCollateralPercentageL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
colPerc
            MaxCollateralInputs Nat
maxColInputs -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppMaxCollateralInputsL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
maxColInputs
            GovActionDeposit Coin
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. ConwayEraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppGovActionDepositL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
c
            DRepDeposit Coin
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin) -> PParams era -> Identity (PParams era)
forall era. ConwayEraPParams era => Lens' (PParams era) Coin
Lens' (PParams era) Coin
ppDRepDepositL ((Coin -> Identity Coin) -> PParams era -> Identity (PParams era))
-> Coin -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
c
            DRepActivity EpochInterval
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (EpochInterval -> Identity EpochInterval)
-> PParams era -> Identity (PParams era)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) EpochInterval
Lens' (PParams era) EpochInterval
ppDRepActivityL ((EpochInterval -> Identity EpochInterval)
 -> PParams era -> Identity (PParams era))
-> EpochInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ EpochInterval
c
            PoolVotingThreshold PoolVotingThresholds
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (PoolVotingThresholds -> Identity PoolVotingThresholds)
-> PParams era -> Identity (PParams era)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) PoolVotingThresholds
Lens' (PParams era) PoolVotingThresholds
ppPoolVotingThresholdsL ((PoolVotingThresholds -> Identity PoolVotingThresholds)
 -> PParams era -> Identity (PParams era))
-> PoolVotingThresholds -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ PoolVotingThresholds
c
            DRepVotingThreshold DRepVotingThresholds
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (DRepVotingThresholds -> Identity DRepVotingThresholds)
-> PParams era -> Identity (PParams era)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) DRepVotingThresholds
Lens' (PParams era) DRepVotingThresholds
ppDRepVotingThresholdsL ((DRepVotingThresholds -> Identity DRepVotingThresholds)
 -> PParams era -> Identity (PParams era))
-> DRepVotingThresholds -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ DRepVotingThresholds
c
            MinCommitteeSize Nat
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Nat -> Identity Nat) -> PParams era -> Identity (PParams era)
forall era. ConwayEraPParams era => Lens' (PParams era) Nat
Lens' (PParams era) Nat
ppCommitteeMinSizeL ((Nat -> Identity Nat) -> PParams era -> Identity (PParams era))
-> Nat -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Nat
c
            CommitteeTermLimit EpochInterval
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (EpochInterval -> Identity EpochInterval)
-> PParams era -> Identity (PParams era)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) EpochInterval
Lens' (PParams era) EpochInterval
ppCommitteeMaxTermLengthL ((EpochInterval -> Identity EpochInterval)
 -> PParams era -> Identity (PParams era))
-> EpochInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ EpochInterval
c
            GovActionExpiration EpochInterval
c -> PParams era
pp PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (EpochInterval -> Identity EpochInterval)
-> PParams era -> Identity (PParams era)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) EpochInterval
Lens' (PParams era) EpochInterval
ppGovActionLifetimeL ((EpochInterval -> Identity EpochInterval)
 -> PParams era -> Identity (PParams era))
-> EpochInterval -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ EpochInterval
c
            PParamsField era
_ -> PParams era
pp

newPParams :: EraPParams era => Proof era -> [PParamsField era] -> PParams era
newPParams :: forall era.
EraPParams era =>
Proof era -> [PParamsField era] -> PParams era
newPParams Proof era
era = (PParams era -> PParamsField era -> PParams era)
-> PParams era -> [PParamsField era] -> PParams era
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
List.foldl' (Proof era -> PParams era -> PParamsField era -> PParams era
forall era.
EraPParams era =>
Proof era -> PParams era -> PParamsField era -> PParams era
updatePParams Proof era
era) PParams era
forall era. EraPParams era => PParams era
emptyPParams

-- ====================================

-- | This only make sense in the Alonzo era and forward, all other Eras return Nothing
newScriptIntegrityHash ::
  Proof era ->
  PParams era ->
  [Language] ->
  Redeemers era ->
  TxDats era ->
  StrictMaybe Alonzo.ScriptIntegrityHash
newScriptIntegrityHash :: forall era.
Proof era
-> PParams era
-> [Language]
-> Redeemers era
-> TxDats era
-> StrictMaybe ScriptIntegrityHash
newScriptIntegrityHash Proof era
Conway PParams era
pp [Language]
ls Redeemers era
rds TxDats era
dats =
  Set LangDepView
-> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash
forall era.
AlonzoEraScript era =>
Set LangDepView
-> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash
hashScriptIntegrity ((Language -> LangDepView) -> Set Language -> Set LangDepView
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (PParams era -> Language -> LangDepView
forall era.
AlonzoEraPParams era =>
PParams era -> Language -> LangDepView
Alonzo.getLanguageView PParams era
pp) ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language]
ls)) Redeemers era
rds TxDats era
dats
newScriptIntegrityHash Proof era
Babbage PParams era
pp [Language]
ls Redeemers era
rds TxDats era
dats =
  Set LangDepView
-> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash
forall era.
AlonzoEraScript era =>
Set LangDepView
-> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash
hashScriptIntegrity ((Language -> LangDepView) -> Set Language -> Set LangDepView
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (PParams era -> Language -> LangDepView
forall era.
AlonzoEraPParams era =>
PParams era -> Language -> LangDepView
Alonzo.getLanguageView PParams era
pp) ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language]
ls)) Redeemers era
rds TxDats era
dats
newScriptIntegrityHash Proof era
Alonzo PParams era
pp [Language]
ls Redeemers era
rds TxDats era
dats =
  Set LangDepView
-> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash
forall era.
AlonzoEraScript era =>
Set LangDepView
-> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash
hashScriptIntegrity ((Language -> LangDepView) -> Set Language -> Set LangDepView
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (PParams era -> Language -> LangDepView
forall era.
AlonzoEraPParams era =>
PParams era -> Language -> LangDepView
Alonzo.getLanguageView PParams era
pp) ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language]
ls)) Redeemers era
rds TxDats era
dats
newScriptIntegrityHash Proof era
_wit PParams era
_pp [Language]
_ls Redeemers era
_rds TxDats era
_dats = StrictMaybe ScriptIntegrityHash
forall a. StrictMaybe a
SNothing

defaultCostModels :: Proof era -> PParamsField era
defaultCostModels :: forall era. Proof era -> PParamsField era
defaultCostModels Proof era
Shelley = CostModels -> PParamsField era
forall era. CostModels -> PParamsField era
Costmdls CostModels
emptyCostModels
defaultCostModels Proof era
Allegra = CostModels -> PParamsField era
forall era. CostModels -> PParamsField era
Costmdls CostModels
emptyCostModels
defaultCostModels Proof era
Mary = CostModels -> PParamsField era
forall era. CostModels -> PParamsField era
Costmdls CostModels
emptyCostModels
defaultCostModels Proof era
Alonzo = CostModels -> PParamsField era
forall era. CostModels -> PParamsField era
Costmdls (CostModels -> PParamsField era) -> CostModels -> PParamsField era
forall a b. (a -> b) -> a -> b
$ HasCallStack => [Language] -> CostModels
[Language] -> CostModels
zeroTestingCostModels [Language
PlutusV1]
defaultCostModels Proof era
Babbage = CostModels -> PParamsField era
forall era. CostModels -> PParamsField era
Costmdls (CostModels -> PParamsField era) -> CostModels -> PParamsField era
forall a b. (a -> b) -> a -> b
$ HasCallStack => [Language] -> CostModels
[Language] -> CostModels
zeroTestingCostModels [Language
PlutusV1, Language
PlutusV2]
defaultCostModels Proof era
Conway = CostModels -> PParamsField era
forall era. CostModels -> PParamsField era
Costmdls (CostModels -> PParamsField era) -> CostModels -> PParamsField era
forall a b. (a -> b) -> a -> b
$ HasCallStack => [Language] -> CostModels
[Language] -> CostModels
zeroTestingCostModels [Language
PlutusV1, Language
PlutusV2]

languages :: Proof era -> [Language]
languages :: forall era. Proof era -> [Language]
languages Proof era
Shelley = []
languages Proof era
Allegra = []
languages Proof era
Mary = []
languages Proof era
Alonzo = [Language
PlutusV1]
languages Proof era
Babbage = [Language
PlutusV1, Language
PlutusV2]
languages Proof era
Conway = [Language
PlutusV1, Language
PlutusV2]