module Test.Gen.Cardano.Api.ProtocolParameters where

import           Cardano.Api
import           Cardano.Api.Ledger
import           Cardano.Api.ProtocolParameters

import           Test.Gen.Cardano.Api.Typed (genCostModels)

import           Test.Cardano.Ledger.Alonzo.Arbitrary ()
import           Test.Cardano.Ledger.Conway.Arbitrary ()

import           Hedgehog (MonadGen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Gen.QuickCheck as Q

genStrictMaybe :: MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe :: forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m a
gen =
  (Size -> m (StrictMaybe a)) -> m (StrictMaybe a)
forall (m :: * -> *) a. MonadGen m => (Size -> m a) -> m a
Gen.sized ((Size -> m (StrictMaybe a)) -> m (StrictMaybe a))
-> (Size -> m (StrictMaybe a)) -> m (StrictMaybe a)
forall a b. (a -> b) -> a -> b
$ \Size
n ->
    [(Int, m (StrictMaybe a))] -> m (StrictMaybe a)
forall (m :: * -> *) a. MonadGen m => [(Int, m a)] -> m a
Gen.frequency
      [ (Int
2, StrictMaybe a -> m (StrictMaybe a)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure StrictMaybe a
forall a. StrictMaybe a
SNothing)
      , (Int
1 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Size -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Size
n, a -> StrictMaybe a
forall a. a -> StrictMaybe a
SJust (a -> StrictMaybe a) -> m a -> m (StrictMaybe a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m a
gen)
      ]

genCommonProtocolParametersUpdate :: MonadGen m => m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate =
  StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe Word32
-> StrictMaybe Word32
-> StrictMaybe Word16
-> StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe EpochInterval
-> StrictMaybe Natural
-> StrictMaybe NonNegativeInterval
-> StrictMaybe UnitInterval
-> StrictMaybe UnitInterval
-> StrictMaybe Coin
-> CommonProtocolParametersUpdate
CommonProtocolParametersUpdate
    (StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe Word32
 -> StrictMaybe Word32
 -> StrictMaybe Word16
 -> StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe EpochInterval
 -> StrictMaybe Natural
 -> StrictMaybe NonNegativeInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe Coin
 -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Coin)
-> m (StrictMaybe Coin
      -> StrictMaybe Word32
      -> StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Coin
   -> StrictMaybe Word32
   -> StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Coin)
-> m (StrictMaybe Word32
      -> StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Word32
   -> StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Word32)
-> m (StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Word32 -> m (StrictMaybe Word32)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Word32
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Word32)
-> m (StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Word32 -> m (StrictMaybe Word32)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Word32
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Word16)
-> m (StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Word16 -> m (StrictMaybe Word16)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Word16
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Coin)
-> m (StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Coin)
-> m (StrictMaybe EpochInterval
      -> StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe EpochInterval
   -> StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe EpochInterval)
-> m (StrictMaybe Natural
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m EpochInterval -> m (StrictMaybe EpochInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m EpochInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Natural
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Natural)
-> m (StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Natural -> m (StrictMaybe Natural)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Natural
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe NonNegativeInterval)
-> m (StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Coin
      -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m NonNegativeInterval -> m (StrictMaybe NonNegativeInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m NonNegativeInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Coin
   -> CommonProtocolParametersUpdate)
-> m (StrictMaybe UnitInterval)
-> m (StrictMaybe UnitInterval
      -> StrictMaybe Coin -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m UnitInterval -> m (StrictMaybe UnitInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m UnitInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe UnitInterval
   -> StrictMaybe Coin -> CommonProtocolParametersUpdate)
-> m (StrictMaybe UnitInterval)
-> m (StrictMaybe Coin -> CommonProtocolParametersUpdate)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m UnitInterval -> m (StrictMaybe UnitInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m UnitInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Coin -> CommonProtocolParametersUpdate)
-> m (StrictMaybe Coin) -> m CommonProtocolParametersUpdate
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genDeprecatedAfterMaryPParams :: MonadGen m => m (DeprecatedAfterMaryPParams era)
genDeprecatedAfterMaryPParams :: forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterMaryPParams era)
genDeprecatedAfterMaryPParams = StrictMaybe Coin -> DeprecatedAfterMaryPParams era
forall ledgerera.
StrictMaybe Coin -> DeprecatedAfterMaryPParams ledgerera
DeprecatedAfterMaryPParams (StrictMaybe Coin -> DeprecatedAfterMaryPParams era)
-> m (StrictMaybe Coin) -> m (DeprecatedAfterMaryPParams era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genDeprecatedAfterBabbagePParams :: MonadGen m => m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams :: forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams = StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams era
forall ledgerera.
StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams ledgerera
DeprecatedAfterBabbagePParams (StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams era)
-> m (StrictMaybe ProtVer) -> m (DeprecatedAfterBabbagePParams era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m ProtVer -> m (StrictMaybe ProtVer)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m ProtVer
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genShelleyToAlonzoPParams :: MonadGen m => m (ShelleyToAlonzoPParams era)
genShelleyToAlonzoPParams :: forall (m :: * -> *) era.
MonadGen m =>
m (ShelleyToAlonzoPParams era)
genShelleyToAlonzoPParams =
  StrictMaybe Nonce
-> StrictMaybe UnitInterval -> ShelleyToAlonzoPParams era
forall ledgerera.
StrictMaybe Nonce
-> StrictMaybe UnitInterval -> ShelleyToAlonzoPParams ledgerera
ShelleyToAlonzoPParams
    (StrictMaybe Nonce
 -> StrictMaybe UnitInterval -> ShelleyToAlonzoPParams era)
-> m (StrictMaybe Nonce)
-> m (StrictMaybe UnitInterval -> ShelleyToAlonzoPParams era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m Nonce -> m (StrictMaybe Nonce)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Nonce
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe UnitInterval -> ShelleyToAlonzoPParams era)
-> m (StrictMaybe UnitInterval) -> m (ShelleyToAlonzoPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m UnitInterval -> m (StrictMaybe UnitInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m UnitInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genAlonzoOnwardsPParams :: MonadGen m => m (AlonzoOnwardsPParams era)
genAlonzoOnwardsPParams :: forall (m :: * -> *) era.
MonadGen m =>
m (AlonzoOnwardsPParams era)
genAlonzoOnwardsPParams =
  StrictMaybe CostModels
-> StrictMaybe Prices
-> StrictMaybe ExUnits
-> StrictMaybe ExUnits
-> StrictMaybe Natural
-> StrictMaybe Natural
-> StrictMaybe Natural
-> AlonzoOnwardsPParams era
forall ledgerera.
StrictMaybe CostModels
-> StrictMaybe Prices
-> StrictMaybe ExUnits
-> StrictMaybe ExUnits
-> StrictMaybe Natural
-> StrictMaybe Natural
-> StrictMaybe Natural
-> AlonzoOnwardsPParams ledgerera
AlonzoOnwardsPParams
    (StrictMaybe CostModels
 -> StrictMaybe Prices
 -> StrictMaybe ExUnits
 -> StrictMaybe ExUnits
 -> StrictMaybe Natural
 -> StrictMaybe Natural
 -> StrictMaybe Natural
 -> AlonzoOnwardsPParams era)
-> m (StrictMaybe CostModels)
-> m (StrictMaybe Prices
      -> StrictMaybe ExUnits
      -> StrictMaybe ExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoOnwardsPParams era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CostModels -> m (StrictMaybe CostModels)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m CostModels
forall (m :: * -> *). MonadGen m => m CostModels
genCostModels
    m (StrictMaybe Prices
   -> StrictMaybe ExUnits
   -> StrictMaybe ExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoOnwardsPParams era)
-> m (StrictMaybe Prices)
-> m (StrictMaybe ExUnits
      -> StrictMaybe ExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoOnwardsPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Prices -> m (StrictMaybe Prices)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Prices
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe ExUnits
   -> StrictMaybe ExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoOnwardsPParams era)
-> m (StrictMaybe ExUnits)
-> m (StrictMaybe ExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoOnwardsPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m ExUnits -> m (StrictMaybe ExUnits)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m ExUnits
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe ExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoOnwardsPParams era)
-> m (StrictMaybe ExUnits)
-> m (StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoOnwardsPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m ExUnits -> m (StrictMaybe ExUnits)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m ExUnits
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoOnwardsPParams era)
-> m (StrictMaybe Natural)
-> m (StrictMaybe Natural
      -> StrictMaybe Natural -> AlonzoOnwardsPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Natural -> m (StrictMaybe Natural)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Natural
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Natural
   -> StrictMaybe Natural -> AlonzoOnwardsPParams era)
-> m (StrictMaybe Natural)
-> m (StrictMaybe Natural -> AlonzoOnwardsPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Natural -> m (StrictMaybe Natural)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Natural
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Natural -> AlonzoOnwardsPParams era)
-> m (StrictMaybe Natural) -> m (AlonzoOnwardsPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Natural -> m (StrictMaybe Natural)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Natural
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genIntroducedInBabbagePParams :: MonadGen m => m (IntroducedInBabbagePParams era)
genIntroducedInBabbagePParams :: forall (m :: * -> *) era.
MonadGen m =>
m (IntroducedInBabbagePParams era)
genIntroducedInBabbagePParams = StrictMaybe CoinPerByte -> IntroducedInBabbagePParams era
forall era.
StrictMaybe CoinPerByte -> IntroducedInBabbagePParams era
IntroducedInBabbagePParams (StrictMaybe CoinPerByte -> IntroducedInBabbagePParams era)
-> m (StrictMaybe CoinPerByte)
-> m (IntroducedInBabbagePParams era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CoinPerByte -> m (StrictMaybe CoinPerByte)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m CoinPerByte
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genIntroducedInConwayPParams :: MonadGen m => m (IntroducedInConwayPParams era)
genIntroducedInConwayPParams :: forall (m :: * -> *) era.
MonadGen m =>
m (IntroducedInConwayPParams era)
genIntroducedInConwayPParams =
  StrictMaybe PoolVotingThresholds
-> StrictMaybe DRepVotingThresholds
-> StrictMaybe Natural
-> StrictMaybe EpochInterval
-> StrictMaybe EpochInterval
-> StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe EpochInterval
-> StrictMaybe NonNegativeInterval
-> IntroducedInConwayPParams era
forall era.
StrictMaybe PoolVotingThresholds
-> StrictMaybe DRepVotingThresholds
-> StrictMaybe Natural
-> StrictMaybe EpochInterval
-> StrictMaybe EpochInterval
-> StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe EpochInterval
-> StrictMaybe NonNegativeInterval
-> IntroducedInConwayPParams era
IntroducedInConwayPParams
    (StrictMaybe PoolVotingThresholds
 -> StrictMaybe DRepVotingThresholds
 -> StrictMaybe Natural
 -> StrictMaybe EpochInterval
 -> StrictMaybe EpochInterval
 -> StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe EpochInterval
 -> StrictMaybe NonNegativeInterval
 -> IntroducedInConwayPParams era)
-> m (StrictMaybe PoolVotingThresholds)
-> m (StrictMaybe DRepVotingThresholds
      -> StrictMaybe Natural
      -> StrictMaybe EpochInterval
      -> StrictMaybe EpochInterval
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m PoolVotingThresholds -> m (StrictMaybe PoolVotingThresholds)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m PoolVotingThresholds
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe DRepVotingThresholds
   -> StrictMaybe Natural
   -> StrictMaybe EpochInterval
   -> StrictMaybe EpochInterval
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe DRepVotingThresholds)
-> m (StrictMaybe Natural
      -> StrictMaybe EpochInterval
      -> StrictMaybe EpochInterval
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m DRepVotingThresholds -> m (StrictMaybe DRepVotingThresholds)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m DRepVotingThresholds
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Natural
   -> StrictMaybe EpochInterval
   -> StrictMaybe EpochInterval
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe Natural)
-> m (StrictMaybe EpochInterval
      -> StrictMaybe EpochInterval
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Natural -> m (StrictMaybe Natural)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Natural
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe EpochInterval
   -> StrictMaybe EpochInterval
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe EpochInterval)
-> m (StrictMaybe EpochInterval
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m EpochInterval -> m (StrictMaybe EpochInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m EpochInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe EpochInterval
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe EpochInterval)
-> m (StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m EpochInterval -> m (StrictMaybe EpochInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m EpochInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe Coin)
-> m (StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe Coin)
-> m (StrictMaybe EpochInterval
      -> StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m Coin -> m (StrictMaybe Coin)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m Coin
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe EpochInterval
   -> StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe EpochInterval)
-> m (StrictMaybe NonNegativeInterval
      -> IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m EpochInterval -> m (StrictMaybe EpochInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m EpochInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary
    m (StrictMaybe NonNegativeInterval
   -> IntroducedInConwayPParams era)
-> m (StrictMaybe NonNegativeInterval)
-> m (IntroducedInConwayPParams era)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m NonNegativeInterval -> m (StrictMaybe NonNegativeInterval)
forall (m :: * -> *) a. MonadGen m => m a -> m (StrictMaybe a)
genStrictMaybe m NonNegativeInterval
forall a (m :: * -> *). (Arbitrary a, MonadGen m) => m a
Q.arbitrary

genShelleyEraBasedProtocolParametersUpdate
  :: MonadGen m => m (EraBasedProtocolParametersUpdate ShelleyEra)
genShelleyEraBasedProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m (EraBasedProtocolParametersUpdate ShelleyEra)
genShelleyEraBasedProtocolParametersUpdate =
  CommonProtocolParametersUpdate
-> DeprecatedAfterMaryPParams ShelleyEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> ShelleyToAlonzoPParams ShelleyEra
-> EraBasedProtocolParametersUpdate ShelleyEra
ShelleyEraBasedProtocolParametersUpdate
    (CommonProtocolParametersUpdate
 -> DeprecatedAfterMaryPParams ShelleyEra
 -> DeprecatedAfterBabbagePParams ShelleyEra
 -> ShelleyToAlonzoPParams ShelleyEra
 -> EraBasedProtocolParametersUpdate ShelleyEra)
-> m CommonProtocolParametersUpdate
-> m (DeprecatedAfterMaryPParams ShelleyEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> ShelleyToAlonzoPParams ShelleyEra
      -> EraBasedProtocolParametersUpdate ShelleyEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CommonProtocolParametersUpdate
forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate
    m (DeprecatedAfterMaryPParams ShelleyEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> ShelleyToAlonzoPParams ShelleyEra
   -> EraBasedProtocolParametersUpdate ShelleyEra)
-> m (DeprecatedAfterMaryPParams ShelleyEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra
      -> ShelleyToAlonzoPParams ShelleyEra
      -> EraBasedProtocolParametersUpdate ShelleyEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterMaryPParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterMaryPParams era)
genDeprecatedAfterMaryPParams
    m (DeprecatedAfterBabbagePParams ShelleyEra
   -> ShelleyToAlonzoPParams ShelleyEra
   -> EraBasedProtocolParametersUpdate ShelleyEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra)
-> m (ShelleyToAlonzoPParams ShelleyEra
      -> EraBasedProtocolParametersUpdate ShelleyEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterBabbagePParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams
    m (ShelleyToAlonzoPParams ShelleyEra
   -> EraBasedProtocolParametersUpdate ShelleyEra)
-> m (ShelleyToAlonzoPParams ShelleyEra)
-> m (EraBasedProtocolParametersUpdate ShelleyEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (ShelleyToAlonzoPParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (ShelleyToAlonzoPParams era)
genShelleyToAlonzoPParams

genAllegraEraBasedProtocolParametersUpdate
  :: MonadGen m => m (EraBasedProtocolParametersUpdate AllegraEra)
genAllegraEraBasedProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m (EraBasedProtocolParametersUpdate AllegraEra)
genAllegraEraBasedProtocolParametersUpdate =
  CommonProtocolParametersUpdate
-> DeprecatedAfterMaryPParams AllegraEra
-> ShelleyToAlonzoPParams AllegraEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> EraBasedProtocolParametersUpdate AllegraEra
AllegraEraBasedProtocolParametersUpdate
    (CommonProtocolParametersUpdate
 -> DeprecatedAfterMaryPParams AllegraEra
 -> ShelleyToAlonzoPParams AllegraEra
 -> DeprecatedAfterBabbagePParams ShelleyEra
 -> EraBasedProtocolParametersUpdate AllegraEra)
-> m CommonProtocolParametersUpdate
-> m (DeprecatedAfterMaryPParams AllegraEra
      -> ShelleyToAlonzoPParams AllegraEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate AllegraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CommonProtocolParametersUpdate
forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate
    m (DeprecatedAfterMaryPParams AllegraEra
   -> ShelleyToAlonzoPParams AllegraEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate AllegraEra)
-> m (DeprecatedAfterMaryPParams AllegraEra)
-> m (ShelleyToAlonzoPParams AllegraEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate AllegraEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterMaryPParams AllegraEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterMaryPParams era)
genDeprecatedAfterMaryPParams
    m (ShelleyToAlonzoPParams AllegraEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate AllegraEra)
-> m (ShelleyToAlonzoPParams AllegraEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate AllegraEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (ShelleyToAlonzoPParams AllegraEra)
forall (m :: * -> *) era.
MonadGen m =>
m (ShelleyToAlonzoPParams era)
genShelleyToAlonzoPParams
    m (DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate AllegraEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra)
-> m (EraBasedProtocolParametersUpdate AllegraEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterBabbagePParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams

genMaryEraBasedProtocolParametersUpdate
  :: MonadGen m => m (EraBasedProtocolParametersUpdate MaryEra)
genMaryEraBasedProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m (EraBasedProtocolParametersUpdate MaryEra)
genMaryEraBasedProtocolParametersUpdate =
  CommonProtocolParametersUpdate
-> DeprecatedAfterMaryPParams MaryEra
-> ShelleyToAlonzoPParams MaryEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> EraBasedProtocolParametersUpdate MaryEra
MaryEraBasedProtocolParametersUpdate
    (CommonProtocolParametersUpdate
 -> DeprecatedAfterMaryPParams MaryEra
 -> ShelleyToAlonzoPParams MaryEra
 -> DeprecatedAfterBabbagePParams ShelleyEra
 -> EraBasedProtocolParametersUpdate MaryEra)
-> m CommonProtocolParametersUpdate
-> m (DeprecatedAfterMaryPParams MaryEra
      -> ShelleyToAlonzoPParams MaryEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate MaryEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CommonProtocolParametersUpdate
forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate
    m (DeprecatedAfterMaryPParams MaryEra
   -> ShelleyToAlonzoPParams MaryEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate MaryEra)
-> m (DeprecatedAfterMaryPParams MaryEra)
-> m (ShelleyToAlonzoPParams MaryEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate MaryEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterMaryPParams MaryEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterMaryPParams era)
genDeprecatedAfterMaryPParams
    m (ShelleyToAlonzoPParams MaryEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate MaryEra)
-> m (ShelleyToAlonzoPParams MaryEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate MaryEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (ShelleyToAlonzoPParams MaryEra)
forall (m :: * -> *) era.
MonadGen m =>
m (ShelleyToAlonzoPParams era)
genShelleyToAlonzoPParams
    m (DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate MaryEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra)
-> m (EraBasedProtocolParametersUpdate MaryEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterBabbagePParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams

genAlonzoEraBasedProtocolParametersUpdate
  :: MonadGen m => m (EraBasedProtocolParametersUpdate AlonzoEra)
genAlonzoEraBasedProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m (EraBasedProtocolParametersUpdate AlonzoEra)
genAlonzoEraBasedProtocolParametersUpdate =
  CommonProtocolParametersUpdate
-> ShelleyToAlonzoPParams AlonzoEra
-> AlonzoOnwardsPParams AlonzoEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> EraBasedProtocolParametersUpdate AlonzoEra
AlonzoEraBasedProtocolParametersUpdate
    (CommonProtocolParametersUpdate
 -> ShelleyToAlonzoPParams AlonzoEra
 -> AlonzoOnwardsPParams AlonzoEra
 -> DeprecatedAfterBabbagePParams ShelleyEra
 -> EraBasedProtocolParametersUpdate AlonzoEra)
-> m CommonProtocolParametersUpdate
-> m (ShelleyToAlonzoPParams AlonzoEra
      -> AlonzoOnwardsPParams AlonzoEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate AlonzoEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CommonProtocolParametersUpdate
forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate
    m (ShelleyToAlonzoPParams AlonzoEra
   -> AlonzoOnwardsPParams AlonzoEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate AlonzoEra)
-> m (ShelleyToAlonzoPParams AlonzoEra)
-> m (AlonzoOnwardsPParams AlonzoEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate AlonzoEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (ShelleyToAlonzoPParams AlonzoEra)
forall (m :: * -> *) era.
MonadGen m =>
m (ShelleyToAlonzoPParams era)
genShelleyToAlonzoPParams
    m (AlonzoOnwardsPParams AlonzoEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate AlonzoEra)
-> m (AlonzoOnwardsPParams AlonzoEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra
      -> EraBasedProtocolParametersUpdate AlonzoEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (AlonzoOnwardsPParams AlonzoEra)
forall (m :: * -> *) era.
MonadGen m =>
m (AlonzoOnwardsPParams era)
genAlonzoOnwardsPParams
    m (DeprecatedAfterBabbagePParams ShelleyEra
   -> EraBasedProtocolParametersUpdate AlonzoEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra)
-> m (EraBasedProtocolParametersUpdate AlonzoEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterBabbagePParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams

genBabbageEraBasedProtocolParametersUpdate
  :: MonadGen m => m (EraBasedProtocolParametersUpdate BabbageEra)
genBabbageEraBasedProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m (EraBasedProtocolParametersUpdate BabbageEra)
genBabbageEraBasedProtocolParametersUpdate =
  CommonProtocolParametersUpdate
-> AlonzoOnwardsPParams BabbageEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> IntroducedInBabbagePParams BabbageEra
-> EraBasedProtocolParametersUpdate BabbageEra
BabbageEraBasedProtocolParametersUpdate
    (CommonProtocolParametersUpdate
 -> AlonzoOnwardsPParams BabbageEra
 -> DeprecatedAfterBabbagePParams ShelleyEra
 -> IntroducedInBabbagePParams BabbageEra
 -> EraBasedProtocolParametersUpdate BabbageEra)
-> m CommonProtocolParametersUpdate
-> m (AlonzoOnwardsPParams BabbageEra
      -> DeprecatedAfterBabbagePParams ShelleyEra
      -> IntroducedInBabbagePParams BabbageEra
      -> EraBasedProtocolParametersUpdate BabbageEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CommonProtocolParametersUpdate
forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate
    m (AlonzoOnwardsPParams BabbageEra
   -> DeprecatedAfterBabbagePParams ShelleyEra
   -> IntroducedInBabbagePParams BabbageEra
   -> EraBasedProtocolParametersUpdate BabbageEra)
-> m (AlonzoOnwardsPParams BabbageEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra
      -> IntroducedInBabbagePParams BabbageEra
      -> EraBasedProtocolParametersUpdate BabbageEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (AlonzoOnwardsPParams BabbageEra)
forall (m :: * -> *) era.
MonadGen m =>
m (AlonzoOnwardsPParams era)
genAlonzoOnwardsPParams
    m (DeprecatedAfterBabbagePParams ShelleyEra
   -> IntroducedInBabbagePParams BabbageEra
   -> EraBasedProtocolParametersUpdate BabbageEra)
-> m (DeprecatedAfterBabbagePParams ShelleyEra)
-> m (IntroducedInBabbagePParams BabbageEra
      -> EraBasedProtocolParametersUpdate BabbageEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (DeprecatedAfterBabbagePParams ShelleyEra)
forall (m :: * -> *) era.
MonadGen m =>
m (DeprecatedAfterBabbagePParams era)
genDeprecatedAfterBabbagePParams
    m (IntroducedInBabbagePParams BabbageEra
   -> EraBasedProtocolParametersUpdate BabbageEra)
-> m (IntroducedInBabbagePParams BabbageEra)
-> m (EraBasedProtocolParametersUpdate BabbageEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (IntroducedInBabbagePParams BabbageEra)
forall (m :: * -> *) era.
MonadGen m =>
m (IntroducedInBabbagePParams era)
genIntroducedInBabbagePParams

genConwayEraBasedProtocolParametersUpdate
  :: MonadGen m => m (EraBasedProtocolParametersUpdate ConwayEra)
genConwayEraBasedProtocolParametersUpdate :: forall (m :: * -> *).
MonadGen m =>
m (EraBasedProtocolParametersUpdate ConwayEra)
genConwayEraBasedProtocolParametersUpdate =
  CommonProtocolParametersUpdate
-> AlonzoOnwardsPParams ConwayEra
-> IntroducedInBabbagePParams ConwayEra
-> IntroducedInConwayPParams (ShelleyLedgerEra ConwayEra)
-> EraBasedProtocolParametersUpdate ConwayEra
CommonProtocolParametersUpdate
-> AlonzoOnwardsPParams ConwayEra
-> IntroducedInBabbagePParams ConwayEra
-> IntroducedInConwayPParams StandardConway
-> EraBasedProtocolParametersUpdate ConwayEra
ConwayEraBasedProtocolParametersUpdate
    (CommonProtocolParametersUpdate
 -> AlonzoOnwardsPParams ConwayEra
 -> IntroducedInBabbagePParams ConwayEra
 -> IntroducedInConwayPParams StandardConway
 -> EraBasedProtocolParametersUpdate ConwayEra)
-> m CommonProtocolParametersUpdate
-> m (AlonzoOnwardsPParams ConwayEra
      -> IntroducedInBabbagePParams ConwayEra
      -> IntroducedInConwayPParams StandardConway
      -> EraBasedProtocolParametersUpdate ConwayEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> m CommonProtocolParametersUpdate
forall (m :: * -> *).
MonadGen m =>
m CommonProtocolParametersUpdate
genCommonProtocolParametersUpdate
    m (AlonzoOnwardsPParams ConwayEra
   -> IntroducedInBabbagePParams ConwayEra
   -> IntroducedInConwayPParams StandardConway
   -> EraBasedProtocolParametersUpdate ConwayEra)
-> m (AlonzoOnwardsPParams ConwayEra)
-> m (IntroducedInBabbagePParams ConwayEra
      -> IntroducedInConwayPParams StandardConway
      -> EraBasedProtocolParametersUpdate ConwayEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (AlonzoOnwardsPParams ConwayEra)
forall (m :: * -> *) era.
MonadGen m =>
m (AlonzoOnwardsPParams era)
genAlonzoOnwardsPParams
    m (IntroducedInBabbagePParams ConwayEra
   -> IntroducedInConwayPParams StandardConway
   -> EraBasedProtocolParametersUpdate ConwayEra)
-> m (IntroducedInBabbagePParams ConwayEra)
-> m (IntroducedInConwayPParams StandardConway
      -> EraBasedProtocolParametersUpdate ConwayEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (IntroducedInBabbagePParams ConwayEra)
forall (m :: * -> *) era.
MonadGen m =>
m (IntroducedInBabbagePParams era)
genIntroducedInBabbagePParams
    m (IntroducedInConwayPParams StandardConway
   -> EraBasedProtocolParametersUpdate ConwayEra)
-> m (IntroducedInConwayPParams StandardConway)
-> m (EraBasedProtocolParametersUpdate ConwayEra)
forall a b. m (a -> b) -> m a -> m b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m (IntroducedInConwayPParams StandardConway)
forall (m :: * -> *) era.
MonadGen m =>
m (IntroducedInConwayPParams era)
genIntroducedInConwayPParams