{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Gen.Cardano.Api.Orphans (obtainArbitraryConstraints) where

import Cardano.Api hiding (txIns)
import Cardano.Api.Ledger qualified as L

import Cardano.Crypto.Hash.Class (hashWith)
import Cardano.Crypto.Hash.Class qualified as Crypto
import Cardano.Ledger.Address ()
import Cardano.Ledger.Alonzo.PParams qualified as Ledger
import Cardano.Ledger.Alonzo.Scripts qualified as Alonzo
import Cardano.Ledger.Babbage.PParams qualified as Ledger
import Cardano.Ledger.BaseTypes (textToDns, textToUrl)
import Cardano.Ledger.BaseTypes qualified as Ledger
import Cardano.Ledger.Coin qualified as L
import Cardano.Ledger.Conway.Governance qualified as Ledger
import Cardano.Ledger.Conway.PParams qualified as Ledger
import Cardano.Ledger.Core qualified as Ledger
import Cardano.Ledger.HKD (HKD, NoUpdate (..))
import Cardano.Ledger.Keys (VRFVerKeyHash (..))
import Cardano.Ledger.Mary.Value qualified as ConcreteValue
import Cardano.Ledger.Mary.Value qualified as Ledger
import Cardano.Ledger.Plutus.CostModels qualified as Ledger
import Cardano.Ledger.Plutus.Language qualified as L
import Cardano.Ledger.Plutus.Language qualified as Ledger
import Cardano.Ledger.Shelley.PParams (ShelleyPParams)

import Control.Monad (replicateM)
import Control.Monad.Trans.Fail.String (errorFail)
import Data.ByteString.Char8 qualified as C8
import Data.ByteString.Short qualified as SBS
import Data.Foldable qualified as F
import Data.Functor.Identity
import Data.IP (IPv4, IPv6, toIPv4w, toIPv6w)
import Data.Int (Int64)
import Data.Map.Strict qualified as Map
import Data.Ratio
import Data.Sequence.Strict qualified as SSeq
import Data.Set (Set)
import Data.Set qualified as Set
import Data.String (IsString (fromString))
import Data.Text qualified as T
import Data.Word
import GHC.Stack (HasCallStack)
import System.Random.Stateful
  ( StatefulGen (..)
  , runStateGen_
  )

import Test.QuickCheck
  ( Arbitrary (..)
  , Gen
  , NonNegative (..)
  , Positive (..)
  , arbitraryBoundedEnum
  , choose
  , chooseInt
  , elements
  , frequency
  , genericShrink
  , getNonNegative
  , liftArbitrary
  , listOf
  , listOf1
  , oneof
  , scale
  , shrinkBoundedEnum
  , sublistOf
  , vectorOf
  )
import Test.QuickCheck.Gen (Gen (MkGen))
import Test.QuickCheck.Instances.Natural ()

import Generic.Random (genericArbitraryU)

-- | Maximum decimal precision for Word64-based rational types.
maxDecimalsWord64 :: Int
maxDecimalsWord64 :: Int
maxDecimalsWord64 = Int
19

-------------------------------------------------------------------------------

-- * Basic Type Instances

-------------------------------------------------------------------------------

instance Arbitrary Ledger.EpochInterval where
  arbitrary :: Gen EpochInterval
arbitrary = Word32 -> EpochInterval
Ledger.EpochInterval (Word32 -> EpochInterval) -> Gen Word32 -> Gen EpochInterval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary Ledger.NonNegativeInterval where
  arbitrary :: Gen NonNegativeInterval
arbitrary = do
    p <- (Int, Int) -> Gen Int
chooseInt (Int
0, Int
maxDecimalsWord64)
    let y = Word64
10 Word64 -> Int -> Word64
forall a b. (Num a, Integral b) => a -> b -> a
^ Int
p :: Word64
    x <- choose (0, 10 ^ maxDecimalsWord64)
    pure $ unsafeBoundedRational $ Ledger.promoteRatio (x % y)

instance Arbitrary Ledger.UnitInterval where
  arbitrary :: Gen UnitInterval
arbitrary = do
    p <- (Int, Int) -> Gen Int
chooseInt (Int
0, Int
maxDecimalsWord64)
    let y = Word64
10 Word64 -> Int -> Word64
forall a b. (Num a, Integral b) => a -> b -> a
^ Int
p :: Word64
    x <- choose (0, y)
    pure $ unsafeBoundedRational $ Ledger.promoteRatio (x % y)

instance Arbitrary Ledger.Nonce where
  arbitrary :: Gen Nonce
arbitrary =
    [Gen Nonce] -> Gen Nonce
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Nonce -> Gen Nonce
forall a. a -> Gen a
forall (m :: * -> *) a. Monad m => a -> m a
return Nonce
Ledger.NeutralNonce
      , Word64 -> Nonce
Ledger.mkNonceFromNumber (Word64 -> Nonce) -> Gen Word64 -> Gen Nonce
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Word64
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance Arbitrary Ledger.Version where
  arbitrary :: Gen Version
arbitrary = HasCallStack => Version -> Version -> Gen Version
Version -> Version -> Gen Version
genVersion Version
forall a. Bounded a => a
minBound Version
forall a. Bounded a => a
maxBound

genVersion :: HasCallStack => Ledger.Version -> Ledger.Version -> Gen Ledger.Version
genVersion :: HasCallStack => Version -> Version -> Gen Version
genVersion Version
minVersion Version
maxVersion =
  Word64 -> Word64 -> Gen Version
genVersion64 (Version -> Word64
Ledger.getVersion64 Version
minVersion) (Version -> Word64
Ledger.getVersion64 Version
maxVersion)
 where
  genVersion64 :: Word64 -> Word64 -> Gen Version
genVersion64 Word64
minVersion64 Word64
maxVersion64 = do
    v64 <- (Word64, Word64) -> Gen Word64
forall a. Random a => (a, a) -> Gen a
choose (Word64
minVersion64, Word64
maxVersion64)
    case Ledger.mkVersion64 v64 of
      Maybe Version
Nothing -> [Char] -> Gen Version
forall a. HasCallStack => [Char] -> a
error ([Char] -> Gen Version) -> [Char] -> Gen Version
forall a b. (a -> b) -> a -> b
$ [Char]
"Impossible: Invalid version generated: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Word64 -> [Char]
forall a. Show a => a -> [Char]
show Word64
v64
      Just Version
v -> Version -> Gen Version
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Version
v

instance Arbitrary Ledger.ProtVer where
  arbitrary :: Gen ProtVer
arbitrary = Version -> Natural -> ProtVer
Ledger.ProtVer (Version -> Natural -> ProtVer)
-> Gen Version -> Gen (Natural -> ProtVer)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Version
forall a. Arbitrary a => Gen a
arbitrary Gen (Natural -> ProtVer) -> Gen Natural -> Gen ProtVer
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary Coin where
  arbitrary :: Gen Coin
arbitrary = Integer -> Coin
Coin (Integer -> Coin) -> Gen Integer -> Gen Coin
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Gen Integer] -> Gen Integer
forall a. HasCallStack => [Gen a] -> Gen a
oneof [(Integer, Integer) -> Gen Integer
forall a. Random a => (a, a) -> Gen a
choose (Integer
0, Integer
1000000), NonNegative Integer -> Integer
forall a. NonNegative a -> a
getNonNegative (NonNegative Integer -> Integer)
-> Gen (NonNegative Integer) -> Gen Integer
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (NonNegative Integer)
forall a. Arbitrary a => Gen a
arbitrary]
  shrink :: Coin -> [Coin]
shrink (Coin Integer
i) = Integer -> Coin
Coin (Integer -> Coin) -> [Integer] -> [Coin]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> [Integer]
forall a. Arbitrary a => a -> [a]
shrink Integer
i

deriving instance Arbitrary L.CoinPerByte

deriving instance Arbitrary L.CoinPerWord

deriving instance Arbitrary Ledger.OrdExUnits

deriving instance Arbitrary EpochNo

-------------------------------------------------------------------------------

-- * Hash & Crypto Instances

-------------------------------------------------------------------------------

instance Arbitrary Ledger.ScriptHash where
  arbitrary :: Gen ScriptHash
arbitrary = Hash ADDRHASH EraIndependentScript -> ScriptHash
Ledger.ScriptHash (Hash ADDRHASH EraIndependentScript -> ScriptHash)
-> Gen (Hash ADDRHASH EraIndependentScript) -> Gen ScriptHash
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Hash ADDRHASH EraIndependentScript)
forall h a. HashAlgorithm h => Gen (Hash h a)
genHash

instance Arbitrary (L.KeyHash r) where
  arbitrary :: Gen (KeyHash r)
arbitrary = Hash ADDRHASH (VerKeyDSIGN DSIGN) -> KeyHash r
forall (r :: KeyRole).
Hash ADDRHASH (VerKeyDSIGN DSIGN) -> KeyHash r
L.KeyHash (Hash ADDRHASH (VerKeyDSIGN DSIGN) -> KeyHash r)
-> Gen (Hash ADDRHASH (VerKeyDSIGN DSIGN)) -> Gen (KeyHash r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Hash ADDRHASH (VerKeyDSIGN DSIGN))
forall h a. HashAlgorithm h => Gen (Hash h a)
genHash

instance Arbitrary (VRFVerKeyHash r) where
  arbitrary :: Gen (VRFVerKeyHash r)
arbitrary = Hash HASH KeyRoleVRF -> VRFVerKeyHash r
forall (r :: KeyRoleVRF). Hash HASH KeyRoleVRF -> VRFVerKeyHash r
VRFVerKeyHash (Hash HASH KeyRoleVRF -> VRFVerKeyHash r)
-> Gen (Hash HASH KeyRoleVRF) -> Gen (VRFVerKeyHash r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Hash HASH KeyRoleVRF)
forall h a. HashAlgorithm h => Gen (Hash h a)
genHash

instance Arbitrary (L.SafeHash i) where
  arbitrary :: Gen (SafeHash i)
arbitrary = Hash HASH i -> SafeHash i
forall i. Hash HASH i -> SafeHash i
L.unsafeMakeSafeHash (Hash HASH i -> SafeHash i)
-> Gen (Hash HASH i) -> Gen (SafeHash i)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Hash HASH i)
forall h a. HashAlgorithm h => Gen (Hash h a)
genHash

-- | Generate a hash of fixed size using the specified hash algorithm.
genHash :: forall h a. Ledger.HashAlgorithm h => Gen (Crypto.Hash h a)
genHash :: forall h a. HashAlgorithm h => Gen (Hash h a)
genHash = ShortByteString -> Hash h a
forall h a. HashAlgorithm h => ShortByteString -> Hash h a
Crypto.UnsafeHash (ShortByteString -> Hash h a)
-> Gen ShortByteString -> Gen (Hash h a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> Gen ShortByteString
genShortByteString (Word -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Proxy h -> Word
forall h (proxy :: * -> *). HashAlgorithm h => proxy h -> Word
Crypto.sizeHash (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @h)))

-- | Generate a short byte string of given length.
genShortByteString :: Int -> Gen SBS.ShortByteString
genShortByteString :: Int -> Gen ShortByteString
genShortByteString Int
n = Int -> QC -> Gen ShortByteString
forall g (m :: * -> *).
StatefulGen g m =>
Int -> g -> m ShortByteString
uniformShortByteString (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n) QC
QC

-- | Pseudo random generator compatible with QuickCheck's stateful interface.
data QC = QC

instance StatefulGen QC Gen where
  uniformWord32 :: QC -> Gen Word32
uniformWord32 QC
QC = (QCGen -> Int -> Word32) -> Gen Word32
forall a. (QCGen -> Int -> a) -> Gen a
MkGen (\QCGen
r Int
_n -> QCGen -> (StateGenM QCGen -> State QCGen Word32) -> Word32
forall g a. RandomGen g => g -> (StateGenM g -> State g a) -> a
runStateGen_ QCGen
r StateGenM QCGen -> State QCGen Word32
forall g (m :: * -> *). StatefulGen g m => g -> m Word32
uniformWord32)
  {-# INLINE uniformWord32 #-}
  uniformWord64 :: QC -> Gen Word64
uniformWord64 QC
QC = (QCGen -> Int -> Word64) -> Gen Word64
forall a. (QCGen -> Int -> a) -> Gen a
MkGen (\QCGen
r Int
_n -> QCGen -> (StateGenM QCGen -> State QCGen Word64) -> Word64
forall g a. RandomGen g => g -> (StateGenM g -> State g a) -> a
runStateGen_ QCGen
r StateGenM QCGen -> State QCGen Word64
forall g (m :: * -> *). StatefulGen g m => g -> m Word64
uniformWord64)
  {-# INLINE uniformWord64 #-}
  uniformShortByteString :: Int -> QC -> Gen ShortByteString
uniformShortByteString Int
k QC
QC =
    (QCGen -> Int -> ShortByteString) -> Gen ShortByteString
forall a. (QCGen -> Int -> a) -> Gen a
MkGen (\QCGen
r Int
_n -> QCGen
-> (StateGenM QCGen -> State QCGen ShortByteString)
-> ShortByteString
forall g a. RandomGen g => g -> (StateGenM g -> State g a) -> a
runStateGen_ QCGen
r (Int -> StateGenM QCGen -> State QCGen ShortByteString
forall g (m :: * -> *).
StatefulGen g m =>
Int -> g -> m ShortByteString
uniformShortByteString Int
k))
  {-# INLINE uniformShortByteString #-}

-------------------------------------------------------------------------------

-- * Container & Wrapper Types

-------------------------------------------------------------------------------

instance Arbitrary e => Arbitrary (Ledger.StrictMaybe e) where
  arbitrary :: Gen (StrictMaybe e)
arbitrary = Maybe e -> StrictMaybe e
forall a. Maybe a -> StrictMaybe a
Ledger.maybeToStrictMaybe (Maybe e -> StrictMaybe e) -> Gen (Maybe e) -> Gen (StrictMaybe e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Maybe e)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: StrictMaybe e -> [StrictMaybe e]
shrink = (Maybe e -> StrictMaybe e) -> [Maybe e] -> [StrictMaybe e]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Maybe e -> StrictMaybe e
forall a. Maybe a -> StrictMaybe a
Ledger.maybeToStrictMaybe ([Maybe e] -> [StrictMaybe e])
-> (StrictMaybe e -> [Maybe e]) -> StrictMaybe e -> [StrictMaybe e]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe e -> [Maybe e]
forall a. Arbitrary a => a -> [a]
shrink (Maybe e -> [Maybe e])
-> (StrictMaybe e -> Maybe e) -> StrictMaybe e -> [Maybe e]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictMaybe e -> Maybe e
forall a. StrictMaybe a -> Maybe a
Ledger.strictMaybeToMaybe

instance Arbitrary e => Arbitrary (SSeq.StrictSeq e) where
  arbitrary :: Gen (StrictSeq e)
arbitrary = [e] -> StrictSeq e
forall a. [a] -> StrictSeq a
SSeq.fromList ([e] -> StrictSeq e) -> Gen [e] -> Gen (StrictSeq e)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [e]
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: StrictSeq e -> [StrictSeq e]
shrink = ([e] -> StrictSeq e) -> [[e]] -> [StrictSeq e]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [e] -> StrictSeq e
forall a. [a] -> StrictSeq a
SSeq.fromList ([[e]] -> [StrictSeq e])
-> (StrictSeq e -> [[e]]) -> StrictSeq e -> [StrictSeq e]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [e] -> [[e]]
forall a. Arbitrary a => a -> [a]
shrink ([e] -> [[e]]) -> (StrictSeq e -> [e]) -> StrictSeq e -> [[e]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictSeq e -> [e]
forall a. StrictSeq a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
F.toList

instance Arbitrary (HKD f a) => Arbitrary (Ledger.THKD t f a) where
  arbitrary :: Gen (THKD t f a)
arbitrary = HKD f a -> THKD t f a
forall (t :: PPGroups) (f :: * -> *) a. HKD f a -> THKD t f a
Ledger.THKD (HKD f a -> THKD t f a) -> Gen (HKD f a) -> Gen (THKD t f a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (HKD f a)
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary (NoUpdate a) where
  arbitrary :: Gen (NoUpdate a)
arbitrary = NoUpdate a -> Gen (NoUpdate a)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure NoUpdate a
forall a. NoUpdate a
NoUpdate

-------------------------------------------------------------------------------

-- * Core Ledger Types

-------------------------------------------------------------------------------

instance Arbitrary MIRPot where
  arbitrary :: Gen MIRPot
arbitrary = Gen MIRPot
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary MIRTarget where
  arbitrary :: Gen MIRTarget
arbitrary =
    [Gen MIRTarget] -> Gen MIRTarget
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Map (Credential 'Staking) DeltaCoin -> MIRTarget
L.StakeAddressesMIR (Map (Credential 'Staking) DeltaCoin -> MIRTarget)
-> Gen (Map (Credential 'Staking) DeltaCoin) -> Gen MIRTarget
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Map (Credential 'Staking) DeltaCoin)
forall a. Arbitrary a => Gen a
arbitrary
      , Coin -> MIRTarget
L.SendToOppositePotMIR (Coin -> MIRTarget) -> Gen Coin -> Gen MIRTarget
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance Arbitrary L.DeltaCoin where
  arbitrary :: Gen DeltaCoin
arbitrary = Integer -> DeltaCoin
L.DeltaCoin (Integer -> DeltaCoin) -> Gen Integer -> Gen DeltaCoin
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
1000000, Integer
1000000)
  shrink :: DeltaCoin -> [DeltaCoin]
shrink (L.DeltaCoin Integer
i) = Integer -> DeltaCoin
L.DeltaCoin (Integer -> DeltaCoin) -> [Integer] -> [DeltaCoin]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> [Integer]
forall a. Arbitrary a => a -> [a]
shrink Integer
i

instance Arbitrary L.Vote where
  arbitrary :: Gen Vote
arbitrary = Gen Vote
forall a. (Bounded a, Enum a) => Gen a
arbitraryBoundedEnum
  shrink :: Vote -> [Vote]
shrink = Vote -> [Vote]
forall a. (Bounded a, Enum a, Eq a) => a -> [a]
shrinkBoundedEnum

deriving instance Arbitrary L.GovActionIx

instance Arbitrary L.TxId where
  arbitrary :: Gen TxId
arbitrary = SafeHash EraIndependentTxBody -> TxId
L.TxId (SafeHash EraIndependentTxBody -> TxId)
-> Gen (SafeHash EraIndependentTxBody) -> Gen TxId
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (SafeHash EraIndependentTxBody)
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary L.RewardAccount where
  arbitrary :: Gen RewardAccount
arbitrary = Network -> Credential 'Staking -> RewardAccount
L.RewardAccount (Network -> Credential 'Staking -> RewardAccount)
-> Gen Network -> Gen (Credential 'Staking -> RewardAccount)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Network
forall a. Arbitrary a => Gen a
arbitrary Gen (Credential 'Staking -> RewardAccount)
-> Gen (Credential 'Staking) -> Gen RewardAccount
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Credential 'Staking)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: RewardAccount -> [RewardAccount]
shrink = RewardAccount -> [RewardAccount]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Arbitrary (L.Credential r) where
  arbitrary :: Gen (Credential r)
arbitrary =
    [Gen (Credential r)] -> Gen (Credential r)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ ScriptHash -> Credential r
forall (kr :: KeyRole). ScriptHash -> Credential kr
L.ScriptHashObj (ScriptHash -> Credential r)
-> Gen ScriptHash -> Gen (Credential r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen ScriptHash
forall a. Arbitrary a => Gen a
arbitrary
      , KeyHash r -> Credential r
forall (kr :: KeyRole). KeyHash kr -> Credential kr
L.KeyHashObj (KeyHash r -> Credential r)
-> Gen (KeyHash r) -> Gen (Credential r)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (KeyHash r)
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance Arbitrary L.Network where
  arbitrary :: Gen Network
arbitrary = Gen Network
forall a. (Bounded a, Enum a) => Gen a
arbitraryBoundedEnum

instance Arbitrary Ledger.Anchor where
  arbitrary :: Gen Anchor
arbitrary = Url -> SafeHash AnchorData -> Anchor
L.Anchor (Url -> SafeHash AnchorData -> Anchor)
-> Gen Url -> Gen (SafeHash AnchorData -> Anchor)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Url
forall a. Arbitrary a => Gen a
arbitrary Gen (SafeHash AnchorData -> Anchor)
-> Gen (SafeHash AnchorData) -> Gen Anchor
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (SafeHash AnchorData)
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary L.Url where
  arbitrary :: Gen Url
arbitrary = do
    let prefix :: Text
prefix = Text
"https://"
    n <- (Int, Int) -> Gen Int
chooseInt (Int
5, Int
64 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Text -> Int
T.length Text
prefix)
    txt <- genDnsName n
    pure $! guardLength n txt $ textToUrl 64 (prefix <> txt)

genDnsName :: Int -> Gen T.Text
genDnsName :: Int -> Gen Text
genDnsName Int
n = do
  str <- Int -> Gen Char -> Gen [Char]
forall a. Int -> Gen a -> Gen [a]
vectorOf (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
4) (Gen Char -> Gen [Char]) -> Gen Char -> Gen [Char]
forall a b. (a -> b) -> a -> b
$ [Char] -> Gen Char
forall a. HasCallStack => [a] -> Gen a
elements ([Char] -> Gen Char) -> [Char] -> Gen Char
forall a b. (a -> b) -> a -> b
$ Char
'.' Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
: Char
'-' Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
: [Char
'A' .. Char
'Z'] [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char
'a' .. Char
'z'] [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char
'0' .. Char
'9']
  pure $ T.pack str <> ".com"

guardLength :: HasCallStack => Int -> T.Text -> Maybe a -> a
guardLength :: forall a. HasCallStack => Int -> Text -> Maybe a -> a
guardLength Int
n Text
txt = \case
  Maybe a
Nothing -> [Char] -> a
forall a. HasCallStack => [Char] -> a
error ([Char] -> a) -> [Char] -> a
forall a b. (a -> b) -> a -> b
$ [Char]
"Unexpected! Generated length: (" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
n [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
") " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Text -> [Char]
forall a. Show a => a -> [Char]
show Text
txt
  Just a
t -> a
t

instance Arbitrary L.PoolParams where
  arbitrary :: Gen PoolParams
arbitrary =
    KeyHash 'StakePool
-> VRFVerKeyHash 'StakePoolVRF
-> Coin
-> Coin
-> UnitInterval
-> RewardAccount
-> Set (KeyHash 'Staking)
-> StrictSeq StakePoolRelay
-> StrictMaybe PoolMetadata
-> PoolParams
L.PoolParams
      (KeyHash 'StakePool
 -> VRFVerKeyHash 'StakePoolVRF
 -> Coin
 -> Coin
 -> UnitInterval
 -> RewardAccount
 -> Set (KeyHash 'Staking)
 -> StrictSeq StakePoolRelay
 -> StrictMaybe PoolMetadata
 -> PoolParams)
-> Gen (KeyHash 'StakePool)
-> Gen
     (VRFVerKeyHash 'StakePoolVRF
      -> Coin
      -> Coin
      -> UnitInterval
      -> RewardAccount
      -> Set (KeyHash 'Staking)
      -> StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata
      -> PoolParams)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (KeyHash 'StakePool)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (VRFVerKeyHash 'StakePoolVRF
   -> Coin
   -> Coin
   -> UnitInterval
   -> RewardAccount
   -> Set (KeyHash 'Staking)
   -> StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata
   -> PoolParams)
-> Gen (VRFVerKeyHash 'StakePoolVRF)
-> Gen
     (Coin
      -> Coin
      -> UnitInterval
      -> RewardAccount
      -> Set (KeyHash 'Staking)
      -> StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata
      -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (VRFVerKeyHash 'StakePoolVRF)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Coin
   -> UnitInterval
   -> RewardAccount
   -> Set (KeyHash 'Staking)
   -> StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata
   -> PoolParams)
-> Gen Coin
-> Gen
     (Coin
      -> UnitInterval
      -> RewardAccount
      -> Set (KeyHash 'Staking)
      -> StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata
      -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> UnitInterval
   -> RewardAccount
   -> Set (KeyHash 'Staking)
   -> StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata
   -> PoolParams)
-> Gen Coin
-> Gen
     (UnitInterval
      -> RewardAccount
      -> Set (KeyHash 'Staking)
      -> StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata
      -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> RewardAccount
   -> Set (KeyHash 'Staking)
   -> StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata
   -> PoolParams)
-> Gen UnitInterval
-> Gen
     (RewardAccount
      -> Set (KeyHash 'Staking)
      -> StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata
      -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (RewardAccount
   -> Set (KeyHash 'Staking)
   -> StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata
   -> PoolParams)
-> Gen RewardAccount
-> Gen
     (Set (KeyHash 'Staking)
      -> StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata
      -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen RewardAccount
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set (KeyHash 'Staking)
   -> StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata
   -> PoolParams)
-> Gen (Set (KeyHash 'Staking))
-> Gen
     (StrictSeq StakePoolRelay
      -> StrictMaybe PoolMetadata -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Set (KeyHash 'Staking))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictSeq StakePoolRelay
   -> StrictMaybe PoolMetadata -> PoolParams)
-> Gen (StrictSeq StakePoolRelay)
-> Gen (StrictMaybe PoolMetadata -> PoolParams)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictSeq StakePoolRelay)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (StrictMaybe PoolMetadata -> PoolParams)
-> Gen (StrictMaybe PoolMetadata) -> Gen PoolParams
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe PoolMetadata)
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary L.StakePoolRelay where
  arbitrary :: Gen StakePoolRelay
arbitrary = Gen StakePoolRelay
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU
  shrink :: StakePoolRelay -> [StakePoolRelay]
shrink = StakePoolRelay -> [StakePoolRelay]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Arbitrary L.DnsName where
  arbitrary :: Gen DnsName
arbitrary = do
    n <- (Int, Int) -> Gen Int
chooseInt (Int
5, Int
64)
    txt <- genDnsName n
    pure $! guardLength n txt $ textToDns 64 txt

instance Arbitrary Ledger.Port where
  arbitrary :: Gen Port
arbitrary = forall a b. (Integral a, Num b) => a -> b
fromIntegral @Word16 @Ledger.Port (Word16 -> Port) -> Gen Word16 -> Gen Port
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Word16
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary IPv4 where
  arbitrary :: Gen IPv4
arbitrary = Word32 -> IPv4
toIPv4w (Word32 -> IPv4) -> Gen Word32 -> Gen IPv4
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary IPv6 where
  arbitrary :: Gen IPv6
arbitrary = do
    t <- (,,,) (Word32
 -> Word32 -> Word32 -> Word32 -> (Word32, Word32, Word32, Word32))
-> Gen Word32
-> Gen
     (Word32 -> Word32 -> Word32 -> (Word32, Word32, Word32, Word32))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary Gen
  (Word32 -> Word32 -> Word32 -> (Word32, Word32, Word32, Word32))
-> Gen Word32
-> Gen (Word32 -> Word32 -> (Word32, Word32, Word32, Word32))
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary Gen (Word32 -> Word32 -> (Word32, Word32, Word32, Word32))
-> Gen Word32 -> Gen (Word32 -> (Word32, Word32, Word32, Word32))
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary Gen (Word32 -> (Word32, Word32, Word32, Word32))
-> Gen Word32 -> Gen (Word32, Word32, Word32, Word32)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary
    pure $ toIPv6w t

instance Arbitrary L.PoolMetadata where
  arbitrary :: Gen PoolMetadata
arbitrary = Url -> ByteString -> PoolMetadata
L.PoolMetadata (Url -> ByteString -> PoolMetadata)
-> Gen Url -> Gen (ByteString -> PoolMetadata)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Url
forall a. Arbitrary a => Gen a
arbitrary Gen (ByteString -> PoolMetadata)
-> Gen ByteString -> Gen PoolMetadata
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen ByteString
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary Crypto.ByteString where
  arbitrary :: Gen ByteString
arbitrary = [Char] -> ByteString
C8.pack ([Char] -> ByteString) -> Gen [Char] -> Gen ByteString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [Char]
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary L.ExUnits where
  arbitrary :: Gen ExUnits
arbitrary = Natural -> Natural -> ExUnits
L.ExUnits (Natural -> Natural -> ExUnits)
-> Gen Natural -> Gen (Natural -> ExUnits)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Natural
genUnit Gen (Natural -> ExUnits) -> Gen Natural -> Gen ExUnits
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
genUnit
   where
    genUnit :: Gen Natural
genUnit = Int64 -> Natural
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int64 -> Natural) -> Gen Int64 -> Gen Natural
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Int64, Int64) -> Gen Int64
forall a. Random a => (a, a) -> Gen a
choose (Int64
0, Int64
forall a. Bounded a => a
maxBound :: Int64)

instance Arbitrary L.Prices where
  arbitrary :: Gen Prices
arbitrary = NonNegativeInterval -> NonNegativeInterval -> Prices
L.Prices (NonNegativeInterval -> NonNegativeInterval -> Prices)
-> Gen NonNegativeInterval -> Gen (NonNegativeInterval -> Prices)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen NonNegativeInterval
forall a. Arbitrary a => Gen a
arbitrary Gen (NonNegativeInterval -> Prices)
-> Gen NonNegativeInterval -> Gen Prices
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen NonNegativeInterval
forall a. Arbitrary a => Gen a
arbitrary

-------------------------------------------------------------------------------

-- * MultiAsset & Token Instances

-------------------------------------------------------------------------------

instance Arbitrary Ledger.AssetName where
  arbitrary :: Gen AssetName
arbitrary =
    ShortByteString -> AssetName
Ledger.AssetName
      (ShortByteString -> AssetName)
-> Gen ShortByteString -> Gen AssetName
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(Int, Gen ShortByteString)] -> Gen ShortByteString
forall a. HasCallStack => [(Int, Gen a)] -> Gen a
frequency
        [ (Int
3, [ShortByteString] -> Gen ShortByteString
forall a. HasCallStack => [a] -> Gen a
elements [ShortByteString]
forall s. IsString s => [s]
digitByteStrings)
        , (Int
7, Int -> Gen ShortByteString
genShortByteString (Int -> Gen ShortByteString) -> Gen Int -> Gen ShortByteString
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (Int, Int) -> Gen Int
forall a. Random a => (a, a) -> Gen a
choose (Int
1, Int
32))
        ]

instance Arbitrary Ledger.PolicyID where
  arbitrary :: Gen PolicyID
arbitrary =
    ScriptHash -> PolicyID
Ledger.PolicyID (ScriptHash -> PolicyID)
-> (Hash ADDRHASH EraIndependentScript -> ScriptHash)
-> Hash ADDRHASH EraIndependentScript
-> PolicyID
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Hash ADDRHASH EraIndependentScript -> ScriptHash
Ledger.ScriptHash
      (Hash ADDRHASH EraIndependentScript -> PolicyID)
-> Gen (Hash ADDRHASH EraIndependentScript) -> Gen PolicyID
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Gen (Hash ADDRHASH EraIndependentScript)]
-> Gen (Hash ADDRHASH EraIndependentScript)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
        [ Gen (Hash ADDRHASH EraIndependentScript)
forall h a. HashAlgorithm h => Gen (Hash h a)
genHash
        , [Hash ADDRHASH EraIndependentScript]
-> Gen (Hash ADDRHASH EraIndependentScript)
forall a. HasCallStack => [a] -> Gen a
elements [Hash ADDRHASH EraIndependentScript]
forall h a. HashAlgorithm h => [Hash h a]
hashOfDigitByteStrings
        ]

-- | Byte strings "0" through "9"
digitByteStrings :: IsString s => [s]
digitByteStrings :: forall s. IsString s => [s]
digitByteStrings = [[Char] -> s
forall a. IsString a => [Char] -> a
fromString [Char
x] | Char
x <- [Char
'0' .. Char
'9']]

hashOfDigitByteStrings :: Ledger.HashAlgorithm h => [Crypto.Hash h a]
hashOfDigitByteStrings :: forall h a. HashAlgorithm h => [Hash h a]
hashOfDigitByteStrings = Hash h ByteString -> Hash h a
forall h a b. Hash h a -> Hash h b
Crypto.castHash (Hash h ByteString -> Hash h a)
-> (ByteString -> Hash h ByteString) -> ByteString -> Hash h a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> ByteString) -> ByteString -> Hash h ByteString
forall h a. HashAlgorithm h => (a -> ByteString) -> a -> Hash h a
hashWith ByteString -> ByteString
forall a. a -> a
id (ByteString -> Hash h a) -> [ByteString] -> [Hash h a]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ByteString]
forall s. IsString s => [s]
digitByteStrings

instance Arbitrary L.MultiAsset where
  arbitrary :: Gen MultiAsset
arbitrary =
    Gen Integer -> Gen MultiAsset
genMultiAsset (Gen Integer -> Gen MultiAsset) -> Gen Integer -> Gen MultiAsset
forall a b. (a -> b) -> a -> b
$
      Int -> Integer
forall a. Integral a => a -> Integer
toInteger
        (Int -> Integer) -> Gen Int -> Gen Integer
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Gen Int] -> Gen Int
forall a. HasCallStack => [Gen a] -> Gen a
oneof
          [ (Int, Int) -> Gen Int
forall a. Random a => (a, a) -> Gen a
choose (Int
1 :: Int, Int
forall a. Bounded a => a
maxBound)
          , (Int, Int) -> Gen Int
forall a. Random a => (a, a) -> Gen a
choose (Int
forall a. Bounded a => a
minBound :: Int, -Int
1)
          ]

genMultiAsset :: Gen Integer -> Gen L.MultiAsset
genMultiAsset :: Gen Integer -> Gen MultiAsset
genMultiAsset Gen Integer
genAmount = do
  ma <-
    [Gen MultiAsset] -> Gen MultiAsset
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Map PolicyID (Map AssetName Integer) -> MultiAsset
L.MultiAsset (Map PolicyID (Map AssetName Integer) -> MultiAsset)
-> Gen (Map PolicyID (Map AssetName Integer)) -> Gen MultiAsset
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen PolicyID
-> Gen (Map AssetName Integer)
-> Gen (Map PolicyID (Map AssetName Integer))
forall k v. Ord k => Gen k -> Gen v -> Gen (Map k v)
genNonEmptyMap Gen PolicyID
forall a. Arbitrary a => Gen a
arbitrary (Gen AssetName -> Gen Integer -> Gen (Map AssetName Integer)
forall k v. Ord k => Gen k -> Gen v -> Gen (Map k v)
genNonEmptyMap Gen AssetName
forall a. Arbitrary a => Gen a
arbitrary Gen Integer
genAmount)
      , [(PolicyID, AssetName, Int64)] -> MultiAsset
forall i.
(Bounded i, Integral i) =>
[(PolicyID, AssetName, i)] -> MultiAsset
multiAssetFromListBounded ([(PolicyID, AssetName, Int64)] -> MultiAsset)
-> Gen [(PolicyID, AssetName, Int64)] -> Gen MultiAsset
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (PolicyID, AssetName, Int64)
-> Gen [(PolicyID, AssetName, Int64)]
forall a. Gen a -> Gen [a]
listOf1 (Gen Int64 -> Gen (PolicyID, AssetName, Int64)
genMultiAssetTriple (Gen Int64 -> Gen (PolicyID, AssetName, Int64))
-> Gen Int64 -> Gen (PolicyID, AssetName, Int64)
forall a b. (a -> b) -> a -> b
$ Integer -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Integer -> Int64) -> Gen Integer -> Gen Int64
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Integer
genAmount)
      ]
  if Ledger.isMultiAssetSmallEnough ma
    then pure ma
    else scale (`div` 2) $ genMultiAsset genAmount

genMultiAssetTriple :: Gen Int64 -> Gen (Ledger.PolicyID, Ledger.AssetName, Int64)
genMultiAssetTriple :: Gen Int64 -> Gen (PolicyID, AssetName, Int64)
genMultiAssetTriple Gen Int64
genAmount = (,,) (PolicyID -> AssetName -> Int64 -> (PolicyID, AssetName, Int64))
-> Gen PolicyID
-> Gen (AssetName -> Int64 -> (PolicyID, AssetName, Int64))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen PolicyID
forall a. Arbitrary a => Gen a
arbitrary Gen (AssetName -> Int64 -> (PolicyID, AssetName, Int64))
-> Gen AssetName -> Gen (Int64 -> (PolicyID, AssetName, Int64))
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen AssetName
forall a. Arbitrary a => Gen a
arbitrary Gen (Int64 -> (PolicyID, AssetName, Int64))
-> Gen Int64 -> Gen (PolicyID, AssetName, Int64)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Int64
genAmount

multiAssetFromListBounded
  :: forall i
   . (Bounded i, Integral i)
  => [(Ledger.PolicyID, Ledger.AssetName, i)]
  -> L.MultiAsset
multiAssetFromListBounded :: forall i.
(Bounded i, Integral i) =>
[(PolicyID, AssetName, i)] -> MultiAsset
multiAssetFromListBounded =
  ((PolicyID, AssetName, i) -> MultiAsset -> MultiAsset)
-> MultiAsset -> [(PolicyID, AssetName, i)] -> MultiAsset
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr
    (\(PolicyID
p, AssetName
n, i -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral -> Integer
i) MultiAsset
ans -> (Integer -> Integer -> Integer)
-> PolicyID -> AssetName -> Integer -> MultiAsset -> MultiAsset
ConcreteValue.insertMultiAsset Integer -> Integer -> Integer
comb PolicyID
p AssetName
n Integer
i MultiAsset
ans)
    MultiAsset
forall a. Monoid a => a
mempty
 where
  comb :: Integer -> Integer -> Integer
  comb :: Integer -> Integer -> Integer
comb Integer
a Integer
b =
    Integer -> Integer -> Integer
forall a. Ord a => a -> a -> a
max
      (i -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (i -> Integer) -> i -> Integer
forall a b. (a -> b) -> a -> b
$ forall a. Bounded a => a
minBound @i)
      (Integer -> Integer -> Integer
forall a. Ord a => a -> a -> a
min (i -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (i -> Integer) -> i -> Integer
forall a b. (a -> b) -> a -> b
$ forall a. Bounded a => a
maxBound @i) (Integer
a Integer -> Integer -> Integer
forall a. Num a => a -> a -> a
+ Integer
b))

-------------------------------------------------------------------------------

-- * Governance & Voting

-------------------------------------------------------------------------------

instance Arbitrary L.GovActionId where
  arbitrary :: Gen GovActionId
arbitrary = TxId -> GovActionIx -> GovActionId
L.GovActionId (TxId -> GovActionIx -> GovActionId)
-> Gen TxId -> Gen (GovActionIx -> GovActionId)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen TxId
forall a. Arbitrary a => Gen a
arbitrary Gen (GovActionIx -> GovActionId)
-> Gen GovActionIx -> Gen GovActionId
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen GovActionIx
forall a. Arbitrary a => Gen a
arbitrary

deriving instance Arbitrary (L.GovPurposeId p era)

instance Arbitrary L.DRep where
  arbitrary :: Gen DRep
arbitrary =
    [Gen DRep] -> Gen DRep
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Credential 'DRepRole -> DRep
L.DRepCredential (Credential 'DRepRole -> DRep)
-> Gen (Credential 'DRepRole) -> Gen DRep
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential 'DRepRole)
forall a. Arbitrary a => Gen a
arbitrary
      , DRep -> Gen DRep
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DRep
L.DRepAlwaysAbstain
      , DRep -> Gen DRep
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DRep
L.DRepAlwaysNoConfidence
      ]

instance Arbitrary L.Delegatee where
  arbitrary :: Gen Delegatee
arbitrary =
    [Gen Delegatee] -> Gen Delegatee
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ KeyHash 'StakePool -> Delegatee
L.DelegStake (KeyHash 'StakePool -> Delegatee)
-> Gen (KeyHash 'StakePool) -> Gen Delegatee
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (KeyHash 'StakePool)
forall a. Arbitrary a => Gen a
arbitrary
      , DRep -> Delegatee
L.DelegVote (DRep -> Delegatee) -> Gen DRep -> Gen Delegatee
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen DRep
forall a. Arbitrary a => Gen a
arbitrary
      , KeyHash 'StakePool -> DRep -> Delegatee
L.DelegStakeVote (KeyHash 'StakePool -> DRep -> Delegatee)
-> Gen (KeyHash 'StakePool) -> Gen (DRep -> Delegatee)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (KeyHash 'StakePool)
forall a. Arbitrary a => Gen a
arbitrary Gen (DRep -> Delegatee) -> Gen DRep -> Gen Delegatee
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen DRep
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance Arbitrary L.Voter where
  arbitrary :: Gen Voter
arbitrary =
    [Gen Voter] -> Gen Voter
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Credential 'HotCommitteeRole -> Voter
L.CommitteeVoter (Credential 'HotCommitteeRole -> Voter)
-> Gen (Credential 'HotCommitteeRole) -> Gen Voter
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential 'HotCommitteeRole)
forall a. Arbitrary a => Gen a
arbitrary
      , Credential 'DRepRole -> Voter
L.DRepVoter (Credential 'DRepRole -> Voter)
-> Gen (Credential 'DRepRole) -> Gen Voter
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential 'DRepRole)
forall a. Arbitrary a => Gen a
arbitrary
      , KeyHash 'StakePool -> Voter
L.StakePoolVoter (KeyHash 'StakePool -> Voter)
-> Gen (KeyHash 'StakePool) -> Gen Voter
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (KeyHash 'StakePool)
forall a. Arbitrary a => Gen a
arbitrary
      ]
  shrink :: Voter -> [Voter]
shrink = Voter -> [Voter]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance (L.Era era, Arbitrary (L.PParamsUpdate era)) => Arbitrary (L.ProposalProcedure era) where
  arbitrary :: Gen (ProposalProcedure era)
arbitrary =
    Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
forall era.
Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
L.ProposalProcedure
      (Coin
 -> RewardAccount
 -> GovAction era
 -> Anchor
 -> ProposalProcedure era)
-> Gen Coin
-> Gen
     (RewardAccount -> GovAction era -> Anchor -> ProposalProcedure era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (RewardAccount -> GovAction era -> Anchor -> ProposalProcedure era)
-> Gen RewardAccount
-> Gen (GovAction era -> Anchor -> ProposalProcedure era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen RewardAccount
forall a. Arbitrary a => Gen a
arbitrary
      Gen (GovAction era -> Anchor -> ProposalProcedure era)
-> Gen (GovAction era) -> Gen (Anchor -> ProposalProcedure era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (GovAction era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Anchor -> ProposalProcedure era)
-> Gen Anchor -> Gen (ProposalProcedure era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Anchor
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: ProposalProcedure era -> [ProposalProcedure era]
shrink (L.ProposalProcedure Coin
dep RewardAccount
ret GovAction era
gov Anchor
anch) =
    [ Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
forall era.
Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
L.ProposalProcedure Coin
dep' RewardAccount
ret' GovAction era
gov' Anchor
anch'
    | (Coin
dep', RewardAccount
ret', GovAction era
gov', Anchor
anch') <- (Coin, RewardAccount, GovAction era, Anchor)
-> [(Coin, RewardAccount, GovAction era, Anchor)]
forall a. Arbitrary a => a -> [a]
shrink (Coin
dep, RewardAccount
ret, GovAction era
gov, Anchor
anch)
    ]

instance (L.Era era, Arbitrary (L.PParamsUpdate era)) => Arbitrary (L.GovAction era) where
  arbitrary :: Gen (GovAction era)
arbitrary = [Gen (GovAction era)] -> Gen (GovAction era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof [Gen (GovAction era)]
forall era.
(Era era, Arbitrary (PParamsUpdate era)) =>
[Gen (GovAction era)]
govActionGenerators

govActionGenerators
  :: (L.Era era, Arbitrary (L.PParamsUpdate era))
  => [Gen (L.GovAction era)]
govActionGenerators :: forall era.
(Era era, Arbitrary (PParamsUpdate era)) =>
[Gen (GovAction era)]
govActionGenerators =
  [ Gen (GovAction era)
forall era. Arbitrary (PParamsUpdate era) => Gen (GovAction era)
genParameterChange
  , Gen (GovAction era)
forall era. Gen (GovAction era)
genHardForkInitiation
  , Gen (GovAction era)
forall era. Gen (GovAction era)
genTreasuryWithdrawals
  , Gen (GovAction era)
forall era. Gen (GovAction era)
genNoConfidence
  , Gen (GovAction era)
forall era. Gen (GovAction era)
genUpdateCommittee
  , Gen (GovAction era)
forall era. Era era => Gen (GovAction era)
genNewConstitution
  , GovAction era -> Gen (GovAction era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure GovAction era
forall era. GovAction era
L.InfoAction
  ]

genParameterChange :: Arbitrary (L.PParamsUpdate era) => Gen (L.GovAction era)
genParameterChange :: forall era. Arbitrary (PParamsUpdate era) => Gen (GovAction era)
genParameterChange = StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
L.ParameterChange (StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
 -> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'PParamUpdatePurpose era))
-> Gen
     (PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'PParamUpdatePurpose era))
forall a. Arbitrary a => Gen a
arbitrary Gen (PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era)
-> Gen (PParamsUpdate era)
-> Gen (StrictMaybe ScriptHash -> GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (PParamsUpdate era)
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe ScriptHash -> GovAction era)
-> Gen (StrictMaybe ScriptHash) -> Gen (GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ScriptHash)
forall a. Arbitrary a => Gen a
arbitrary

genHardForkInitiation :: Gen (L.GovAction era)
genHardForkInitiation :: forall era. Gen (GovAction era)
genHardForkInitiation = StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> ProtVer -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> ProtVer -> GovAction era
L.HardForkInitiation (StrictMaybe (GovPurposeId 'HardForkPurpose era)
 -> ProtVer -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'HardForkPurpose era))
-> Gen (ProtVer -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'HardForkPurpose era))
forall a. Arbitrary a => Gen a
arbitrary Gen (ProtVer -> GovAction era)
-> Gen ProtVer -> Gen (GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen ProtVer
forall a. Arbitrary a => Gen a
arbitrary

genTreasuryWithdrawals :: Gen (L.GovAction era)
genTreasuryWithdrawals :: forall era. Gen (GovAction era)
genTreasuryWithdrawals = Map RewardAccount Coin -> StrictMaybe ScriptHash -> GovAction era
forall era.
Map RewardAccount Coin -> StrictMaybe ScriptHash -> GovAction era
L.TreasuryWithdrawals (Map RewardAccount Coin -> StrictMaybe ScriptHash -> GovAction era)
-> Gen (Map RewardAccount Coin)
-> Gen (StrictMaybe ScriptHash -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Map RewardAccount Coin)
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe ScriptHash -> GovAction era)
-> Gen (StrictMaybe ScriptHash) -> Gen (GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ScriptHash)
forall a. Arbitrary a => Gen a
arbitrary

genNoConfidence :: Gen (L.GovAction era)
genNoConfidence :: forall era. Gen (GovAction era)
genNoConfidence = StrictMaybe (GovPurposeId 'CommitteePurpose era) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era) -> GovAction era
L.NoConfidence (StrictMaybe (GovPurposeId 'CommitteePurpose era) -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose era))
-> Gen (GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose era))
forall a. Arbitrary a => Gen a
arbitrary

genUpdateCommittee :: Gen (L.GovAction era)
genUpdateCommittee :: forall era. Gen (GovAction era)
genUpdateCommittee =
  StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Set (Credential 'ColdCommitteeRole)
-> Map (Credential 'ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Set (Credential 'ColdCommitteeRole)
-> Map (Credential 'ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
L.UpdateCommittee
    (StrictMaybe (GovPurposeId 'CommitteePurpose era)
 -> Set (Credential 'ColdCommitteeRole)
 -> Map (Credential 'ColdCommitteeRole) EpochNo
 -> UnitInterval
 -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose era))
-> Gen
     (Set (Credential 'ColdCommitteeRole)
      -> Map (Credential 'ColdCommitteeRole) EpochNo
      -> UnitInterval
      -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose era))
forall a. Arbitrary a => Gen a
arbitrary
    Gen
  (Set (Credential 'ColdCommitteeRole)
   -> Map (Credential 'ColdCommitteeRole) EpochNo
   -> UnitInterval
   -> GovAction era)
-> Gen (Set (Credential 'ColdCommitteeRole))
-> Gen
     (Map (Credential 'ColdCommitteeRole) EpochNo
      -> UnitInterval -> GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Set (Credential 'ColdCommitteeRole))
forall a. Arbitrary a => Gen a
arbitrary
    Gen
  (Map (Credential 'ColdCommitteeRole) EpochNo
   -> UnitInterval -> GovAction era)
-> Gen (Map (Credential 'ColdCommitteeRole) EpochNo)
-> Gen (UnitInterval -> GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Map (Credential 'ColdCommitteeRole) EpochNo)
forall a. Arbitrary a => Gen a
arbitrary
    Gen (UnitInterval -> GovAction era)
-> Gen UnitInterval -> Gen (GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary

genNewConstitution :: L.Era era => Gen (L.GovAction era)
genNewConstitution :: forall era. Era era => Gen (GovAction era)
genNewConstitution = StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Constitution era -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Constitution era -> GovAction era
L.NewConstitution (StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
 -> Constitution era -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'ConstitutionPurpose era))
-> Gen (Constitution era -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'ConstitutionPurpose era))
forall a. Arbitrary a => Gen a
arbitrary Gen (Constitution era -> GovAction era)
-> Gen (Constitution era) -> Gen (GovAction era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Constitution era)
forall a. Arbitrary a => Gen a
arbitrary

-------------------------------------------------------------------------------

-- * Protocol Parameters & PParams Updates

-------------------------------------------------------------------------------

deriving instance
  (Ledger.Era era, Arbitrary (Ledger.PParamsHKD Identity era)) => Arbitrary (Ledger.PParams era)

deriving instance
  (L.Era era, Arbitrary (L.PParamsHKD L.StrictMaybe era)) => Arbitrary (L.PParamsUpdate era)

instance Ledger.Era era => Arbitrary (L.VotingProcedures era) where
  arbitrary :: Gen (VotingProcedures era)
arbitrary = Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
L.VotingProcedures (Map Voter (Map GovActionId (VotingProcedure era))
 -> VotingProcedures era)
-> Gen (Map Voter (Map GovActionId (VotingProcedure era)))
-> Gen (VotingProcedures era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Map GovActionId (VotingProcedure era))
-> Gen (Map Voter (Map GovActionId (VotingProcedure era)))
forall a. Gen a -> Gen (Map Voter a)
forall (f :: * -> *) a. Arbitrary1 f => Gen a -> Gen (f a)
liftArbitrary (Gen GovActionId
-> Gen (VotingProcedure era)
-> Gen (Map GovActionId (VotingProcedure era))
forall k v. Ord k => Gen k -> Gen v -> Gen (Map k v)
genNonEmptyMap Gen GovActionId
forall a. Arbitrary a => Gen a
arbitrary Gen (VotingProcedure era)
forall a. Arbitrary a => Gen a
arbitrary)

instance Ledger.Era era => Arbitrary (L.VotingProcedure era) where
  arbitrary :: Gen (VotingProcedure era)
arbitrary = Vote -> StrictMaybe Anchor -> VotingProcedure era
forall era. Vote -> StrictMaybe Anchor -> VotingProcedure era
L.VotingProcedure (Vote -> StrictMaybe Anchor -> VotingProcedure era)
-> Gen Vote -> Gen (StrictMaybe Anchor -> VotingProcedure era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Vote
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe Anchor -> VotingProcedure era)
-> Gen (StrictMaybe Anchor) -> Gen (VotingProcedure era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Anchor)
forall a. Arbitrary a => Gen a
arbitrary

genNonEmptyMap :: Ord k => Gen k -> Gen v -> Gen (Map.Map k v)
genNonEmptyMap :: forall k v. Ord k => Gen k -> Gen v -> Gen (Map k v)
genNonEmptyMap Gen k
genKey Gen v
genVal = [(k, v)] -> Map k v
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList ([(k, v)] -> Map k v) -> Gen [(k, v)] -> Gen (Map k v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (k, v) -> Gen [(k, v)]
forall a. Gen a -> Gen [a]
listOf1 ((,) (k -> v -> (k, v)) -> Gen k -> Gen (v -> (k, v))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen k
genKey Gen (v -> (k, v)) -> Gen v -> Gen (k, v)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen v
genVal)

-- | Shelley-based PParams
instance Ledger.Era era => Arbitrary (ShelleyPParams Identity era) where
  arbitrary :: Gen (ShelleyPParams Identity era)
arbitrary = Gen (ShelleyPParams Identity era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU
  shrink :: ShelleyPParams Identity era -> [ShelleyPParams Identity era]
shrink = ShelleyPParams Identity era -> [ShelleyPParams Identity era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Ledger.Era era => Arbitrary (ShelleyPParams Ledger.StrictMaybe era) where
  arbitrary :: Gen (ShelleyPParams StrictMaybe era)
arbitrary = Gen (ShelleyPParams StrictMaybe era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU
  shrink :: ShelleyPParams StrictMaybe era -> [ShelleyPParams StrictMaybe era]
shrink = ShelleyPParams StrictMaybe era -> [ShelleyPParams StrictMaybe era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

-- | Alonzo PParams
instance Arbitrary (Ledger.AlonzoPParams Identity era) where
  arbitrary :: Gen (AlonzoPParams Identity era)
arbitrary =
    Coin
-> Coin
-> Word32
-> Word32
-> Word16
-> Coin
-> Coin
-> EpochInterval
-> Word16
-> NonNegativeInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> Nonce
-> ProtVer
-> Coin
-> CoinPerWord
-> CostModels
-> Prices
-> OrdExUnits
-> OrdExUnits
-> Natural
-> Natural
-> Natural
-> AlonzoPParams Identity era
HKD Identity Coin
-> HKD Identity Coin
-> HKD Identity Word32
-> HKD Identity Word32
-> HKD Identity Word16
-> HKD Identity Coin
-> HKD Identity Coin
-> HKD Identity EpochInterval
-> HKD Identity Word16
-> HKD Identity NonNegativeInterval
-> HKD Identity UnitInterval
-> HKD Identity UnitInterval
-> HKD Identity UnitInterval
-> HKD Identity Nonce
-> HKD Identity ProtVer
-> HKD Identity Coin
-> HKD Identity CoinPerWord
-> HKD Identity CostModels
-> HKD Identity Prices
-> HKD Identity OrdExUnits
-> HKD Identity OrdExUnits
-> HKD Identity Natural
-> HKD Identity Natural
-> HKD Identity Natural
-> AlonzoPParams Identity era
forall (f :: * -> *) era.
HKD f Coin
-> HKD f Coin
-> HKD f Word32
-> HKD f Word32
-> HKD f Word16
-> HKD f Coin
-> HKD f Coin
-> HKD f EpochInterval
-> HKD f Word16
-> HKD f NonNegativeInterval
-> HKD f UnitInterval
-> HKD f UnitInterval
-> HKD f UnitInterval
-> HKD f Nonce
-> HKD f ProtVer
-> HKD f Coin
-> HKD f CoinPerWord
-> HKD f CostModels
-> HKD f Prices
-> HKD f OrdExUnits
-> HKD f OrdExUnits
-> HKD f Natural
-> HKD f Natural
-> HKD f Natural
-> AlonzoPParams f era
Ledger.AlonzoPParams
      (Coin
 -> Coin
 -> Word32
 -> Word32
 -> Word16
 -> Coin
 -> Coin
 -> EpochInterval
 -> Word16
 -> NonNegativeInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> Nonce
 -> ProtVer
 -> Coin
 -> CoinPerWord
 -> CostModels
 -> Prices
 -> OrdExUnits
 -> OrdExUnits
 -> Natural
 -> Natural
 -> Natural
 -> AlonzoPParams Identity era)
-> Gen Coin
-> Gen
     (Coin
      -> Word32
      -> Word32
      -> Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Word32
   -> Word32
   -> Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Coin
-> Gen
     (Word32
      -> Word32
      -> Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word32
   -> Word32
   -> Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Word32
-> Gen
     (Word32
      -> Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word32
   -> Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Word32
-> Gen
     (Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Word16
-> Gen
     (Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word16
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Coin
-> Gen
     (Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Coin
-> Gen
     (EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen EpochInterval
-> Gen
     (Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen EpochInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Word16
-> Gen
     (NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word16
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen NonNegativeInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen NonNegativeInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen UnitInterval
-> Gen
     (Nonce
      -> ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Nonce
   -> ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Nonce
-> Gen
     (ProtVer
      -> Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Nonce
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ProtVer
   -> Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen ProtVer
-> Gen
     (Coin
      -> CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen ProtVer
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Coin
-> Gen
     (CoinPerWord
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (CoinPerWord
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen CoinPerWord
-> Gen
     (CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen CoinPerWord
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen CostModels
-> Gen
     (Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Set Language -> Gen CostModels
genValidCostModels ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language
L.PlutusV1, Language
L.PlutusV2])
      Gen
  (Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen Prices
-> Gen
     (OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Prices
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> AlonzoPParams Identity era)
-> Gen OrdExUnits
-> Gen
     (OrdExUnits
      -> Natural -> Natural -> Natural -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen OrdExUnits
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OrdExUnits
   -> Natural -> Natural -> Natural -> AlonzoPParams Identity era)
-> Gen OrdExUnits
-> Gen
     (Natural -> Natural -> Natural -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen OrdExUnits
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Natural -> Natural -> Natural -> AlonzoPParams Identity era)
-> Gen Natural
-> Gen (Natural -> Natural -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Natural -> Natural -> AlonzoPParams Identity era)
-> Gen Natural -> Gen (Natural -> AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Natural -> AlonzoPParams Identity era)
-> Gen Natural -> Gen (AlonzoPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary (Ledger.AlonzoPParams Ledger.StrictMaybe era) where
  arbitrary :: Gen (AlonzoPParams StrictMaybe era)
arbitrary =
    StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe Word32
-> StrictMaybe Word32
-> StrictMaybe Word16
-> StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe EpochInterval
-> StrictMaybe Word16
-> StrictMaybe NonNegativeInterval
-> StrictMaybe UnitInterval
-> StrictMaybe UnitInterval
-> StrictMaybe UnitInterval
-> StrictMaybe Nonce
-> StrictMaybe ProtVer
-> StrictMaybe Coin
-> StrictMaybe CoinPerWord
-> StrictMaybe CostModels
-> StrictMaybe Prices
-> StrictMaybe OrdExUnits
-> StrictMaybe OrdExUnits
-> StrictMaybe Natural
-> StrictMaybe Natural
-> StrictMaybe Natural
-> AlonzoPParams StrictMaybe era
HKD StrictMaybe Coin
-> HKD StrictMaybe Coin
-> HKD StrictMaybe Word32
-> HKD StrictMaybe Word32
-> HKD StrictMaybe Word16
-> HKD StrictMaybe Coin
-> HKD StrictMaybe Coin
-> HKD StrictMaybe EpochInterval
-> HKD StrictMaybe Word16
-> HKD StrictMaybe NonNegativeInterval
-> HKD StrictMaybe UnitInterval
-> HKD StrictMaybe UnitInterval
-> HKD StrictMaybe UnitInterval
-> HKD StrictMaybe Nonce
-> HKD StrictMaybe ProtVer
-> HKD StrictMaybe Coin
-> HKD StrictMaybe CoinPerWord
-> HKD StrictMaybe CostModels
-> HKD StrictMaybe Prices
-> HKD StrictMaybe OrdExUnits
-> HKD StrictMaybe OrdExUnits
-> HKD StrictMaybe Natural
-> HKD StrictMaybe Natural
-> HKD StrictMaybe Natural
-> AlonzoPParams StrictMaybe era
forall (f :: * -> *) era.
HKD f Coin
-> HKD f Coin
-> HKD f Word32
-> HKD f Word32
-> HKD f Word16
-> HKD f Coin
-> HKD f Coin
-> HKD f EpochInterval
-> HKD f Word16
-> HKD f NonNegativeInterval
-> HKD f UnitInterval
-> HKD f UnitInterval
-> HKD f UnitInterval
-> HKD f Nonce
-> HKD f ProtVer
-> HKD f Coin
-> HKD f CoinPerWord
-> HKD f CostModels
-> HKD f Prices
-> HKD f OrdExUnits
-> HKD f OrdExUnits
-> HKD f Natural
-> HKD f Natural
-> HKD f Natural
-> AlonzoPParams f era
Ledger.AlonzoPParams
      (StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe Word32
 -> StrictMaybe Word32
 -> StrictMaybe Word16
 -> StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe EpochInterval
 -> StrictMaybe Word16
 -> StrictMaybe NonNegativeInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe Nonce
 -> StrictMaybe ProtVer
 -> StrictMaybe Coin
 -> StrictMaybe CoinPerWord
 -> StrictMaybe CostModels
 -> StrictMaybe Prices
 -> StrictMaybe OrdExUnits
 -> StrictMaybe OrdExUnits
 -> StrictMaybe Natural
 -> StrictMaybe Natural
 -> StrictMaybe Natural
 -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe Word32
      -> StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe Word32
   -> StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe Word32
      -> StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word32
   -> StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Word32)
-> Gen
     (StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Word32)
-> Gen
     (StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Word16)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe EpochInterval)
-> Gen
     (StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Word16)
-> Gen
     (StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe NonNegativeInterval)
-> Gen
     (StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe UnitInterval)
-> Gen
     (StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe UnitInterval)
-> Gen
     (StrictMaybe UnitInterval
      -> StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe UnitInterval
   -> StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe UnitInterval)
-> Gen
     (StrictMaybe Nonce
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Nonce
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Nonce)
-> Gen
     (StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Nonce)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe ProtVer)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ProtVer)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe CoinPerWord
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe CoinPerWord
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe CoinPerWord)
-> Gen
     (StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe CoinPerWord)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe CostModels)
-> Gen
     (StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [Gen (StrictMaybe CostModels)] -> Gen (StrictMaybe CostModels)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
        [ StrictMaybe CostModels -> Gen (StrictMaybe CostModels)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure StrictMaybe CostModels
forall a. StrictMaybe a
Ledger.SNothing
        , CostModels -> StrictMaybe CostModels
forall a. a -> StrictMaybe a
Ledger.SJust (CostModels -> StrictMaybe CostModels)
-> Gen CostModels -> Gen (StrictMaybe CostModels)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Set Language -> Gen CostModels
genValidCostModels ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language
L.PlutusV1, Language
L.PlutusV2])
        ]
      Gen
  (StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Prices)
-> Gen
     (StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Prices)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe OrdExUnits)
-> Gen
     (StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe OrdExUnits)
-> Gen
     (StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Natural)
-> Gen
     (StrictMaybe Natural
      -> StrictMaybe Natural -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Natural)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Natural
   -> StrictMaybe Natural -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Natural)
-> Gen (StrictMaybe Natural -> AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Natural)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (StrictMaybe Natural -> AlonzoPParams StrictMaybe era)
-> Gen (StrictMaybe Natural) -> Gen (AlonzoPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Natural)
forall a. Arbitrary a => Gen a
arbitrary

-- | Babbage PParams
instance Arbitrary (Ledger.BabbagePParams Identity era) where
  arbitrary :: Gen (BabbagePParams Identity era)
arbitrary =
    Coin
-> Coin
-> Word32
-> Word32
-> Word16
-> Coin
-> Coin
-> EpochInterval
-> Word16
-> NonNegativeInterval
-> UnitInterval
-> UnitInterval
-> ProtVer
-> Coin
-> CoinPerByte
-> CostModels
-> Prices
-> OrdExUnits
-> OrdExUnits
-> Natural
-> Natural
-> Natural
-> BabbagePParams Identity era
HKD Identity Coin
-> HKD Identity Coin
-> HKD Identity Word32
-> HKD Identity Word32
-> HKD Identity Word16
-> HKD Identity Coin
-> HKD Identity Coin
-> HKD Identity EpochInterval
-> HKD Identity Word16
-> HKD Identity NonNegativeInterval
-> HKD Identity UnitInterval
-> HKD Identity UnitInterval
-> HKD Identity ProtVer
-> HKD Identity Coin
-> HKD Identity CoinPerByte
-> HKD Identity CostModels
-> HKD Identity Prices
-> HKD Identity OrdExUnits
-> HKD Identity OrdExUnits
-> HKD Identity Natural
-> HKD Identity Natural
-> HKD Identity Natural
-> BabbagePParams Identity era
forall (f :: * -> *) era.
HKD f Coin
-> HKD f Coin
-> HKD f Word32
-> HKD f Word32
-> HKD f Word16
-> HKD f Coin
-> HKD f Coin
-> HKD f EpochInterval
-> HKD f Word16
-> HKD f NonNegativeInterval
-> HKD f UnitInterval
-> HKD f UnitInterval
-> HKD f ProtVer
-> HKD f Coin
-> HKD f CoinPerByte
-> HKD f CostModels
-> HKD f Prices
-> HKD f OrdExUnits
-> HKD f OrdExUnits
-> HKD f Natural
-> HKD f Natural
-> HKD f Natural
-> BabbagePParams f era
Ledger.BabbagePParams
      (Coin
 -> Coin
 -> Word32
 -> Word32
 -> Word16
 -> Coin
 -> Coin
 -> EpochInterval
 -> Word16
 -> NonNegativeInterval
 -> UnitInterval
 -> UnitInterval
 -> ProtVer
 -> Coin
 -> CoinPerByte
 -> CostModels
 -> Prices
 -> OrdExUnits
 -> OrdExUnits
 -> Natural
 -> Natural
 -> Natural
 -> BabbagePParams Identity era)
-> Gen Coin
-> Gen
     (Coin
      -> Word32
      -> Word32
      -> Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Word32
   -> Word32
   -> Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Coin
-> Gen
     (Word32
      -> Word32
      -> Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word32
   -> Word32
   -> Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Word32
-> Gen
     (Word32
      -> Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word32
   -> Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Word32
-> Gen
     (Word16
      -> Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word32
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word16
   -> Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Word16
-> Gen
     (Coin
      -> Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word16
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Coin
-> Gen
     (Coin
      -> EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Coin
-> Gen
     (EpochInterval
      -> Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (EpochInterval
   -> Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen EpochInterval
-> Gen
     (Word16
      -> NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen EpochInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word16
   -> NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Word16
-> Gen
     (NonNegativeInterval
      -> UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Word16
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (NonNegativeInterval
   -> UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen NonNegativeInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen NonNegativeInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen UnitInterval
-> Gen
     (ProtVer
      -> Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ProtVer
   -> Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen ProtVer
-> Gen
     (Coin
      -> CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen ProtVer
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Coin
-> Gen
     (CoinPerByte
      -> CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (CoinPerByte
   -> CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen CoinPerByte
-> Gen
     (CostModels
      -> Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen CoinPerByte
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (CostModels
   -> Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen CostModels
-> Gen
     (Prices
      -> OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Set Language -> Gen CostModels
genValidCostModels ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language
L.PlutusV1, Language
L.PlutusV2])
      Gen
  (Prices
   -> OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen Prices
-> Gen
     (OrdExUnits
      -> OrdExUnits
      -> Natural
      -> Natural
      -> Natural
      -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Prices
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OrdExUnits
   -> OrdExUnits
   -> Natural
   -> Natural
   -> Natural
   -> BabbagePParams Identity era)
-> Gen OrdExUnits
-> Gen
     (OrdExUnits
      -> Natural -> Natural -> Natural -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen OrdExUnits
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OrdExUnits
   -> Natural -> Natural -> Natural -> BabbagePParams Identity era)
-> Gen OrdExUnits
-> Gen
     (Natural -> Natural -> Natural -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen OrdExUnits
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Natural -> Natural -> Natural -> BabbagePParams Identity era)
-> Gen Natural
-> Gen (Natural -> Natural -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Natural -> Natural -> BabbagePParams Identity era)
-> Gen Natural -> Gen (Natural -> BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Natural -> BabbagePParams Identity era)
-> Gen Natural -> Gen (BabbagePParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Natural
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary (Ledger.BabbagePParams Ledger.StrictMaybe era) where
  arbitrary :: Gen (BabbagePParams StrictMaybe era)
arbitrary =
    StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe Word32
-> StrictMaybe Word32
-> StrictMaybe Word16
-> StrictMaybe Coin
-> StrictMaybe Coin
-> StrictMaybe EpochInterval
-> StrictMaybe Word16
-> StrictMaybe NonNegativeInterval
-> StrictMaybe UnitInterval
-> StrictMaybe UnitInterval
-> StrictMaybe ProtVer
-> StrictMaybe Coin
-> StrictMaybe CoinPerByte
-> StrictMaybe CostModels
-> StrictMaybe Prices
-> StrictMaybe OrdExUnits
-> StrictMaybe OrdExUnits
-> StrictMaybe Natural
-> StrictMaybe Natural
-> StrictMaybe Natural
-> BabbagePParams StrictMaybe era
HKD StrictMaybe Coin
-> HKD StrictMaybe Coin
-> HKD StrictMaybe Word32
-> HKD StrictMaybe Word32
-> HKD StrictMaybe Word16
-> HKD StrictMaybe Coin
-> HKD StrictMaybe Coin
-> HKD StrictMaybe EpochInterval
-> HKD StrictMaybe Word16
-> HKD StrictMaybe NonNegativeInterval
-> HKD StrictMaybe UnitInterval
-> HKD StrictMaybe UnitInterval
-> HKD StrictMaybe ProtVer
-> HKD StrictMaybe Coin
-> HKD StrictMaybe CoinPerByte
-> HKD StrictMaybe CostModels
-> HKD StrictMaybe Prices
-> HKD StrictMaybe OrdExUnits
-> HKD StrictMaybe OrdExUnits
-> HKD StrictMaybe Natural
-> HKD StrictMaybe Natural
-> HKD StrictMaybe Natural
-> BabbagePParams StrictMaybe era
forall (f :: * -> *) era.
HKD f Coin
-> HKD f Coin
-> HKD f Word32
-> HKD f Word32
-> HKD f Word16
-> HKD f Coin
-> HKD f Coin
-> HKD f EpochInterval
-> HKD f Word16
-> HKD f NonNegativeInterval
-> HKD f UnitInterval
-> HKD f UnitInterval
-> HKD f ProtVer
-> HKD f Coin
-> HKD f CoinPerByte
-> HKD f CostModels
-> HKD f Prices
-> HKD f OrdExUnits
-> HKD f OrdExUnits
-> HKD f Natural
-> HKD f Natural
-> HKD f Natural
-> BabbagePParams f era
Ledger.BabbagePParams
      (StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe Word32
 -> StrictMaybe Word32
 -> StrictMaybe Word16
 -> StrictMaybe Coin
 -> StrictMaybe Coin
 -> StrictMaybe EpochInterval
 -> StrictMaybe Word16
 -> StrictMaybe NonNegativeInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe UnitInterval
 -> StrictMaybe ProtVer
 -> StrictMaybe Coin
 -> StrictMaybe CoinPerByte
 -> StrictMaybe CostModels
 -> StrictMaybe Prices
 -> StrictMaybe OrdExUnits
 -> StrictMaybe OrdExUnits
 -> StrictMaybe Natural
 -> StrictMaybe Natural
 -> StrictMaybe Natural
 -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe Word32
      -> StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe Word32
   -> StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe Word32
      -> StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word32
   -> StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Word32)
-> Gen
     (StrictMaybe Word32
      -> StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word32
   -> StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Word32)
-> Gen
     (StrictMaybe Word16
      -> StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word16
   -> StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Word16)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe EpochInterval
      -> StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe EpochInterval
   -> StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe EpochInterval)
-> Gen
     (StrictMaybe Word16
      -> StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Word16
   -> StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Word16)
-> Gen
     (StrictMaybe NonNegativeInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe NonNegativeInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe NonNegativeInterval)
-> Gen
     (StrictMaybe UnitInterval
      -> StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe UnitInterval
   -> StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe UnitInterval)
-> Gen
     (StrictMaybe UnitInterval
      -> StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe UnitInterval
   -> StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe UnitInterval)
-> Gen
     (StrictMaybe ProtVer
      -> StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe ProtVer
   -> StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe ProtVer)
-> Gen
     (StrictMaybe Coin
      -> StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ProtVer)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Coin)
-> Gen
     (StrictMaybe CoinPerByte
      -> StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe CoinPerByte
   -> StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe CoinPerByte)
-> Gen
     (StrictMaybe CostModels
      -> StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe CoinPerByte)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe CostModels
   -> StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe CostModels)
-> Gen
     (StrictMaybe Prices
      -> StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> [Gen (StrictMaybe CostModels)] -> Gen (StrictMaybe CostModels)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
        [ StrictMaybe CostModels -> Gen (StrictMaybe CostModels)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure StrictMaybe CostModels
forall a. StrictMaybe a
Ledger.SNothing
        , CostModels -> StrictMaybe CostModels
forall a. a -> StrictMaybe a
Ledger.SJust (CostModels -> StrictMaybe CostModels)
-> Gen CostModels -> Gen (StrictMaybe CostModels)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Set Language -> Gen CostModels
genValidCostModels ([Language] -> Set Language
forall a. Ord a => [a] -> Set a
Set.fromList [Language
L.PlutusV1, Language
L.PlutusV2])
        ]
      Gen
  (StrictMaybe Prices
   -> StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Prices)
-> Gen
     (StrictMaybe OrdExUnits
      -> StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Prices)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe OrdExUnits
   -> StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe OrdExUnits)
-> Gen
     (StrictMaybe OrdExUnits
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe OrdExUnits
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe OrdExUnits)
-> Gen
     (StrictMaybe Natural
      -> StrictMaybe Natural
      -> StrictMaybe Natural
      -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Natural
   -> StrictMaybe Natural
   -> StrictMaybe Natural
   -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Natural)
-> Gen
     (StrictMaybe Natural
      -> StrictMaybe Natural -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Natural)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Natural
   -> StrictMaybe Natural -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Natural)
-> Gen (StrictMaybe Natural -> BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Natural)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (StrictMaybe Natural -> BabbagePParams StrictMaybe era)
-> Gen (StrictMaybe Natural)
-> Gen (BabbagePParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Natural)
forall a. Arbitrary a => Gen a
arbitrary

-- | Conway PParams
instance Ledger.Era era => Arbitrary (Ledger.ConwayPParams Identity era) where
  arbitrary :: Gen (ConwayPParams Identity era)
arbitrary =
    THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval
-> ConwayPParams Identity era
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> HKDNoUpdate Identity ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval
-> ConwayPParams Identity era
forall (f :: * -> *) era.
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f NonNegativeInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> HKDNoUpdate f ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f CoinPerByte
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f CostModels
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Prices
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval
-> ConwayPParams f era
Ledger.ConwayPParams
      (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
 -> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
 -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
 -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      Identity
      EpochInterval
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      Identity
      NonNegativeInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
 -> ProtVer
 -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
 -> THKD
      ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
 -> THKD
      ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
 -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      Identity
      PoolVotingThresholds
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      Identity
      DRepVotingThresholds
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
 -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup)
      Identity
      NonNegativeInterval
 -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval)
-> Gen
     (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
-> Gen
     (ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen ProtVer
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen ProtVer
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
HKD Identity CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
forall (t :: PPGroups) (f :: * -> *) a. HKD f a -> THKD t f a
Ledger.THKD (CostModels
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels)
-> Gen CostModels
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen CostModels
forall a. Arbitrary a => Gen a
arbitrary)
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
-> Gen
     (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
-> Gen
     (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval)
-> Gen (ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: ConwayPParams Identity era -> [ConwayPParams Identity era]
shrink = ConwayPParams Identity era -> [ConwayPParams Identity era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Ledger.Era era => Arbitrary (Ledger.ConwayPParams Ledger.StrictMaybe era) where
  arbitrary :: Gen (ConwayPParams StrictMaybe era)
arbitrary =
    THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> HKDNoUpdate StrictMaybe ProtVer
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval
-> ConwayPParams StrictMaybe era
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> NoUpdate ProtVer
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval
-> ConwayPParams StrictMaybe era
forall (f :: * -> *) era.
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f NonNegativeInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> HKDNoUpdate f ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f CoinPerByte
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f CostModels
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Prices
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval
-> ConwayPParams f era
Ledger.ConwayPParams
      (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
 -> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      EpochInterval
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      NonNegativeInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
      StrictMaybe
      UnitInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
      StrictMaybe
      UnitInterval
 -> NoUpdate ProtVer
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      CostModels
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
 -> THKD
      ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
 -> THKD
      ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      StrictMaybe
      PoolVotingThresholds
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      StrictMaybe
      DRepVotingThresholds
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
 -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup)
      StrictMaybe
      NonNegativeInterval
 -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval)
-> Gen
     (NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen (NoUpdate ProtVer)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NoUpdate ProtVer -> Gen (NoUpdate ProtVer)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure NoUpdate ProtVer
forall a. NoUpdate a
NoUpdate
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (StrictMaybe CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
HKD StrictMaybe CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
forall (t :: PPGroups) (f :: * -> *) a. HKD f a -> THKD t f a
Ledger.THKD (StrictMaybe CostModels
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      CostModels)
-> Gen (StrictMaybe CostModels)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Gen (StrictMaybe CostModels)] -> Gen (StrictMaybe CostModels)
forall a. HasCallStack => [Gen a] -> Gen a
oneof [CostModels -> StrictMaybe CostModels
forall a. a -> StrictMaybe a
Ledger.SJust (CostModels -> StrictMaybe CostModels)
-> Gen CostModels -> Gen (StrictMaybe CostModels)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen CostModels
genValidAndUnknownCostModels, StrictMaybe CostModels -> Gen (StrictMaybe CostModels)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure StrictMaybe CostModels
forall a. StrictMaybe a
Ledger.SNothing])
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
-> Gen
     (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval)
-> Gen (ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: ConwayPParams StrictMaybe era -> [ConwayPParams StrictMaybe era]
shrink = ConwayPParams StrictMaybe era -> [ConwayPParams StrictMaybe era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

-- | Thresholds
instance Arbitrary Ledger.PoolVotingThresholds where
  arbitrary :: Gen PoolVotingThresholds
arbitrary =
    UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> PoolVotingThresholds
Ledger.PoolVotingThresholds
      (UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> PoolVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> PoolVotingThresholds)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> PoolVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval -> UnitInterval -> PoolVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval -> UnitInterval -> PoolVotingThresholds)
-> Gen UnitInterval
-> Gen (UnitInterval -> UnitInterval -> PoolVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen (UnitInterval -> UnitInterval -> PoolVotingThresholds)
-> Gen UnitInterval -> Gen (UnitInterval -> PoolVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen (UnitInterval -> PoolVotingThresholds)
-> Gen UnitInterval -> Gen PoolVotingThresholds
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: PoolVotingThresholds -> [PoolVotingThresholds]
shrink = PoolVotingThresholds -> [PoolVotingThresholds]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Arbitrary Ledger.DRepVotingThresholds where
  arbitrary :: Gen DRepVotingThresholds
arbitrary =
    UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> DRepVotingThresholds
Ledger.DRepVotingThresholds
      (UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> UnitInterval
 -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> DRepVotingThresholds)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> UnitInterval
      -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> UnitInterval
   -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen
     (UnitInterval
      -> UnitInterval -> UnitInterval -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (UnitInterval
   -> UnitInterval -> UnitInterval -> DRepVotingThresholds)
-> Gen UnitInterval
-> Gen (UnitInterval -> UnitInterval -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen (UnitInterval -> UnitInterval -> DRepVotingThresholds)
-> Gen UnitInterval -> Gen (UnitInterval -> DRepVotingThresholds)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen (UnitInterval -> DRepVotingThresholds)
-> Gen UnitInterval -> Gen DRepVotingThresholds
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen UnitInterval
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: DRepVotingThresholds -> [DRepVotingThresholds]
shrink = DRepVotingThresholds -> [DRepVotingThresholds]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Ledger.Era era => Arbitrary (Ledger.Constitution era) where
  arbitrary :: Gen (Constitution era)
arbitrary = Anchor -> StrictMaybe ScriptHash -> Constitution era
forall era. Anchor -> StrictMaybe ScriptHash -> Constitution era
Ledger.Constitution (Anchor -> StrictMaybe ScriptHash -> Constitution era)
-> Gen Anchor -> Gen (StrictMaybe ScriptHash -> Constitution era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Anchor
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe ScriptHash -> Constitution era)
-> Gen (StrictMaybe ScriptHash) -> Gen (Constitution era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ScriptHash)
forall a. Arbitrary a => Gen a
arbitrary

-------------------------------------------------------------------------------

-- * Cost Models

-------------------------------------------------------------------------------

instance Arbitrary Alonzo.CostModel where
  arbitrary :: Gen CostModel
arbitrary = [Language] -> Gen Language
forall a. HasCallStack => [a] -> Gen a
elements [Language]
Ledger.nonNativeLanguages Gen Language -> (Language -> Gen CostModel) -> Gen CostModel
forall a b. Gen a -> (a -> Gen b) -> Gen b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Language -> Gen CostModel
genValidCostModel

instance Arbitrary Alonzo.CostModels where
  arbitrary :: Gen CostModels
arbitrary = do
    known <- Gen (Map Word8 [Int64])
genKnownCostModels
    unknown <- genUnknownCostModels
    let cms = Map Word8 [Int64]
known Map Word8 [Int64] -> Map Word8 [Int64] -> Map Word8 [Int64]
forall k a. Ord k => Map k a -> Map k a -> Map k a
`Map.union` Map Word8 [Int64]
unknown
    pure . errorFail $ Ledger.mkCostModelsLenient cms

genValidCostModel :: Ledger.Language -> Gen Ledger.CostModel
genValidCostModel :: Language -> Gen CostModel
genValidCostModel Language
lang = do
  newParamValues <- Int -> Gen Int64 -> Gen [Int64]
forall a. Int -> Gen a -> Gen [a]
vectorOf (Language -> Int
Ledger.costModelParamsCount Language
lang) Gen Int64
forall a. Arbitrary a => Gen a
arbitrary
  either (\CostModelApplyError
err -> [Char] -> Gen CostModel
forall a. HasCallStack => [Char] -> a
error ([Char] -> Gen CostModel) -> [Char] -> Gen CostModel
forall a b. (a -> b) -> a -> b
$ [Char]
"Corrupt cost model: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ CostModelApplyError -> [Char]
forall a. Show a => a -> [Char]
show CostModelApplyError
err) pure $
    Ledger.mkCostModel lang newParamValues

genValidCostModels :: Set Ledger.Language -> Gen L.CostModels
genValidCostModels :: Set Language -> Gen CostModels
genValidCostModels = (Map Language CostModel -> CostModels)
-> Gen (Map Language CostModel) -> Gen CostModels
forall a b. (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Map Language CostModel -> CostModels
Alonzo.mkCostModels (Gen (Map Language CostModel) -> Gen CostModels)
-> (Set Language -> Gen (Map Language CostModel))
-> Set Language
-> Gen CostModels
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map Language (Gen CostModel) -> Gen (Map Language CostModel)
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
Map Language (m a) -> m (Map Language a)
sequence (Map Language (Gen CostModel) -> Gen (Map Language CostModel))
-> (Set Language -> Map Language (Gen CostModel))
-> Set Language
-> Gen (Map Language CostModel)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Language -> Gen CostModel)
-> Set Language -> Map Language (Gen CostModel)
forall k a. (k -> a) -> Set k -> Map k a
Map.fromSet Language -> Gen CostModel
genValidCostModel

genValidAndUnknownCostModels :: Gen L.CostModels
genValidAndUnknownCostModels :: Gen CostModels
genValidAndUnknownCostModels = do
  langs <- [Language] -> Gen [Language]
forall a. [a] -> Gen [a]
sublistOf [Language]
Ledger.nonNativeLanguages
  validCms <- genValidCostModels $ Set.fromList langs
  unknownCms <- errorFail . Ledger.mkCostModelsLenient <$> genUnknownCostModels
  pure $ Ledger.updateCostModels validCms unknownCms

genUnknownCostModels :: Gen (Map.Map Word8 [Int64])
genUnknownCostModels :: Gen (Map Word8 [Int64])
genUnknownCostModels = [(Word8, [Int64])] -> Map Word8 [Int64]
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList ([(Word8, [Int64])] -> Map Word8 [Int64])
-> Gen [(Word8, [Int64])] -> Gen (Map Word8 [Int64])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Word8, [Int64]) -> Gen [(Word8, [Int64])]
forall a. Gen a -> Gen [a]
listOf Gen (Word8, [Int64])
genUnknownCostModelValues

genUnknownCostModelValues :: Gen (Word8, [Int64])
genUnknownCostModelValues :: Gen (Word8, [Int64])
genUnknownCostModelValues = do
  lang <- (Int, Int) -> Gen Int
chooseInt (Int
firstInvalid, Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word8
forall a. Bounded a => a
maxBound :: Word8))
  vs <- arbitrary
  return (fromIntegral . fromEnum $ lang, vs)
 where
  firstInvalid :: Int
firstInvalid = Language -> Int
forall a. Enum a => a -> Int
fromEnum (Language
forall a. Bounded a => a
maxBound :: Ledger.Language) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1

genKnownCostModels :: Gen (Map.Map Word8 [Int64])
genKnownCostModels :: Gen (Map Word8 [Int64])
genKnownCostModels = do
  langs <- [Language] -> Gen [Language]
forall a. [a] -> Gen [a]
sublistOf [Language]
L.nonNativeLanguages
  cms <- mapM genCostModelValues langs
  return $ Map.fromList cms

genCostModelValues :: L.Language -> Gen (Word8, [Int64])
genCostModelValues :: Language -> Gen (Word8, [Int64])
genCostModelValues Language
lang = do
  Positive sub <- Gen (Positive Int)
forall a. Arbitrary a => Gen a
arbitrary
  (,) lang'
    <$> oneof
      [ listAtLeast (Ledger.costModelParamsCount lang)
      , take (tooFew sub) <$> arbitrary
      ]
 where
  lang' :: Word8
lang' = Int -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Language -> Int
forall a. Enum a => a -> Int
fromEnum Language
lang)
  tooFew :: Int -> Int
tooFew Int
sub = Language -> Int
Ledger.costModelParamsCount Language
lang Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
sub
  listAtLeast :: Int -> Gen [Int64]
  listAtLeast :: Int -> Gen [Int64]
listAtLeast Int
x = do
    NonNegative y <- Gen (NonNegative Int)
forall a. Arbitrary a => Gen a
arbitrary
    replicateM (x + y) arbitrary

-------------------------------------------------------------------------------

-- * Helper: Era-Specific Arbitraries

-------------------------------------------------------------------------------

obtainArbitraryConstraints
  :: ShelleyBasedEra era
  -> ( ( Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era))
       , Arbitrary (L.VotingProcedures (ShelleyLedgerEra era))
       , Arbitrary (L.ProposalProcedure (ShelleyLedgerEra era))
       )
       => a
     )
  -> a
obtainArbitraryConstraints :: forall era a.
ShelleyBasedEra era
-> ((Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
     Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
     Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
    a)
-> a
obtainArbitraryConstraints ShelleyBasedEra era
era (Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f = case ShelleyBasedEra era
era of
  ShelleyBasedEra era
ShelleyBasedEraShelley -> a
(Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f
  ShelleyBasedEra era
ShelleyBasedEraAllegra -> a
(Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f
  ShelleyBasedEra era
ShelleyBasedEraMary -> a
(Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f
  ShelleyBasedEra era
ShelleyBasedEraAlonzo -> a
(Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f
  ShelleyBasedEra era
ShelleyBasedEraBabbage -> a
(Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f
  ShelleyBasedEra era
ShelleyBasedEraConway -> a
(Arbitrary (ShelleyPParams Identity (ShelleyLedgerEra era)),
 Arbitrary (VotingProcedures (ShelleyLedgerEra era)),
 Arbitrary (ProposalProcedure (ShelleyLedgerEra era))) =>
a
f