{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Generic.Instances () where

import Cardano.Ledger.Address (Addr (..))
import Cardano.Ledger.Allegra (AllegraEra)
import Cardano.Ledger.Alonzo (AlonzoEra)
import Cardano.Ledger.Alonzo.Core (
  AllegraEraTxBody (..),
  AlonzoEraPParams,
  AlonzoEraScript,
  AlonzoEraTx (..),
  AlonzoEraTxWits (..),
  EraPParams (..),
  EraScript (..),
  EraTxBody (..),
  EraTxOut (..),
  EraTxWits (..),
  PParams,
  PoolCert (..),
  ScriptHash,
  ValidityInterval (..),
  emptyPParams,
  eraProtVerLow,
  ppCollateralPercentageL,
  ppCostModelsL,
  ppEMaxL,
  ppKeyDepositL,
  ppMaxBlockExUnitsL,
  ppMaxTxExUnitsL,
  ppMaxTxSizeL,
  ppMaxValSizeL,
  ppMinFeeAL,
  ppMinFeeBL,
  ppPoolDepositL,
 )
import Cardano.Ledger.Alonzo.Scripts (isPlutusScript)
import Cardano.Ledger.Alonzo.Tx (IsValid (..))
import Cardano.Ledger.Babbage (BabbageEra)
import Cardano.Ledger.BaseTypes (
  EpochInterval (..),
  ProtVer (..),
  SlotNo (..),
  StrictMaybe (..),
  mkTxIxPartial,
 )
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Core (
  AlonzoEraTxBody (..),
  BabbageEraTxBody (..),
  EraTx (..),
  ScriptIntegrityHash,
  ShelleyEraTxBody (..),
  ppMaxCollateralInputsL,
 )
import Cardano.Ledger.Credential (Credential (..))
import Cardano.Ledger.Mary (MaryEra)
import Cardano.Ledger.Plutus (ExUnits (..), Language (..))
import Cardano.Ledger.PoolParams (PoolParams (..))
import Cardano.Ledger.Shelley (ShelleyEra)
import Cardano.Ledger.Shelley.Scripts (pattern RequireAllOf, pattern RequireAnyOf)
import Cardano.Ledger.Shelley.TxCert (ShelleyDelegCert (..), ShelleyTxCert (..))
import Cardano.Ledger.Val (Val (..))
import Control.Monad.RWS.Strict (gets)
import Control.Monad.Trans (MonadTrans (..))
import qualified Data.Foldable as F
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map
import Data.Ratio ((%))
import Data.TreeDiff (ToExpr (..))
import Lens.Micro (Lens', (&), (.~), (<>~), (^.))
import qualified Lens.Micro as L
import Test.Cardano.Ledger.Alonzo.Era (AlonzoEraTest, EraTest (..))
import Test.Cardano.Ledger.Alonzo.Scripts (alwaysFails, alwaysSucceeds)
import Test.Cardano.Ledger.Alonzo.Tools (EraModel (..))
import Test.Cardano.Ledger.Common (Arbitrary (..), Gen, choose, chooseInt, elements)
import Test.Cardano.Ledger.Generic.ApplyTx (applyTxBody, applyTxFail, applyTxSimple, epochBoundary)
import Test.Cardano.Ledger.Generic.GenState (
  EraGenericGen (..),
  GenEnv (..),
  GenRS,
  GenSize (..),
  GenState (..),
 )
import Test.Cardano.Ledger.Generic.ModelState (Model, ModelNewEpochState (..))
import Test.Cardano.Ledger.Generic.Proof (Reflect)
import Test.Cardano.Ledger.Generic.TxGen (
  alonzoMkRedeemers,
  alonzoMkRedeemersFromTags,
  alonzoNewScriptIntegrityHash,
  mkAlonzoPlutusPurposePointer,
  mkConwayPlutusPurposePointer,
 )
import Test.Cardano.Ledger.Shelley.Generator.Core (genNatural)
import Test.Cardano.Ledger.Shelley.Utils (epochFromSlotNo)

shelleyGenPParams :: EraPParams era => Gen (PParams era)
shelleyGenPParams :: forall era. EraPParams era => Gen (PParams era)
shelleyGenPParams = do
  Coin
minfeeA <- Integer -> Coin
Coin (Integer -> Coin) -> Gen Integer -> Gen Coin
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Integer, Integer) -> Gen Integer
forall a. Random a => (a, a) -> Gen a
choose (Integer
0, Integer
1000)
  Coin
minfeeB <- Integer -> Coin
Coin (Integer -> Coin) -> Gen Integer -> Gen Coin
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Integer, Integer) -> Gen Integer
forall a. Random a => (a, a) -> Gen a
choose (Integer
0, Integer
10000)
  PParams era -> Gen (PParams era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PParams era -> Gen (PParams era))
-> PParams era -> Gen (PParams era)
forall a b. (a -> b) -> a -> b
$
    PParams era
forall era. EraPParams era => PParams era
emptyPParams
      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
      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
      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
.~ Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int
forall a. Bounded a => a
maxBound :: Int)
      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
.~ Version -> Natural -> ProtVer
ProtVer (forall era. Era era => Version
eraProtVerLow @ShelleyEra) Natural
0
      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
.~ Integer -> Coin
Coin Integer
5
      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
.~ Integer -> Coin
Coin Integer
2
      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
.~ Word32 -> EpochInterval
EpochInterval Word32
5

applyShelleyCert :: forall era. EraPParams era => Model era -> ShelleyTxCert era -> Model era
applyShelleyCert :: forall era.
EraPParams era =>
Model era -> ShelleyTxCert era -> Model era
applyShelleyCert Model era
model ShelleyTxCert era
dcert = case ShelleyTxCert era
dcert of
  ShelleyTxCertDelegCert (ShelleyRegCert Credential 'Staking
x) ->
    Model era
model
      { mRewards = Map.insert x (Coin 0) (mRewards model)
      , mKeyDeposits = Map.insert x (pp ^. ppKeyDepositL) (mKeyDeposits model)
      , mDeposited = mDeposited model <+> pp ^. ppKeyDepositL
      }
    where
      pp :: PParams era
pp = Model era -> PParams era
forall era. ModelNewEpochState era -> PParams era
mPParams Model era
model
  ShelleyTxCertDelegCert (ShelleyUnRegCert Credential 'Staking
x) -> case Credential 'Staking -> Map (Credential 'Staking) Coin -> Maybe Coin
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup Credential 'Staking
x (Model era -> Map (Credential 'Staking) Coin
forall era.
ModelNewEpochState era -> Map (Credential 'Staking) Coin
mRewards Model era
model) of
    Maybe Coin
Nothing -> [Char] -> Model era
forall a. HasCallStack => [Char] -> a
error ([Char]
"DeRegKey not in rewards: " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> Expr -> [Char]
forall a. Show a => a -> [Char]
show (Credential 'Staking -> Expr
forall a. ToExpr a => a -> Expr
toExpr Credential 'Staking
x))
    Just (Coin Integer
0) ->
      Model era
model
        { mRewards = Map.delete x (mRewards model)
        , mKeyDeposits = Map.delete x (mKeyDeposits model)
        , mDeposited = mDeposited model <-> keyDeposit
        }
      where
        keyDeposit :: Coin
keyDeposit = Coin
-> Credential 'Staking -> Map (Credential 'Staking) Coin -> Coin
forall k a. Ord k => a -> k -> Map k a -> a
Map.findWithDefault Coin
forall a. Monoid a => a
mempty Credential 'Staking
x (Model era -> Map (Credential 'Staking) Coin
forall era.
ModelNewEpochState era -> Map (Credential 'Staking) Coin
mKeyDeposits Model era
model)
    Just (Coin Integer
_n) -> [Char] -> Model era
forall a. HasCallStack => [Char] -> a
error [Char]
"DeRegKey with non-zero balance"
  ShelleyTxCertDelegCert (ShelleyDelegCert Credential 'Staking
cred KeyHash 'StakePool
hash) ->
    Model era
model {mDelegations = Map.insert cred hash (mDelegations model)}
  ShelleyTxCertPool (RegPool PoolParams
poolparams) ->
    Model era
model
      { mPoolParams = Map.insert hk poolparams (mPoolParams model)
      , mDeposited =
          if Map.member hk (mPoolDeposits model)
            then mDeposited model
            else mDeposited model <+> pp ^. ppPoolDepositL
      , mPoolDeposits -- Only add if it isn't already there
        =
          if Map.member hk (mPoolDeposits model)
            then mPoolDeposits model
            else Map.insert hk (pp ^. ppPoolDepositL) (mPoolDeposits model)
      }
    where
      hk :: KeyHash 'StakePool
hk = PoolParams -> KeyHash 'StakePool
ppId PoolParams
poolparams
      pp :: PParams era
pp = Model era -> PParams era
forall era. ModelNewEpochState era -> PParams era
mPParams Model era
model
  ShelleyTxCertPool (RetirePool KeyHash 'StakePool
keyhash EpochNo
epoch) ->
    Model era
model
      { mRetiring = Map.insert keyhash epoch (mRetiring model)
      , mDeposited = mDeposited model <-> pp ^. ppPoolDepositL
      }
    where
      pp :: PParams era
pp = Model era -> PParams era
forall era. ModelNewEpochState era -> PParams era
mPParams Model era
model
  ShelleyTxCertGenesisDeleg GenesisDelegCert
_ -> Model era
model
  ShelleyTxCertMir MIRCert
_ -> Model era
model

timeToLive :: ValidityInterval -> SlotNo
timeToLive :: ValidityInterval -> SlotNo
timeToLive (ValidityInterval StrictMaybe SlotNo
_ (SJust SlotNo
n)) = SlotNo
n
timeToLive (ValidityInterval StrictMaybe SlotNo
_ StrictMaybe SlotNo
SNothing) = Word64 -> SlotNo
SlotNo Word64
forall a. Bounded a => a
maxBound

shelleySetValidity :: ValidityInterval -> TxBody ShelleyEra -> TxBody ShelleyEra
shelleySetValidity :: ValidityInterval -> TxBody ShelleyEra -> TxBody ShelleyEra
shelleySetValidity ValidityInterval
vi = (SlotNo -> Identity SlotNo)
-> TxBody ShelleyEra -> Identity (TxBody ShelleyEra)
forall era.
(ShelleyEraTxBody era, ExactEra ShelleyEra era) =>
Lens' (TxBody era) SlotNo
Lens' (TxBody ShelleyEra) SlotNo
ttlTxBodyL ((SlotNo -> Identity SlotNo)
 -> TxBody ShelleyEra -> Identity (TxBody ShelleyEra))
-> SlotNo -> TxBody ShelleyEra -> TxBody ShelleyEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ValidityInterval -> SlotNo
timeToLive ValidityInterval
vi

allegraSetValidity :: AllegraEraTxBody era => ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity :: forall era.
AllegraEraTxBody era =>
ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity ValidityInterval
vi = (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
vi

allegraValidTxOut :: EraTxOut era => Map ScriptHash (Script era) -> TxOut era -> Bool
allegraValidTxOut :: forall era.
EraTxOut era =>
Map ScriptHash (Script era) -> TxOut era -> Bool
allegraValidTxOut Map ScriptHash (Script era)
_ TxOut era
txOut = case TxOut era
txOut TxOut era -> Getting Addr (TxOut era) Addr -> Addr
forall s a. s -> Getting a s a -> a
^. Getting Addr (TxOut era) Addr
forall era. EraTxOut era => Lens' (TxOut era) Addr
Lens' (TxOut era) Addr
addrTxOutL of
  Addr Network
_ KeyHashObj {} StakeReference
_ -> Bool
True
  Addr
_ -> Bool
False

alonzoValidTxOut ::
  ( EraTxOut era
  , AlonzoEraScript era
  ) =>
  Map ScriptHash (Script era) -> TxOut era -> Bool
alonzoValidTxOut :: forall era.
(EraTxOut era, AlonzoEraScript era) =>
Map ScriptHash (Script era) -> TxOut era -> Bool
alonzoValidTxOut Map ScriptHash (Script era)
scripts TxOut era
txOut = case TxOut era
txOut TxOut era -> Getting Addr (TxOut era) Addr -> Addr
forall s a. s -> Getting a s a -> a
^. Getting Addr (TxOut era) Addr
forall era. EraTxOut era => Lens' (TxOut era) Addr
Lens' (TxOut era) Addr
addrTxOutL of
  Addr Network
_ KeyHashObj {} StakeReference
_ -> Bool
True
  Addr Network
_ (ScriptHashObj ScriptHash
sh) StakeReference
_ ->
    case ScriptHash -> Map ScriptHash (Script era) -> Maybe (Script era)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup ScriptHash
sh Map ScriptHash (Script era)
scripts of
      Just Script era
s -> Script era -> Bool
forall era. AlonzoEraScript era => Script era -> Bool
isPlutusScript Script era
s
      Maybe (Script era)
_ -> Bool
False
  AddrBootstrap {} -> Bool
False

alonzoGenPParams :: forall era. AlonzoEraTest era => GenSize -> Gen (PParams era)
alonzoGenPParams :: forall era. AlonzoEraTest era => GenSize -> Gen (PParams era)
alonzoGenPParams GenSize
gsize = do
  PParams era
pp <- Gen (PParams era)
forall era. EraPParams era => Gen (PParams era)
shelleyGenPParams
  ExUnits
maxTxExUnits <- Gen ExUnits
forall a. Arbitrary a => Gen a
arbitrary :: Gen ExUnits
  Natural
maxCollateralInputs <- [Natural] -> Gen Natural
forall a. HasCallStack => [a] -> Gen a
elements [Natural
Item [Natural]
1 .. GenSize -> Natural
collInputsMax GenSize
gsize]
  Natural
collateralPercentage <- Int -> Natural
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Natural) -> Gen Int -> Gen Natural
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Int, Int) -> Gen Int
chooseInt (Int
1, Int
10000)
  PParams era -> Gen (PParams era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PParams era -> Gen (PParams era))
-> PParams era -> Gen (PParams era)
forall a b. (a -> b) -> a -> b
$
    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
      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
.~ forall era. EraTest era => CostModels
zeroCostModels @era
      PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Natural -> Identity Natural)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams era) Natural
ppMaxValSizeL ((Natural -> Identity Natural)
 -> PParams era -> Identity (PParams era))
-> Natural -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Natural
1000
      PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Natural -> Identity Natural)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams era) Natural
ppMaxCollateralInputsL ((Natural -> Identity Natural)
 -> PParams era -> Identity (PParams era))
-> Natural -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Natural
maxCollateralInputs
      PParams era -> (PParams era -> PParams era) -> PParams era
forall a b. a -> (a -> b) -> b
& (Natural -> Identity Natural)
-> PParams era -> Identity (PParams era)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams era) Natural
ppCollateralPercentageL ((Natural -> Identity Natural)
 -> PParams era -> Identity (PParams era))
-> Natural -> PParams era -> PParams era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Natural
collateralPercentage
      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
.~ Version -> Natural -> ProtVer
ProtVer (forall era. Era era => Version
eraProtVerLow @era) Natural
0

instance EraModel ShelleyEra where
  applyTx :: Int
-> SlotNo -> Model ShelleyEra -> Tx ShelleyEra -> Model ShelleyEra
applyTx = Int
-> SlotNo -> Model ShelleyEra -> Tx ShelleyEra -> Model ShelleyEra
forall era.
EraModel era =>
Int -> SlotNo -> Model era -> Tx era -> Model era
shelleyApplyTx
  applyCert :: Model ShelleyEra -> TxCert ShelleyEra -> Model ShelleyEra
applyCert = Model ShelleyEra -> TxCert ShelleyEra -> Model ShelleyEra
Model ShelleyEra -> ShelleyTxCert ShelleyEra -> Model ShelleyEra
forall era.
EraPParams era =>
Model era -> ShelleyTxCert era -> Model era
applyShelleyCert
  always :: Natural -> Script ShelleyEra
always Natural
_ = NativeScript ShelleyEra -> Script ShelleyEra
forall era. EraScript era => NativeScript era -> Script era
fromNativeScript (NativeScript ShelleyEra -> Script ShelleyEra)
-> NativeScript ShelleyEra -> Script ShelleyEra
forall a b. (a -> b) -> a -> b
$ StrictSeq (NativeScript ShelleyEra) -> NativeScript ShelleyEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf []
  never :: Natural -> Script ShelleyEra
never Natural
_ = NativeScript ShelleyEra -> Script ShelleyEra
forall era. EraScript era => NativeScript era -> Script era
fromNativeScript (NativeScript ShelleyEra -> Script ShelleyEra)
-> NativeScript ShelleyEra -> Script ShelleyEra
forall a b. (a -> b) -> a -> b
$ StrictSeq (NativeScript ShelleyEra) -> NativeScript ShelleyEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAnyOf []
  collateralReturnTxBodyT :: Lens' (TxBody ShelleyEra) (StrictMaybe (TxOut ShelleyEra))
collateralReturnTxBodyT = StrictMaybe (ShelleyTxOut ShelleyEra)
-> Lens'
     (TxBody ShelleyEra) (StrictMaybe (ShelleyTxOut ShelleyEra))
forall b a. b -> Lens' a b
dummyLens StrictMaybe (ShelleyTxOut ShelleyEra)
forall a. StrictMaybe a
SNothing
  validTxOut :: Map ScriptHash (Script ShelleyEra) -> TxOut ShelleyEra -> Bool
validTxOut Map ScriptHash (Script ShelleyEra)
scripts TxOut ShelleyEra
txOut =
    case TxOut ShelleyEra
ShelleyTxOut ShelleyEra
txOut ShelleyTxOut ShelleyEra
-> Getting Addr (ShelleyTxOut ShelleyEra) Addr -> Addr
forall s a. s -> Getting a s a -> a
^. (Addr -> Const Addr Addr)
-> TxOut ShelleyEra -> Const Addr (TxOut ShelleyEra)
Getting Addr (ShelleyTxOut ShelleyEra) Addr
forall era. EraTxOut era => Lens' (TxOut era) Addr
Lens' (TxOut ShelleyEra) Addr
addrTxOutL of
      Addr Network
_ (KeyHashObj KeyHash 'Payment
_) StakeReference
_ -> Bool
True
      Addr Network
_ (ScriptHashObj ScriptHash
sh) StakeReference
_ -> ScriptHash -> Map ScriptHash (MultiSig ShelleyEra) -> Bool
forall k a. Ord k => k -> Map k a -> Bool
Map.member ScriptHash
sh Map ScriptHash (Script ShelleyEra)
Map ScriptHash (MultiSig ShelleyEra)
scripts
      AddrBootstrap {} -> Bool
False

instance EraModel AllegraEra where
  applyTx :: Int
-> SlotNo -> Model AllegraEra -> Tx AllegraEra -> Model AllegraEra
applyTx = Int
-> SlotNo -> Model AllegraEra -> Tx AllegraEra -> Model AllegraEra
forall era.
EraModel era =>
Int -> SlotNo -> Model era -> Tx era -> Model era
shelleyApplyTx
  applyCert :: Model AllegraEra -> TxCert AllegraEra -> Model AllegraEra
applyCert = Model AllegraEra -> TxCert AllegraEra -> Model AllegraEra
Model AllegraEra -> ShelleyTxCert AllegraEra -> Model AllegraEra
forall era.
EraPParams era =>
Model era -> ShelleyTxCert era -> Model era
applyShelleyCert
  always :: Natural -> Script AllegraEra
always Natural
_ = NativeScript AllegraEra -> Script AllegraEra
forall era. EraScript era => NativeScript era -> Script era
fromNativeScript (NativeScript AllegraEra -> Script AllegraEra)
-> NativeScript AllegraEra -> Script AllegraEra
forall a b. (a -> b) -> a -> b
$ StrictSeq (NativeScript AllegraEra) -> NativeScript AllegraEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf []
  never :: Natural -> Script AllegraEra
never Natural
_ = NativeScript AllegraEra -> Script AllegraEra
forall era. EraScript era => NativeScript era -> Script era
fromNativeScript (NativeScript AllegraEra -> Script AllegraEra)
-> NativeScript AllegraEra -> Script AllegraEra
forall a b. (a -> b) -> a -> b
$ StrictSeq (NativeScript AllegraEra) -> NativeScript AllegraEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAnyOf []
  collateralReturnTxBodyT :: Lens' (TxBody AllegraEra) (StrictMaybe (TxOut AllegraEra))
collateralReturnTxBodyT = StrictMaybe (ShelleyTxOut AllegraEra)
-> Lens'
     (TxBody AllegraEra) (StrictMaybe (ShelleyTxOut AllegraEra))
forall b a. b -> Lens' a b
dummyLens StrictMaybe (ShelleyTxOut AllegraEra)
forall a. StrictMaybe a
SNothing
  validTxOut :: Map ScriptHash (Script AllegraEra) -> TxOut AllegraEra -> Bool
validTxOut = Map ScriptHash (Script AllegraEra) -> TxOut AllegraEra -> Bool
forall era.
EraTxOut era =>
Map ScriptHash (Script era) -> TxOut era -> Bool
allegraValidTxOut

instance EraModel MaryEra where
  applyTx :: Int -> SlotNo -> Model MaryEra -> Tx MaryEra -> Model MaryEra
applyTx = Int -> SlotNo -> Model MaryEra -> Tx MaryEra -> Model MaryEra
forall era.
EraModel era =>
Int -> SlotNo -> Model era -> Tx era -> Model era
shelleyApplyTx
  applyCert :: Model MaryEra -> TxCert MaryEra -> Model MaryEra
applyCert = Model MaryEra -> TxCert MaryEra -> Model MaryEra
Model MaryEra -> ShelleyTxCert MaryEra -> Model MaryEra
forall era.
EraPParams era =>
Model era -> ShelleyTxCert era -> Model era
applyShelleyCert
  always :: Natural -> Script MaryEra
always Natural
_ = NativeScript MaryEra -> Script MaryEra
forall era. EraScript era => NativeScript era -> Script era
fromNativeScript (NativeScript MaryEra -> Script MaryEra)
-> NativeScript MaryEra -> Script MaryEra
forall a b. (a -> b) -> a -> b
$ StrictSeq (NativeScript MaryEra) -> NativeScript MaryEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf []
  never :: Natural -> Script MaryEra
never Natural
_ = NativeScript MaryEra -> Script MaryEra
forall era. EraScript era => NativeScript era -> Script era
fromNativeScript (NativeScript MaryEra -> Script MaryEra)
-> NativeScript MaryEra -> Script MaryEra
forall a b. (a -> b) -> a -> b
$ StrictSeq (NativeScript MaryEra) -> NativeScript MaryEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAnyOf []
  collateralReturnTxBodyT :: Lens' (TxBody MaryEra) (StrictMaybe (TxOut MaryEra))
collateralReturnTxBodyT = StrictMaybe (ShelleyTxOut MaryEra)
-> Lens' (TxBody MaryEra) (StrictMaybe (ShelleyTxOut MaryEra))
forall b a. b -> Lens' a b
dummyLens StrictMaybe (ShelleyTxOut MaryEra)
forall a. StrictMaybe a
SNothing
  validTxOut :: Map ScriptHash (Script MaryEra) -> TxOut MaryEra -> Bool
validTxOut = Map ScriptHash (Script MaryEra) -> TxOut MaryEra -> Bool
forall era.
EraTxOut era =>
Map ScriptHash (Script era) -> TxOut era -> Bool
allegraValidTxOut

instance EraModel AlonzoEra where
  applyTx :: Int -> SlotNo -> Model AlonzoEra -> Tx AlonzoEra -> Model AlonzoEra
applyTx = Int -> SlotNo -> Model AlonzoEra -> Tx AlonzoEra -> Model AlonzoEra
forall era.
(EraModel era, AlonzoEraTx era, Reflect era) =>
Int -> SlotNo -> Model era -> Tx era -> Model era
alonzoApplyTx
  applyCert :: Model AlonzoEra -> TxCert AlonzoEra -> Model AlonzoEra
applyCert = Model AlonzoEra -> TxCert AlonzoEra -> Model AlonzoEra
Model AlonzoEra -> ShelleyTxCert AlonzoEra -> Model AlonzoEra
forall era.
EraPParams era =>
Model era -> ShelleyTxCert era -> Model era
applyShelleyCert
  mkRedeemersFromTags :: [((PlutusPurposeTag, Word32), (Data AlonzoEra, ExUnits))]
-> Redeemers AlonzoEra
mkRedeemersFromTags = [((PlutusPurposeTag, Word32), (Data AlonzoEra, ExUnits))]
-> Redeemers AlonzoEra
forall era.
(AlonzoEraScript era, EraModel era) =>
[((PlutusPurposeTag, Word32), (Data era, ExUnits))]
-> Redeemers era
alonzoMkRedeemersFromTags
  mkRedeemers :: [(PlutusPurpose AsIx AlonzoEra, (Data AlonzoEra, ExUnits))]
-> Redeemers AlonzoEra
mkRedeemers = [(PlutusPurpose AsIx AlonzoEra, (Data AlonzoEra, ExUnits))]
-> Redeemers AlonzoEra
forall era.
AlonzoEraScript era =>
[(PlutusPurpose AsIx era, (Data era, ExUnits))] -> Redeemers era
alonzoMkRedeemers
  newScriptIntegrityHash :: PParams AlonzoEra
-> [Language]
-> Redeemers AlonzoEra
-> TxDats AlonzoEra
-> StrictMaybe ScriptIntegrityHash
newScriptIntegrityHash = PParams AlonzoEra
-> [Language]
-> Redeemers AlonzoEra
-> TxDats AlonzoEra
-> StrictMaybe ScriptIntegrityHash
forall era.
(AlonzoEraScript era, AlonzoEraPParams era) =>
PParams era
-> [Language]
-> Redeemers era
-> TxDats era
-> StrictMaybe ScriptIntegrityHash
alonzoNewScriptIntegrityHash
  mkPlutusPurposePointer :: PlutusPurposeTag -> Word32 -> PlutusPurpose AsIx AlonzoEra
mkPlutusPurposePointer = PlutusPurposeTag -> Word32 -> AlonzoPlutusPurpose AsIx AlonzoEra
PlutusPurposeTag -> Word32 -> PlutusPurpose AsIx AlonzoEra
forall era.
Era era =>
PlutusPurposeTag -> Word32 -> AlonzoPlutusPurpose AsIx era
mkAlonzoPlutusPurposePointer
  always :: Natural -> Script AlonzoEra
always = forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @PlutusV1
  never :: Natural -> Script AlonzoEra
never = forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysFails @PlutusV1
  collateralReturnTxBodyT :: Lens' (TxBody AlonzoEra) (StrictMaybe (TxOut AlonzoEra))
collateralReturnTxBodyT = StrictMaybe (AlonzoTxOut AlonzoEra)
-> Lens' (TxBody AlonzoEra) (StrictMaybe (AlonzoTxOut AlonzoEra))
forall b a. b -> Lens' a b
dummyLens StrictMaybe (AlonzoTxOut AlonzoEra)
forall a. StrictMaybe a
SNothing
  validTxOut :: Map ScriptHash (Script AlonzoEra) -> TxOut AlonzoEra -> Bool
validTxOut = Map ScriptHash (Script AlonzoEra) -> TxOut AlonzoEra -> Bool
forall era.
(EraTxOut era, AlonzoEraScript era) =>
Map ScriptHash (Script era) -> TxOut era -> Bool
alonzoValidTxOut

instance EraModel BabbageEra where
  applyTx :: Int
-> SlotNo -> Model BabbageEra -> Tx BabbageEra -> Model BabbageEra
applyTx = Int
-> SlotNo -> Model BabbageEra -> Tx BabbageEra -> Model BabbageEra
forall era.
(EraModel era, AlonzoEraTx era, Reflect era) =>
Int -> SlotNo -> Model era -> Tx era -> Model era
alonzoApplyTx
  applyCert :: Model BabbageEra -> TxCert BabbageEra -> Model BabbageEra
applyCert = Model BabbageEra -> TxCert BabbageEra -> Model BabbageEra
Model BabbageEra -> ShelleyTxCert BabbageEra -> Model BabbageEra
forall era.
EraPParams era =>
Model era -> ShelleyTxCert era -> Model era
applyShelleyCert
  mkRedeemersFromTags :: [((PlutusPurposeTag, Word32), (Data BabbageEra, ExUnits))]
-> Redeemers BabbageEra
mkRedeemersFromTags = [((PlutusPurposeTag, Word32), (Data BabbageEra, ExUnits))]
-> Redeemers BabbageEra
forall era.
(AlonzoEraScript era, EraModel era) =>
[((PlutusPurposeTag, Word32), (Data era, ExUnits))]
-> Redeemers era
alonzoMkRedeemersFromTags
  mkRedeemers :: [(PlutusPurpose AsIx BabbageEra, (Data BabbageEra, ExUnits))]
-> Redeemers BabbageEra
mkRedeemers = [(PlutusPurpose AsIx BabbageEra, (Data BabbageEra, ExUnits))]
-> Redeemers BabbageEra
forall era.
AlonzoEraScript era =>
[(PlutusPurpose AsIx era, (Data era, ExUnits))] -> Redeemers era
alonzoMkRedeemers
  newScriptIntegrityHash :: PParams BabbageEra
-> [Language]
-> Redeemers BabbageEra
-> TxDats BabbageEra
-> StrictMaybe ScriptIntegrityHash
newScriptIntegrityHash = PParams BabbageEra
-> [Language]
-> Redeemers BabbageEra
-> TxDats BabbageEra
-> StrictMaybe ScriptIntegrityHash
forall era.
(AlonzoEraScript era, AlonzoEraPParams era) =>
PParams era
-> [Language]
-> Redeemers era
-> TxDats era
-> StrictMaybe ScriptIntegrityHash
alonzoNewScriptIntegrityHash
  mkPlutusPurposePointer :: PlutusPurposeTag -> Word32 -> PlutusPurpose AsIx BabbageEra
mkPlutusPurposePointer = PlutusPurposeTag -> Word32 -> AlonzoPlutusPurpose AsIx BabbageEra
PlutusPurposeTag -> Word32 -> PlutusPurpose AsIx BabbageEra
forall era.
Era era =>
PlutusPurposeTag -> Word32 -> AlonzoPlutusPurpose AsIx era
mkAlonzoPlutusPurposePointer
  always :: Natural -> Script BabbageEra
always = forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @PlutusV1
  never :: Natural -> Script BabbageEra
never = forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysFails @PlutusV1
  collateralReturnTxBodyT :: Lens' (TxBody BabbageEra) (StrictMaybe (TxOut BabbageEra))
collateralReturnTxBodyT = (StrictMaybe (TxOut BabbageEra)
 -> f (StrictMaybe (TxOut BabbageEra)))
-> TxBody BabbageEra -> f (TxBody BabbageEra)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (TxOut era))
Lens' (TxBody BabbageEra) (StrictMaybe (TxOut BabbageEra))
collateralReturnTxBodyL
  validTxOut :: Map ScriptHash (Script BabbageEra) -> TxOut BabbageEra -> Bool
validTxOut = Map ScriptHash (Script BabbageEra) -> TxOut BabbageEra -> Bool
forall era.
(EraTxOut era, AlonzoEraScript era) =>
Map ScriptHash (Script era) -> TxOut era -> Bool
alonzoValidTxOut

instance EraModel ConwayEra where
  applyTx :: Int -> SlotNo -> Model ConwayEra -> Tx ConwayEra -> Model ConwayEra
applyTx = Int -> SlotNo -> Model ConwayEra -> Tx ConwayEra -> Model ConwayEra
forall era.
(EraModel era, AlonzoEraTx era, Reflect era) =>
Int -> SlotNo -> Model era -> Tx era -> Model era
alonzoApplyTx
  applyCert :: Model ConwayEra -> TxCert ConwayEra -> Model ConwayEra
applyCert = [Char]
-> Model ConwayEra -> ConwayTxCert ConwayEra -> Model ConwayEra
forall a. HasCallStack => [Char] -> a
error [Char]
"Not yet implemented"
  mkRedeemersFromTags :: [((PlutusPurposeTag, Word32), (Data ConwayEra, ExUnits))]
-> Redeemers ConwayEra
mkRedeemersFromTags = [((PlutusPurposeTag, Word32), (Data ConwayEra, ExUnits))]
-> Redeemers ConwayEra
forall era.
(AlonzoEraScript era, EraModel era) =>
[((PlutusPurposeTag, Word32), (Data era, ExUnits))]
-> Redeemers era
alonzoMkRedeemersFromTags
  mkRedeemers :: [(PlutusPurpose AsIx ConwayEra, (Data ConwayEra, ExUnits))]
-> Redeemers ConwayEra
mkRedeemers = [(PlutusPurpose AsIx ConwayEra, (Data ConwayEra, ExUnits))]
-> Redeemers ConwayEra
forall era.
AlonzoEraScript era =>
[(PlutusPurpose AsIx era, (Data era, ExUnits))] -> Redeemers era
alonzoMkRedeemers
  newScriptIntegrityHash :: PParams ConwayEra
-> [Language]
-> Redeemers ConwayEra
-> TxDats ConwayEra
-> StrictMaybe ScriptIntegrityHash
newScriptIntegrityHash = PParams ConwayEra
-> [Language]
-> Redeemers ConwayEra
-> TxDats ConwayEra
-> StrictMaybe ScriptIntegrityHash
forall era.
(AlonzoEraScript era, AlonzoEraPParams era) =>
PParams era
-> [Language]
-> Redeemers era
-> TxDats era
-> StrictMaybe ScriptIntegrityHash
alonzoNewScriptIntegrityHash
  mkPlutusPurposePointer :: PlutusPurposeTag -> Word32 -> PlutusPurpose AsIx ConwayEra
mkPlutusPurposePointer = PlutusPurposeTag -> Word32 -> PlutusPurpose AsIx ConwayEra
PlutusPurposeTag -> Word32 -> ConwayPlutusPurpose AsIx ConwayEra
forall era.
PlutusPurposeTag -> Word32 -> ConwayPlutusPurpose AsIx era
mkConwayPlutusPurposePointer
  always :: Natural -> Script ConwayEra
always = forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @PlutusV1
  never :: Natural -> Script ConwayEra
never = forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysFails @PlutusV1
  collateralReturnTxBodyT :: Lens' (TxBody ConwayEra) (StrictMaybe (TxOut ConwayEra))
collateralReturnTxBodyT = (StrictMaybe (TxOut ConwayEra)
 -> f (StrictMaybe (TxOut ConwayEra)))
-> TxBody ConwayEra -> f (TxBody ConwayEra)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (TxOut era))
Lens' (TxBody ConwayEra) (StrictMaybe (TxOut ConwayEra))
collateralReturnTxBodyL
  validTxOut :: Map ScriptHash (Script ConwayEra) -> TxOut ConwayEra -> Bool
validTxOut = Map ScriptHash (Script ConwayEra) -> TxOut ConwayEra -> Bool
forall era.
(EraTxOut era, AlonzoEraScript era) =>
Map ScriptHash (Script era) -> TxOut era -> Bool
alonzoValidTxOut

instance EraGenericGen ShelleyEra where
  setValidity :: ValidityInterval -> TxBody ShelleyEra -> TxBody ShelleyEra
setValidity = ValidityInterval -> TxBody ShelleyEra -> TxBody ShelleyEra
shelleySetValidity
  setReferenceInputs :: Set TxIn -> TxBody ShelleyEra -> TxBody ShelleyEra
setReferenceInputs = (TxBody ShelleyEra -> TxBody ShelleyEra)
-> Set TxIn -> TxBody ShelleyEra -> TxBody ShelleyEra
forall a b. a -> b -> a
const TxBody ShelleyEra -> TxBody ShelleyEra
forall a. a -> a
id
  setCollateralInputs :: Set TxIn -> TxBody ShelleyEra -> TxBody ShelleyEra
setCollateralInputs = (TxBody ShelleyEra -> TxBody ShelleyEra)
-> Set TxIn -> TxBody ShelleyEra -> TxBody ShelleyEra
forall a b. a -> b -> a
const TxBody ShelleyEra -> TxBody ShelleyEra
forall a. a -> a
id
  setTotalCollateral :: StrictMaybe Coin -> TxBody ShelleyEra -> TxBody ShelleyEra
setTotalCollateral = (TxBody ShelleyEra -> TxBody ShelleyEra)
-> StrictMaybe Coin -> TxBody ShelleyEra -> TxBody ShelleyEra
forall a b. a -> b -> a
const TxBody ShelleyEra -> TxBody ShelleyEra
forall a. a -> a
id
  setCollateralReturn :: StrictMaybe (TxOut ShelleyEra)
-> TxBody ShelleyEra -> TxBody ShelleyEra
setCollateralReturn = (TxBody ShelleyEra -> TxBody ShelleyEra)
-> StrictMaybe (ShelleyTxOut ShelleyEra)
-> TxBody ShelleyEra
-> TxBody ShelleyEra
forall a b. a -> b -> a
const TxBody ShelleyEra -> TxBody ShelleyEra
forall a. a -> a
id
  addRedeemers :: Redeemers ShelleyEra -> TxWits ShelleyEra -> TxWits ShelleyEra
addRedeemers = (ShelleyTxWits ShelleyEra -> ShelleyTxWits ShelleyEra)
-> Redeemers ShelleyEra
-> ShelleyTxWits ShelleyEra
-> ShelleyTxWits ShelleyEra
forall a b. a -> b -> a
const ShelleyTxWits ShelleyEra -> ShelleyTxWits ShelleyEra
forall a. a -> a
id
  setScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
-> TxBody ShelleyEra -> TxBody ShelleyEra
setScriptIntegrityHash = (TxBody ShelleyEra -> TxBody ShelleyEra)
-> StrictMaybe ScriptIntegrityHash
-> TxBody ShelleyEra
-> TxBody ShelleyEra
forall a b. a -> b -> a
const TxBody ShelleyEra -> TxBody ShelleyEra
forall a. a -> a
id
  setNetworkIdTxBody :: StrictMaybe Network -> TxBody ShelleyEra -> TxBody ShelleyEra
setNetworkIdTxBody = (TxBody ShelleyEra -> TxBody ShelleyEra)
-> StrictMaybe Network -> TxBody ShelleyEra -> TxBody ShelleyEra
forall a b. a -> b -> a
const TxBody ShelleyEra -> TxBody ShelleyEra
forall a. a -> a
id
  genExUnits :: Int -> GenRS ShelleyEra [ExUnits]
genExUnits = GenRS ShelleyEra [ExUnits] -> Int -> GenRS ShelleyEra [ExUnits]
forall a b. a -> b -> a
const (GenRS ShelleyEra [ExUnits] -> Int -> GenRS ShelleyEra [ExUnits])
-> GenRS ShelleyEra [ExUnits] -> Int -> GenRS ShelleyEra [ExUnits]
forall a b. (a -> b) -> a -> b
$ [ExUnits] -> GenRS ShelleyEra [ExUnits]
forall a.
a -> RWST (GenEnv ShelleyEra) () (GenState ShelleyEra) Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure []
  ppMaxCollateralInputsT :: Lens' (PParams ShelleyEra) Natural
ppMaxCollateralInputsT = Natural -> Lens' (PParams ShelleyEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  ppCollateralPercentageT :: Lens' (PParams ShelleyEra) Natural
ppCollateralPercentageT = Natural -> Lens' (PParams ShelleyEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  ppCostModelsT :: Lens' (PParams ShelleyEra) CostModels
ppCostModelsT = CostModels -> Lens' (PParams ShelleyEra) CostModels
forall b a. b -> Lens' a b
dummyLens CostModels
forall a. Monoid a => a
mempty
  ppMaxTxExUnitsT :: Lens' (PParams ShelleyEra) ExUnits
ppMaxTxExUnitsT = ExUnits -> Lens' (PParams ShelleyEra) ExUnits
forall b a. b -> Lens' a b
dummyLens ExUnits
forall a. Monoid a => a
mempty
  ppMaxBlockExUnitsT :: Lens' (PParams ShelleyEra) ExUnits
ppMaxBlockExUnitsT = ExUnits -> Lens' (PParams ShelleyEra) ExUnits
forall b a. b -> Lens' a b
dummyLens ExUnits
forall a. Monoid a => a
mempty
  ppMaxValSizeT :: Lens' (PParams ShelleyEra) Natural
ppMaxValSizeT = Natural -> Lens' (PParams ShelleyEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  mkScriptIntegrityHash :: PParams ShelleyEra
-> [Language]
-> TxWits ShelleyEra
-> StrictMaybe ScriptIntegrityHash
mkScriptIntegrityHash PParams ShelleyEra
_ [Language]
_ TxWits ShelleyEra
_ = StrictMaybe ScriptIntegrityHash
forall a. StrictMaybe a
SNothing
  genPParams :: GenSize -> Gen (PParams ShelleyEra)
genPParams GenSize
_ = Gen (PParams ShelleyEra)
forall era. EraPParams era => Gen (PParams era)
shelleyGenPParams

instance EraGenericGen MaryEra where
  setValidity :: ValidityInterval -> TxBody MaryEra -> TxBody MaryEra
setValidity = ValidityInterval -> TxBody MaryEra -> TxBody MaryEra
forall era.
AllegraEraTxBody era =>
ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity
  setReferenceInputs :: Set TxIn -> TxBody MaryEra -> TxBody MaryEra
setReferenceInputs = (TxBody MaryEra -> TxBody MaryEra)
-> Set TxIn -> TxBody MaryEra -> TxBody MaryEra
forall a b. a -> b -> a
const TxBody MaryEra -> TxBody MaryEra
forall a. a -> a
id
  setCollateralInputs :: Set TxIn -> TxBody MaryEra -> TxBody MaryEra
setCollateralInputs = (TxBody MaryEra -> TxBody MaryEra)
-> Set TxIn -> TxBody MaryEra -> TxBody MaryEra
forall a b. a -> b -> a
const TxBody MaryEra -> TxBody MaryEra
forall a. a -> a
id
  setTotalCollateral :: StrictMaybe Coin -> TxBody MaryEra -> TxBody MaryEra
setTotalCollateral = (TxBody MaryEra -> TxBody MaryEra)
-> StrictMaybe Coin -> TxBody MaryEra -> TxBody MaryEra
forall a b. a -> b -> a
const TxBody MaryEra -> TxBody MaryEra
forall a. a -> a
id
  setCollateralReturn :: StrictMaybe (TxOut MaryEra) -> TxBody MaryEra -> TxBody MaryEra
setCollateralReturn = (TxBody MaryEra -> TxBody MaryEra)
-> StrictMaybe (ShelleyTxOut MaryEra)
-> TxBody MaryEra
-> TxBody MaryEra
forall a b. a -> b -> a
const TxBody MaryEra -> TxBody MaryEra
forall a. a -> a
id
  addRedeemers :: Redeemers MaryEra -> TxWits MaryEra -> TxWits MaryEra
addRedeemers = (ShelleyTxWits MaryEra -> ShelleyTxWits MaryEra)
-> Redeemers MaryEra
-> ShelleyTxWits MaryEra
-> ShelleyTxWits MaryEra
forall a b. a -> b -> a
const ShelleyTxWits MaryEra -> ShelleyTxWits MaryEra
forall a. a -> a
id
  setScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash -> TxBody MaryEra -> TxBody MaryEra
setScriptIntegrityHash = (TxBody MaryEra -> TxBody MaryEra)
-> StrictMaybe ScriptIntegrityHash
-> TxBody MaryEra
-> TxBody MaryEra
forall a b. a -> b -> a
const TxBody MaryEra -> TxBody MaryEra
forall a. a -> a
id
  setNetworkIdTxBody :: StrictMaybe Network -> TxBody MaryEra -> TxBody MaryEra
setNetworkIdTxBody = (TxBody MaryEra -> TxBody MaryEra)
-> StrictMaybe Network -> TxBody MaryEra -> TxBody MaryEra
forall a b. a -> b -> a
const TxBody MaryEra -> TxBody MaryEra
forall a. a -> a
id
  genExUnits :: Int -> GenRS MaryEra [ExUnits]
genExUnits = GenRS MaryEra [ExUnits] -> Int -> GenRS MaryEra [ExUnits]
forall a b. a -> b -> a
const (GenRS MaryEra [ExUnits] -> Int -> GenRS MaryEra [ExUnits])
-> GenRS MaryEra [ExUnits] -> Int -> GenRS MaryEra [ExUnits]
forall a b. (a -> b) -> a -> b
$ [ExUnits] -> GenRS MaryEra [ExUnits]
forall a. a -> RWST (GenEnv MaryEra) () (GenState MaryEra) Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure []
  ppMaxCollateralInputsT :: Lens' (PParams MaryEra) Natural
ppMaxCollateralInputsT = Natural -> Lens' (PParams MaryEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  ppCollateralPercentageT :: Lens' (PParams MaryEra) Natural
ppCollateralPercentageT = Natural -> Lens' (PParams MaryEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  ppCostModelsT :: Lens' (PParams MaryEra) CostModels
ppCostModelsT = CostModels -> Lens' (PParams MaryEra) CostModels
forall b a. b -> Lens' a b
dummyLens CostModels
forall a. Monoid a => a
mempty
  ppMaxTxExUnitsT :: Lens' (PParams MaryEra) ExUnits
ppMaxTxExUnitsT = ExUnits -> Lens' (PParams MaryEra) ExUnits
forall b a. b -> Lens' a b
dummyLens ExUnits
forall a. Monoid a => a
mempty
  ppMaxBlockExUnitsT :: Lens' (PParams MaryEra) ExUnits
ppMaxBlockExUnitsT = ExUnits -> Lens' (PParams MaryEra) ExUnits
forall b a. b -> Lens' a b
dummyLens ExUnits
forall a. Monoid a => a
mempty
  ppMaxValSizeT :: Lens' (PParams MaryEra) Natural
ppMaxValSizeT = Natural -> Lens' (PParams MaryEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  mkScriptIntegrityHash :: PParams MaryEra
-> [Language] -> TxWits MaryEra -> StrictMaybe ScriptIntegrityHash
mkScriptIntegrityHash PParams MaryEra
_ [Language]
_ TxWits MaryEra
_ = StrictMaybe ScriptIntegrityHash
forall a. StrictMaybe a
SNothing
  genPParams :: GenSize -> Gen (PParams MaryEra)
genPParams GenSize
_ = Gen (PParams MaryEra)
forall era. EraPParams era => Gen (PParams era)
shelleyGenPParams

instance EraGenericGen AllegraEra where
  setValidity :: ValidityInterval -> TxBody AllegraEra -> TxBody AllegraEra
setValidity = ValidityInterval -> TxBody AllegraEra -> TxBody AllegraEra
forall era.
AllegraEraTxBody era =>
ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity
  setReferenceInputs :: Set TxIn -> TxBody AllegraEra -> TxBody AllegraEra
setReferenceInputs = (TxBody AllegraEra -> TxBody AllegraEra)
-> Set TxIn -> TxBody AllegraEra -> TxBody AllegraEra
forall a b. a -> b -> a
const TxBody AllegraEra -> TxBody AllegraEra
forall a. a -> a
id
  setCollateralInputs :: Set TxIn -> TxBody AllegraEra -> TxBody AllegraEra
setCollateralInputs = (TxBody AllegraEra -> TxBody AllegraEra)
-> Set TxIn -> TxBody AllegraEra -> TxBody AllegraEra
forall a b. a -> b -> a
const TxBody AllegraEra -> TxBody AllegraEra
forall a. a -> a
id
  setTotalCollateral :: StrictMaybe Coin -> TxBody AllegraEra -> TxBody AllegraEra
setTotalCollateral = (TxBody AllegraEra -> TxBody AllegraEra)
-> StrictMaybe Coin -> TxBody AllegraEra -> TxBody AllegraEra
forall a b. a -> b -> a
const TxBody AllegraEra -> TxBody AllegraEra
forall a. a -> a
id
  setCollateralReturn :: StrictMaybe (TxOut AllegraEra)
-> TxBody AllegraEra -> TxBody AllegraEra
setCollateralReturn = (TxBody AllegraEra -> TxBody AllegraEra)
-> StrictMaybe (ShelleyTxOut AllegraEra)
-> TxBody AllegraEra
-> TxBody AllegraEra
forall a b. a -> b -> a
const TxBody AllegraEra -> TxBody AllegraEra
forall a. a -> a
id
  addRedeemers :: Redeemers AllegraEra -> TxWits AllegraEra -> TxWits AllegraEra
addRedeemers = (ShelleyTxWits AllegraEra -> ShelleyTxWits AllegraEra)
-> Redeemers AllegraEra
-> ShelleyTxWits AllegraEra
-> ShelleyTxWits AllegraEra
forall a b. a -> b -> a
const ShelleyTxWits AllegraEra -> ShelleyTxWits AllegraEra
forall a. a -> a
id
  setScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
-> TxBody AllegraEra -> TxBody AllegraEra
setScriptIntegrityHash = (TxBody AllegraEra -> TxBody AllegraEra)
-> StrictMaybe ScriptIntegrityHash
-> TxBody AllegraEra
-> TxBody AllegraEra
forall a b. a -> b -> a
const TxBody AllegraEra -> TxBody AllegraEra
forall a. a -> a
id
  setNetworkIdTxBody :: StrictMaybe Network -> TxBody AllegraEra -> TxBody AllegraEra
setNetworkIdTxBody = (TxBody AllegraEra -> TxBody AllegraEra)
-> StrictMaybe Network -> TxBody AllegraEra -> TxBody AllegraEra
forall a b. a -> b -> a
const TxBody AllegraEra -> TxBody AllegraEra
forall a. a -> a
id
  genExUnits :: Int -> GenRS AllegraEra [ExUnits]
genExUnits = GenRS AllegraEra [ExUnits] -> Int -> GenRS AllegraEra [ExUnits]
forall a b. a -> b -> a
const (GenRS AllegraEra [ExUnits] -> Int -> GenRS AllegraEra [ExUnits])
-> GenRS AllegraEra [ExUnits] -> Int -> GenRS AllegraEra [ExUnits]
forall a b. (a -> b) -> a -> b
$ [ExUnits] -> GenRS AllegraEra [ExUnits]
forall a.
a -> RWST (GenEnv AllegraEra) () (GenState AllegraEra) Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure []
  ppMaxCollateralInputsT :: Lens' (PParams AllegraEra) Natural
ppMaxCollateralInputsT = Natural -> Lens' (PParams AllegraEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  ppCollateralPercentageT :: Lens' (PParams AllegraEra) Natural
ppCollateralPercentageT = Natural -> Lens' (PParams AllegraEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  ppCostModelsT :: Lens' (PParams AllegraEra) CostModels
ppCostModelsT = CostModels -> Lens' (PParams AllegraEra) CostModels
forall b a. b -> Lens' a b
dummyLens CostModels
forall a. Monoid a => a
mempty
  ppMaxTxExUnitsT :: Lens' (PParams AllegraEra) ExUnits
ppMaxTxExUnitsT = ExUnits -> Lens' (PParams AllegraEra) ExUnits
forall b a. b -> Lens' a b
dummyLens ExUnits
forall a. Monoid a => a
mempty
  ppMaxBlockExUnitsT :: Lens' (PParams AllegraEra) ExUnits
ppMaxBlockExUnitsT = ExUnits -> Lens' (PParams AllegraEra) ExUnits
forall b a. b -> Lens' a b
dummyLens ExUnits
forall a. Monoid a => a
mempty
  ppMaxValSizeT :: Lens' (PParams AllegraEra) Natural
ppMaxValSizeT = Natural -> Lens' (PParams AllegraEra) Natural
forall b a. b -> Lens' a b
dummyLens Natural
0
  mkScriptIntegrityHash :: PParams AllegraEra
-> [Language]
-> TxWits AllegraEra
-> StrictMaybe ScriptIntegrityHash
mkScriptIntegrityHash PParams AllegraEra
_ [Language]
_ TxWits AllegraEra
_ = StrictMaybe ScriptIntegrityHash
forall a. StrictMaybe a
SNothing
  genPParams :: GenSize -> Gen (PParams AllegraEra)
genPParams GenSize
_ = Gen (PParams AllegraEra)
forall era. EraPParams era => Gen (PParams era)
shelleyGenPParams

alonzoMkScriptIntegrityHash ::
  ( EraModel era
  , AlonzoEraTxWits era
  ) =>
  PParams era -> [Language] -> TxWits era -> StrictMaybe ScriptIntegrityHash
alonzoMkScriptIntegrityHash :: forall era.
(EraModel era, AlonzoEraTxWits era) =>
PParams era
-> [Language] -> TxWits era -> StrictMaybe ScriptIntegrityHash
alonzoMkScriptIntegrityHash PParams era
pp [Language]
langs TxWits era
wits =
  PParams era
-> [Language]
-> Redeemers era
-> TxDats era
-> StrictMaybe ScriptIntegrityHash
forall era.
EraModel era =>
PParams era
-> [Language]
-> Redeemers era
-> TxDats era
-> StrictMaybe ScriptIntegrityHash
newScriptIntegrityHash PParams era
pp [Language]
langs (TxWits era
wits TxWits era
-> Getting (Redeemers era) (TxWits era) (Redeemers era)
-> Redeemers era
forall s a. s -> Getting a s a -> a
^. Getting (Redeemers era) (TxWits era) (Redeemers era)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits era) (Redeemers era)
rdmrsTxWitsL) (TxWits era
wits TxWits era
-> Getting (TxDats era) (TxWits era) (TxDats era) -> TxDats era
forall s a. s -> Getting a s a -> a
^. Getting (TxDats era) (TxWits era) (TxDats era)
forall era. AlonzoEraTxWits era => Lens' (TxWits era) (TxDats era)
Lens' (TxWits era) (TxDats era)
datsTxWitsL)

-- | Generate a list of specified length with randomish `ExUnit`s where the sum
--   of all values produced will not exceed the maxTxExUnits.
alonzoGenExUnits :: AlonzoEraPParams era => Int -> GenRS era [ExUnits]
alonzoGenExUnits :: forall era. AlonzoEraPParams era => Int -> GenRS era [ExUnits]
alonzoGenExUnits Int
n = do
  GenEnv {PParams era
gePParams :: PParams era
gePParams :: forall era. GenEnv era -> PParams era
gePParams} <- (GenState era -> GenEnv era)
-> RWST (GenEnv era) () (GenState era) Gen (GenEnv era)
forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a
gets GenState era -> GenEnv era
forall era. GenState era -> GenEnv era
gsGenEnv
  let ExUnits Natural
maxMemUnits Natural
maxStepUnits = PParams era
gePParams PParams era -> Getting ExUnits (PParams era) ExUnits -> ExUnits
forall s a. s -> Getting a s a -> a
^. Getting ExUnits (PParams era) ExUnits
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams era) ExUnits
ppMaxTxExUnitsL
  [Natural]
memUnits <- Gen [Natural] -> RWST (GenEnv era) () (GenState era) Gen [Natural]
forall (m :: * -> *) a.
Monad m =>
m a -> RWST (GenEnv era) () (GenState era) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (Gen [Natural]
 -> RWST (GenEnv era) () (GenState era) Gen [Natural])
-> Gen [Natural]
-> RWST (GenEnv era) () (GenState era) Gen [Natural]
forall a b. (a -> b) -> a -> b
$ Natural -> Gen [Natural]
genSequenceSum Natural
maxMemUnits
  [Natural]
stepUnits <- Gen [Natural] -> RWST (GenEnv era) () (GenState era) Gen [Natural]
forall (m :: * -> *) a.
Monad m =>
m a -> RWST (GenEnv era) () (GenState era) m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (Gen [Natural]
 -> RWST (GenEnv era) () (GenState era) Gen [Natural])
-> Gen [Natural]
-> RWST (GenEnv era) () (GenState era) Gen [Natural]
forall a b. (a -> b) -> a -> b
$ Natural -> Gen [Natural]
genSequenceSum Natural
maxStepUnits
  [ExUnits] -> GenRS era [ExUnits]
forall a. a -> RWST (GenEnv era) () (GenState era) Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([ExUnits] -> GenRS era [ExUnits])
-> [ExUnits] -> GenRS era [ExUnits]
forall a b. (a -> b) -> a -> b
$ (Natural -> Natural -> ExUnits)
-> [Natural] -> [Natural] -> [ExUnits]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Natural -> Natural -> ExUnits
ExUnits [Natural]
memUnits [Natural]
stepUnits
  where
    un :: Natural
un = Int -> Natural
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n
    genUpTo :: Natural -> (a, [a]) -> p -> Gen (a, [a])
genUpTo Natural
maxVal (!a
totalLeft, ![a]
acc) p
_
      | a
totalLeft a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
0 = (a, [a]) -> Gen (a, [a])
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a
0, a
0 a -> [a] -> [a]
forall a. a -> [a] -> [a]
: [a]
acc)
      | Bool
otherwise = do
          a
x <- a -> a -> a
forall a. Ord a => a -> a -> a
min a
totalLeft (a -> a) -> (Natural -> a) -> Natural -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ratio Natural -> a
forall b. Integral b => Ratio Natural -> b
forall a b. (RealFrac a, Integral b) => a -> b
round (Ratio Natural -> a) -> (Natural -> Ratio Natural) -> Natural -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Natural -> Natural -> Ratio Natural
forall a. Integral a => a -> a -> Ratio a
% Natural
un) (Natural -> a) -> Gen Natural -> Gen a
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Natural -> Natural -> Gen Natural
genNatural Natural
0 Natural
maxVal
          (a, [a]) -> Gen (a, [a])
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a
totalLeft a -> a -> a
forall a. Num a => a -> a -> a
- a
x, a
x a -> [a] -> [a]
forall a. a -> [a] -> [a]
: [a]
acc)
    genSequenceSum :: Natural -> Gen [Natural]
genSequenceSum Natural
maxVal
      | Natural
maxVal Natural -> Natural -> Bool
forall a. Eq a => a -> a -> Bool
== Natural
0 = [Natural] -> Gen [Natural]
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([Natural] -> Gen [Natural]) -> [Natural] -> Gen [Natural]
forall a b. (a -> b) -> a -> b
$ Int -> Natural -> [Natural]
forall a. Int -> a -> [a]
replicate Int
n Natural
0
      | Bool
otherwise = (Natural, [Natural]) -> [Natural]
forall a b. (a, b) -> b
snd ((Natural, [Natural]) -> [Natural])
-> Gen (Natural, [Natural]) -> Gen [Natural]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((Natural, [Natural]) -> Int -> Gen (Natural, [Natural]))
-> (Natural, [Natural]) -> [Int] -> Gen (Natural, [Natural])
forall (t :: * -> *) (m :: * -> *) b a.
(Foldable t, Monad m) =>
(b -> a -> m b) -> b -> t a -> m b
F.foldlM (Natural -> (Natural, [Natural]) -> Int -> Gen (Natural, [Natural])
forall {a} {p}.
Integral a =>
Natural -> (a, [a]) -> p -> Gen (a, [a])
genUpTo Natural
maxVal) (Natural
maxVal, []) ([Int
Item [Int]
1 .. Int
Item [Int]
n] :: [Int])

instance EraGenericGen AlonzoEra where
  setValidity :: ValidityInterval -> TxBody AlonzoEra -> TxBody AlonzoEra
setValidity = ValidityInterval -> TxBody AlonzoEra -> TxBody AlonzoEra
forall era.
AllegraEraTxBody era =>
ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity
  setCollateralInputs :: Set TxIn -> TxBody AlonzoEra -> TxBody AlonzoEra
setCollateralInputs = ASetter (TxBody AlonzoEra) (TxBody AlonzoEra) (Set TxIn) (Set TxIn)
-> Set TxIn -> TxBody AlonzoEra -> TxBody AlonzoEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter (TxBody AlonzoEra) (TxBody AlonzoEra) (Set TxIn) (Set TxIn)
forall era. AlonzoEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody AlonzoEra) (Set TxIn)
collateralInputsTxBodyL
  addRedeemers :: Redeemers AlonzoEra -> TxWits AlonzoEra -> TxWits AlonzoEra
addRedeemers Redeemers AlonzoEra
x = (Redeemers AlonzoEra -> Identity (Redeemers AlonzoEra))
-> TxWits AlonzoEra -> Identity (TxWits AlonzoEra)
(Redeemers AlonzoEra -> Identity (Redeemers AlonzoEra))
-> AlonzoTxWits AlonzoEra -> Identity (AlonzoTxWits AlonzoEra)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits AlonzoEra) (Redeemers AlonzoEra)
rdmrsTxWitsL ((Redeemers AlonzoEra -> Identity (Redeemers AlonzoEra))
 -> AlonzoTxWits AlonzoEra -> Identity (AlonzoTxWits AlonzoEra))
-> Redeemers AlonzoEra
-> AlonzoTxWits AlonzoEra
-> AlonzoTxWits AlonzoEra
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Redeemers AlonzoEra
x
  genExUnits :: Int -> GenRS AlonzoEra [ExUnits]
genExUnits = Int -> GenRS AlonzoEra [ExUnits]
forall era. AlonzoEraPParams era => Int -> GenRS era [ExUnits]
alonzoGenExUnits
  setNetworkIdTxBody :: StrictMaybe Network -> TxBody AlonzoEra -> TxBody AlonzoEra
setNetworkIdTxBody = ASetter
  (TxBody AlonzoEra)
  (TxBody AlonzoEra)
  (StrictMaybe Network)
  (StrictMaybe Network)
-> StrictMaybe Network -> TxBody AlonzoEra -> TxBody AlonzoEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody AlonzoEra)
  (TxBody AlonzoEra)
  (StrictMaybe Network)
  (StrictMaybe Network)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Network)
Lens' (TxBody AlonzoEra) (StrictMaybe Network)
networkIdTxBodyL
  ppMaxCollateralInputsT :: Lens' (PParams AlonzoEra) Natural
ppMaxCollateralInputsT = (Natural -> f Natural)
-> PParams AlonzoEra -> f (PParams AlonzoEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams AlonzoEra) Natural
ppMaxCollateralInputsL
  ppCollateralPercentageT :: Lens' (PParams AlonzoEra) Natural
ppCollateralPercentageT = (Natural -> f Natural)
-> PParams AlonzoEra -> f (PParams AlonzoEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams AlonzoEra) Natural
ppCollateralPercentageL
  mkScriptIntegrityHash :: PParams AlonzoEra
-> [Language]
-> TxWits AlonzoEra
-> StrictMaybe ScriptIntegrityHash
mkScriptIntegrityHash = PParams AlonzoEra
-> [Language]
-> TxWits AlonzoEra
-> StrictMaybe ScriptIntegrityHash
forall era.
(EraModel era, AlonzoEraTxWits era) =>
PParams era
-> [Language] -> TxWits era -> StrictMaybe ScriptIntegrityHash
alonzoMkScriptIntegrityHash
  ppCostModelsT :: Lens' (PParams AlonzoEra) CostModels
ppCostModelsT = (CostModels -> f CostModels)
-> PParams AlonzoEra -> f (PParams AlonzoEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams AlonzoEra) CostModels
ppCostModelsL
  ppMaxTxExUnitsT :: Lens' (PParams AlonzoEra) ExUnits
ppMaxTxExUnitsT = (ExUnits -> f ExUnits)
-> PParams AlonzoEra -> f (PParams AlonzoEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams AlonzoEra) ExUnits
ppMaxTxExUnitsL
  ppMaxBlockExUnitsT :: Lens' (PParams AlonzoEra) ExUnits
ppMaxBlockExUnitsT = (ExUnits -> f ExUnits)
-> PParams AlonzoEra -> f (PParams AlonzoEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams AlonzoEra) ExUnits
ppMaxBlockExUnitsL
  ppMaxValSizeT :: Lens' (PParams AlonzoEra) Natural
ppMaxValSizeT = (Natural -> f Natural)
-> PParams AlonzoEra -> f (PParams AlonzoEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams AlonzoEra) Natural
ppMaxValSizeL
  setScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
-> TxBody AlonzoEra -> TxBody AlonzoEra
setScriptIntegrityHash = ASetter
  (TxBody AlonzoEra)
  (TxBody AlonzoEra)
  (StrictMaybe ScriptIntegrityHash)
  (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ScriptIntegrityHash
-> TxBody AlonzoEra
-> TxBody AlonzoEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody AlonzoEra)
  (TxBody AlonzoEra)
  (StrictMaybe ScriptIntegrityHash)
  (StrictMaybe ScriptIntegrityHash)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
Lens' (TxBody AlonzoEra) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL
  setReferenceInputs :: Set TxIn -> TxBody AlonzoEra -> TxBody AlonzoEra
setReferenceInputs = (TxBody AlonzoEra -> TxBody AlonzoEra)
-> Set TxIn -> TxBody AlonzoEra -> TxBody AlonzoEra
forall a b. a -> b -> a
const TxBody AlonzoEra -> TxBody AlonzoEra
forall a. a -> a
id
  setTotalCollateral :: StrictMaybe Coin -> TxBody AlonzoEra -> TxBody AlonzoEra
setTotalCollateral = (TxBody AlonzoEra -> TxBody AlonzoEra)
-> StrictMaybe Coin -> TxBody AlonzoEra -> TxBody AlonzoEra
forall a b. a -> b -> a
const TxBody AlonzoEra -> TxBody AlonzoEra
forall a. a -> a
id
  setCollateralReturn :: StrictMaybe (TxOut AlonzoEra)
-> TxBody AlonzoEra -> TxBody AlonzoEra
setCollateralReturn = (TxBody AlonzoEra -> TxBody AlonzoEra)
-> StrictMaybe (AlonzoTxOut AlonzoEra)
-> TxBody AlonzoEra
-> TxBody AlonzoEra
forall a b. a -> b -> a
const TxBody AlonzoEra -> TxBody AlonzoEra
forall a. a -> a
id
  genPParams :: GenSize -> Gen (PParams AlonzoEra)
genPParams = GenSize -> Gen (PParams AlonzoEra)
forall era. AlonzoEraTest era => GenSize -> Gen (PParams era)
alonzoGenPParams

shelleyApplyTx :: EraModel era => Int -> SlotNo -> Model era -> Tx era -> Model era
shelleyApplyTx :: forall era.
EraModel era =>
Int -> SlotNo -> Model era -> Tx era -> Model era
shelleyApplyTx Int
count SlotNo
slot Model era
model Tx era
tx = Int -> Model era -> TxBody era -> Model era
forall era.
EraModel era =>
Int -> Model era -> TxBody era -> Model era
applyTxBody Int
count Model era
epochAccurateModel (TxBody era -> Model era) -> TxBody era -> Model era
forall a b. (a -> b) -> a -> b
$ Tx era
tx Tx era -> Getting (TxBody era) (Tx era) (TxBody era) -> TxBody era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody era) (Tx era) (TxBody era)
forall era. EraTx era => Lens' (Tx era) (TxBody era)
Lens' (Tx era) (TxBody era)
bodyTxL
  where
    modelEpoch :: EpochNo
modelEpoch = Model era -> EpochNo
forall era. ModelNewEpochState era -> EpochNo
mEL Model era
model
    transactionEpoch :: EpochNo
transactionEpoch = SlotNo -> EpochNo
epochFromSlotNo SlotNo
slot
    epochAccurateModel :: Model era
epochAccurateModel = EpochNo -> EpochNo -> Model era -> Model era
forall era.
EraPParams era =>
EpochNo -> EpochNo -> Model era -> Model era
epochBoundary EpochNo
transactionEpoch EpochNo
modelEpoch Model era
model

alonzoApplyTx ::
  forall era.
  (EraModel era, AlonzoEraTx era, Reflect era) =>
  Int -> SlotNo -> Model era -> Tx era -> Model era
alonzoApplyTx :: forall era.
(EraModel era, AlonzoEraTx era, Reflect era) =>
Int -> SlotNo -> Model era -> Tx era -> Model era
alonzoApplyTx Int
count SlotNo
slot Model era
model Tx era
tx = case Tx era
tx Tx era -> Getting IsValid (Tx era) IsValid -> IsValid
forall s a. s -> Getting a s a -> a
^. Getting IsValid (Tx era) IsValid
forall era. AlonzoEraTx era => Lens' (Tx era) IsValid
Lens' (Tx era) IsValid
isValidTxL of
  IsValid Bool
True -> Int -> Model era -> Tx era -> Model era
forall era. EraModel era => Int -> Model era -> Tx era -> Model era
applyTxSimple Int
count Model era
epochAccurateModel Tx era
tx
  IsValid Bool
False -> Int -> TxIx -> Model era -> Tx era -> Model era
forall era.
(Reflect era, AlonzoEraTxBody era, EraModel era) =>
Int -> TxIx -> Model era -> Tx era -> Model era
applyTxFail Int
count TxIx
nextTxIx Model era
epochAccurateModel Tx era
tx
  where
    transactionEpoch :: EpochNo
transactionEpoch = SlotNo -> EpochNo
epochFromSlotNo SlotNo
slot
    modelEpoch :: EpochNo
modelEpoch = Model era -> EpochNo
forall era. ModelNewEpochState era -> EpochNo
mEL Model era
model
    epochAccurateModel :: Model era
epochAccurateModel = EpochNo -> EpochNo -> Model era -> Model era
forall era.
EraPParams era =>
EpochNo -> EpochNo -> Model era -> Model era
epochBoundary EpochNo
transactionEpoch EpochNo
modelEpoch Model era
model
    txbody :: TxBody era
txbody = Tx era
tx Tx era -> Getting (TxBody era) (Tx era) (TxBody era) -> TxBody era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody era) (Tx era) (TxBody era)
forall era. EraTx era => Lens' (Tx era) (TxBody era)
Lens' (Tx era) (TxBody era)
bodyTxL
    outputs :: StrictSeq (TxOut era)
outputs = TxBody era
txbody TxBody era
-> Getting
     (StrictSeq (TxOut era)) (TxBody era) (StrictSeq (TxOut era))
-> StrictSeq (TxOut era)
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictSeq (TxOut era)) (TxBody era) (StrictSeq (TxOut era))
forall era.
EraTxBody era =>
Lens' (TxBody era) (StrictSeq (TxOut era))
Lens' (TxBody era) (StrictSeq (TxOut era))
outputsTxBodyL
    nextTxIx :: TxIx
nextTxIx = HasCallStack => Integer -> TxIx
Integer -> TxIx
mkTxIxPartial (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (StrictSeq (TxOut era) -> Int
forall a. StrictSeq a -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length StrictSeq (TxOut era)
outputs)) -- When IsValid is false, ColRet will get this TxIx

instance EraGenericGen BabbageEra where
  setValidity :: ValidityInterval -> TxBody BabbageEra -> TxBody BabbageEra
setValidity = ValidityInterval -> TxBody BabbageEra -> TxBody BabbageEra
forall era.
AllegraEraTxBody era =>
ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity
  setReferenceInputs :: Set TxIn -> TxBody BabbageEra -> TxBody BabbageEra
setReferenceInputs = ASetter
  (TxBody BabbageEra) (TxBody BabbageEra) (Set TxIn) (Set TxIn)
-> Set TxIn -> TxBody BabbageEra -> TxBody BabbageEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody BabbageEra) (TxBody BabbageEra) (Set TxIn) (Set TxIn)
forall era. BabbageEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody BabbageEra) (Set TxIn)
referenceInputsTxBodyL
  setCollateralInputs :: Set TxIn -> TxBody BabbageEra -> TxBody BabbageEra
setCollateralInputs = ASetter
  (TxBody BabbageEra) (TxBody BabbageEra) (Set TxIn) (Set TxIn)
-> Set TxIn -> TxBody BabbageEra -> TxBody BabbageEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody BabbageEra) (TxBody BabbageEra) (Set TxIn) (Set TxIn)
forall era. AlonzoEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody BabbageEra) (Set TxIn)
collateralInputsTxBodyL
  setTotalCollateral :: StrictMaybe Coin -> TxBody BabbageEra -> TxBody BabbageEra
setTotalCollateral = ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe Coin)
  (StrictMaybe Coin)
-> StrictMaybe Coin -> TxBody BabbageEra -> TxBody BabbageEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe Coin)
  (StrictMaybe Coin)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Coin)
Lens' (TxBody BabbageEra) (StrictMaybe Coin)
totalCollateralTxBodyL
  setCollateralReturn :: StrictMaybe (TxOut BabbageEra)
-> TxBody BabbageEra -> TxBody BabbageEra
setCollateralReturn = ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe (BabbageTxOut BabbageEra))
  (StrictMaybe (BabbageTxOut BabbageEra))
-> StrictMaybe (BabbageTxOut BabbageEra)
-> TxBody BabbageEra
-> TxBody BabbageEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set (StrictMaybe (TxOut BabbageEra)
 -> Identity (StrictMaybe (TxOut BabbageEra)))
-> TxBody BabbageEra -> Identity (TxBody BabbageEra)
ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe (BabbageTxOut BabbageEra))
  (StrictMaybe (BabbageTxOut BabbageEra))
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (TxOut era))
Lens' (TxBody BabbageEra) (StrictMaybe (TxOut BabbageEra))
collateralReturnTxBodyL
  addRedeemers :: Redeemers BabbageEra -> TxWits BabbageEra -> TxWits BabbageEra
addRedeemers Redeemers BabbageEra
x = (Redeemers BabbageEra -> Identity (Redeemers BabbageEra))
-> TxWits BabbageEra -> Identity (TxWits BabbageEra)
(Redeemers BabbageEra -> Identity (Redeemers BabbageEra))
-> AlonzoTxWits BabbageEra -> Identity (AlonzoTxWits BabbageEra)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits BabbageEra) (Redeemers BabbageEra)
rdmrsTxWitsL ((Redeemers BabbageEra -> Identity (Redeemers BabbageEra))
 -> AlonzoTxWits BabbageEra -> Identity (AlonzoTxWits BabbageEra))
-> Redeemers BabbageEra
-> AlonzoTxWits BabbageEra
-> AlonzoTxWits BabbageEra
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Redeemers BabbageEra
x
  genExUnits :: Int -> GenRS BabbageEra [ExUnits]
genExUnits = Int -> GenRS BabbageEra [ExUnits]
forall era. AlonzoEraPParams era => Int -> GenRS era [ExUnits]
alonzoGenExUnits
  setNetworkIdTxBody :: StrictMaybe Network -> TxBody BabbageEra -> TxBody BabbageEra
setNetworkIdTxBody = ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe Network)
  (StrictMaybe Network)
-> StrictMaybe Network -> TxBody BabbageEra -> TxBody BabbageEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe Network)
  (StrictMaybe Network)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Network)
Lens' (TxBody BabbageEra) (StrictMaybe Network)
networkIdTxBodyL
  ppMaxCollateralInputsT :: Lens' (PParams BabbageEra) Natural
ppMaxCollateralInputsT = (Natural -> f Natural)
-> PParams BabbageEra -> f (PParams BabbageEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams BabbageEra) Natural
ppMaxCollateralInputsL
  ppCollateralPercentageT :: Lens' (PParams BabbageEra) Natural
ppCollateralPercentageT = (Natural -> f Natural)
-> PParams BabbageEra -> f (PParams BabbageEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams BabbageEra) Natural
ppCollateralPercentageL
  mkScriptIntegrityHash :: PParams BabbageEra
-> [Language]
-> TxWits BabbageEra
-> StrictMaybe ScriptIntegrityHash
mkScriptIntegrityHash = PParams BabbageEra
-> [Language]
-> TxWits BabbageEra
-> StrictMaybe ScriptIntegrityHash
forall era.
(EraModel era, AlonzoEraTxWits era) =>
PParams era
-> [Language] -> TxWits era -> StrictMaybe ScriptIntegrityHash
alonzoMkScriptIntegrityHash
  ppCostModelsT :: Lens' (PParams BabbageEra) CostModels
ppCostModelsT = (CostModels -> f CostModels)
-> PParams BabbageEra -> f (PParams BabbageEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams BabbageEra) CostModels
ppCostModelsL
  ppMaxTxExUnitsT :: Lens' (PParams BabbageEra) ExUnits
ppMaxTxExUnitsT = (ExUnits -> f ExUnits)
-> PParams BabbageEra -> f (PParams BabbageEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams BabbageEra) ExUnits
ppMaxTxExUnitsL
  ppMaxBlockExUnitsT :: Lens' (PParams BabbageEra) ExUnits
ppMaxBlockExUnitsT = (ExUnits -> f ExUnits)
-> PParams BabbageEra -> f (PParams BabbageEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams BabbageEra) ExUnits
ppMaxBlockExUnitsL
  ppMaxValSizeT :: Lens' (PParams BabbageEra) Natural
ppMaxValSizeT = (Natural -> f Natural)
-> PParams BabbageEra -> f (PParams BabbageEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams BabbageEra) Natural
ppMaxValSizeL
  setScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
-> TxBody BabbageEra -> TxBody BabbageEra
setScriptIntegrityHash = ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe ScriptIntegrityHash)
  (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ScriptIntegrityHash
-> TxBody BabbageEra
-> TxBody BabbageEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody BabbageEra)
  (TxBody BabbageEra)
  (StrictMaybe ScriptIntegrityHash)
  (StrictMaybe ScriptIntegrityHash)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
Lens' (TxBody BabbageEra) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL
  genPParams :: GenSize -> Gen (PParams BabbageEra)
genPParams = GenSize -> Gen (PParams BabbageEra)
forall era. AlonzoEraTest era => GenSize -> Gen (PParams era)
alonzoGenPParams

instance EraGenericGen ConwayEra where
  setValidity :: ValidityInterval -> TxBody ConwayEra -> TxBody ConwayEra
setValidity = ValidityInterval -> TxBody ConwayEra -> TxBody ConwayEra
forall era.
AllegraEraTxBody era =>
ValidityInterval -> TxBody era -> TxBody era
allegraSetValidity
  setReferenceInputs :: Set TxIn -> TxBody ConwayEra -> TxBody ConwayEra
setReferenceInputs = ASetter (TxBody ConwayEra) (TxBody ConwayEra) (Set TxIn) (Set TxIn)
-> Set TxIn -> TxBody ConwayEra -> TxBody ConwayEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter (TxBody ConwayEra) (TxBody ConwayEra) (Set TxIn) (Set TxIn)
forall era. BabbageEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody ConwayEra) (Set TxIn)
referenceInputsTxBodyL
  setCollateralInputs :: Set TxIn -> TxBody ConwayEra -> TxBody ConwayEra
setCollateralInputs = ASetter (TxBody ConwayEra) (TxBody ConwayEra) (Set TxIn) (Set TxIn)
-> Set TxIn -> TxBody ConwayEra -> TxBody ConwayEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter (TxBody ConwayEra) (TxBody ConwayEra) (Set TxIn) (Set TxIn)
forall era. AlonzoEraTxBody era => Lens' (TxBody era) (Set TxIn)
Lens' (TxBody ConwayEra) (Set TxIn)
collateralInputsTxBodyL
  setTotalCollateral :: StrictMaybe Coin -> TxBody ConwayEra -> TxBody ConwayEra
setTotalCollateral = ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe Coin)
  (StrictMaybe Coin)
-> StrictMaybe Coin -> TxBody ConwayEra -> TxBody ConwayEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe Coin)
  (StrictMaybe Coin)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Coin)
Lens' (TxBody ConwayEra) (StrictMaybe Coin)
totalCollateralTxBodyL
  setCollateralReturn :: StrictMaybe (TxOut ConwayEra)
-> TxBody ConwayEra -> TxBody ConwayEra
setCollateralReturn = ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe (BabbageTxOut ConwayEra))
  (StrictMaybe (BabbageTxOut ConwayEra))
-> StrictMaybe (BabbageTxOut ConwayEra)
-> TxBody ConwayEra
-> TxBody ConwayEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set (StrictMaybe (TxOut ConwayEra)
 -> Identity (StrictMaybe (TxOut ConwayEra)))
-> TxBody ConwayEra -> Identity (TxBody ConwayEra)
ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe (BabbageTxOut ConwayEra))
  (StrictMaybe (BabbageTxOut ConwayEra))
forall era.
BabbageEraTxBody era =>
Lens' (TxBody era) (StrictMaybe (TxOut era))
Lens' (TxBody ConwayEra) (StrictMaybe (TxOut ConwayEra))
collateralReturnTxBodyL
  addRedeemers :: Redeemers ConwayEra -> TxWits ConwayEra -> TxWits ConwayEra
addRedeemers Redeemers ConwayEra
x = (Redeemers ConwayEra -> Identity (Redeemers ConwayEra))
-> TxWits ConwayEra -> Identity (TxWits ConwayEra)
(Redeemers ConwayEra -> Identity (Redeemers ConwayEra))
-> AlonzoTxWits ConwayEra -> Identity (AlonzoTxWits ConwayEra)
forall era.
AlonzoEraTxWits era =>
Lens' (TxWits era) (Redeemers era)
Lens' (TxWits ConwayEra) (Redeemers ConwayEra)
rdmrsTxWitsL ((Redeemers ConwayEra -> Identity (Redeemers ConwayEra))
 -> AlonzoTxWits ConwayEra -> Identity (AlonzoTxWits ConwayEra))
-> Redeemers ConwayEra
-> AlonzoTxWits ConwayEra
-> AlonzoTxWits ConwayEra
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Redeemers ConwayEra
x
  genExUnits :: Int -> GenRS ConwayEra [ExUnits]
genExUnits = Int -> GenRS ConwayEra [ExUnits]
forall era. AlonzoEraPParams era => Int -> GenRS era [ExUnits]
alonzoGenExUnits
  setNetworkIdTxBody :: StrictMaybe Network -> TxBody ConwayEra -> TxBody ConwayEra
setNetworkIdTxBody = ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe Network)
  (StrictMaybe Network)
-> StrictMaybe Network -> TxBody ConwayEra -> TxBody ConwayEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe Network)
  (StrictMaybe Network)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe Network)
Lens' (TxBody ConwayEra) (StrictMaybe Network)
networkIdTxBodyL
  ppMaxCollateralInputsT :: Lens' (PParams ConwayEra) Natural
ppMaxCollateralInputsT = (Natural -> f Natural)
-> PParams ConwayEra -> f (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams ConwayEra) Natural
ppMaxCollateralInputsL
  ppCollateralPercentageT :: Lens' (PParams ConwayEra) Natural
ppCollateralPercentageT = (Natural -> f Natural)
-> PParams ConwayEra -> f (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams ConwayEra) Natural
ppCollateralPercentageL
  mkScriptIntegrityHash :: PParams ConwayEra
-> [Language]
-> TxWits ConwayEra
-> StrictMaybe ScriptIntegrityHash
mkScriptIntegrityHash = PParams ConwayEra
-> [Language]
-> TxWits ConwayEra
-> StrictMaybe ScriptIntegrityHash
forall era.
(EraModel era, AlonzoEraTxWits era) =>
PParams era
-> [Language] -> TxWits era -> StrictMaybe ScriptIntegrityHash
alonzoMkScriptIntegrityHash
  ppCostModelsT :: Lens' (PParams ConwayEra) CostModels
ppCostModelsT = (CostModels -> f CostModels)
-> PParams ConwayEra -> f (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams ConwayEra) CostModels
ppCostModelsL
  ppMaxTxExUnitsT :: Lens' (PParams ConwayEra) ExUnits
ppMaxTxExUnitsT = (ExUnits -> f ExUnits)
-> PParams ConwayEra -> f (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams ConwayEra) ExUnits
ppMaxTxExUnitsL
  ppMaxBlockExUnitsT :: Lens' (PParams ConwayEra) ExUnits
ppMaxBlockExUnitsT = (ExUnits -> f ExUnits)
-> PParams ConwayEra -> f (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams ConwayEra) ExUnits
ppMaxBlockExUnitsL
  ppMaxValSizeT :: Lens' (PParams ConwayEra) Natural
ppMaxValSizeT = (Natural -> f Natural)
-> PParams ConwayEra -> f (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Natural
Lens' (PParams ConwayEra) Natural
ppMaxValSizeL
  setScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
-> TxBody ConwayEra -> TxBody ConwayEra
setScriptIntegrityHash = ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe ScriptIntegrityHash)
  (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ScriptIntegrityHash
-> TxBody ConwayEra
-> TxBody ConwayEra
forall s t a b. ASetter s t a b -> b -> s -> t
L.set ASetter
  (TxBody ConwayEra)
  (TxBody ConwayEra)
  (StrictMaybe ScriptIntegrityHash)
  (StrictMaybe ScriptIntegrityHash)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody era) (StrictMaybe ScriptIntegrityHash)
Lens' (TxBody ConwayEra) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL
  genPParams :: GenSize -> Gen (PParams ConwayEra)
genPParams = GenSize -> Gen (PParams ConwayEra)
forall era. AlonzoEraTest era => GenSize -> Gen (PParams era)
alonzoGenPParams

-- Utils

-- | Create an unlawful "lens" that returns the specified value when used as a
-- getter and does nothing when used as a setter
dummyLens :: b -> Lens' a b
dummyLens :: forall b a. b -> Lens' a b
dummyLens b
val = (a -> b) -> (a -> b -> a) -> Lens a a b b
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
L.lens (b -> a -> b
forall a b. a -> b -> a
const b
val) a -> b -> a
forall a b. a -> b -> a
const