{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Conway.Arbitrary (
  genUpdateCommittee,
  genNoConfidence,
  genTreasuryWithdrawals,
  genHardForkInitiation,
  genParameterChange,
  genNewConstitution,
  govActionGenerators,
  genConwayPlutusPurposePointer,
  genGovAction,
  genGovActionState,
  genPParamUpdateGovAction,
  genHardForkGovAction,
  genCommitteeGovAction,
  genConstitutionGovAction,
  genProposals,
  ProposalsNewActions (..),
  ProposalsForEnactment (..),
  ShuffledGovActionStates (..),
) where

import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError)
import Cardano.Ledger.BaseTypes (StrictMaybe (..))
import Cardano.Ledger.Conway (ConwayEra, Tx (..))
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..))
import Cardano.Ledger.Conway.Governance
import Cardano.Ledger.Conway.PParams (
  ConwayPParams (..),
  THKD (..),
  UpgradeConwayPParams (..),
 )
import Cardano.Ledger.Conway.Rules
import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..))
import Cardano.Ledger.Conway.State
import Cardano.Ledger.Conway.Transition (TransitionConfig (..))
import Cardano.Ledger.Conway.TxBody
import Cardano.Ledger.Conway.TxCert
import Cardano.Ledger.Conway.TxInfo (ConwayContextError)
import Cardano.Ledger.HKD (HKD, NoUpdate (..))
import Cardano.Ledger.Plutus (Language (PlutusV3))
import Control.Monad (forM)
import Control.State.Transition.Extended (STS (Event))
import Data.Default (def)
import Data.Foldable (toList)
import Data.Functor.Identity (Identity)
import Data.List (nubBy)
import qualified Data.ListMap as ListMap
import qualified Data.Map.Strict as Map
import qualified Data.Sequence as Seq
import qualified Data.Sequence.Strict as SSeq
import qualified Data.Set as Set
import Data.Word
import Generic.Random (genericArbitraryU)
import Lens.Micro
import Test.Cardano.Data (genNonEmptyMap)
import Test.Cardano.Data.Arbitrary ()
import Test.Cardano.Ledger.Alonzo.Arbitrary (genValidAndUnknownCostModels, genValidCostModel)
import Test.Cardano.Ledger.Babbage.Arbitrary ()
import Test.Cardano.Ledger.Binary.Random (QC (..))
import Test.Cardano.Ledger.Common
import Test.Cardano.Ledger.Core.Arbitrary (uniformSubMap)

instance
  (Era era, Arbitrary (PParamsUpdate era)) =>
  Arbitrary (PulsingSnapshot era)
  where
  arbitrary :: Gen (PulsingSnapshot era)
arbitrary = StrictSeq (GovActionState era)
-> Map DRep (CompactForm Coin)
-> Map (Credential DRepRole) DRepState
-> Map (KeyHash StakePool) (CompactForm Coin)
-> PulsingSnapshot era
forall era.
StrictSeq (GovActionState era)
-> Map DRep (CompactForm Coin)
-> Map (Credential DRepRole) DRepState
-> Map (KeyHash StakePool) (CompactForm Coin)
-> PulsingSnapshot era
PulsingSnapshot (StrictSeq (GovActionState era)
 -> Map DRep (CompactForm Coin)
 -> Map (Credential DRepRole) DRepState
 -> Map (KeyHash StakePool) (CompactForm Coin)
 -> PulsingSnapshot era)
-> Gen (StrictSeq (GovActionState era))
-> Gen
     (Map DRep (CompactForm Coin)
      -> Map (Credential DRepRole) DRepState
      -> Map (KeyHash StakePool) (CompactForm Coin)
      -> PulsingSnapshot era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictSeq (GovActionState era))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (Map DRep (CompactForm Coin)
   -> Map (Credential DRepRole) DRepState
   -> Map (KeyHash StakePool) (CompactForm Coin)
   -> PulsingSnapshot era)
-> Gen (Map DRep (CompactForm Coin))
-> Gen
     (Map (Credential DRepRole) DRepState
      -> Map (KeyHash StakePool) (CompactForm Coin)
      -> PulsingSnapshot 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 DRep (CompactForm Coin))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (Map (Credential DRepRole) DRepState
   -> Map (KeyHash StakePool) (CompactForm Coin)
   -> PulsingSnapshot era)
-> Gen (Map (Credential DRepRole) DRepState)
-> Gen
     (Map (KeyHash StakePool) (CompactForm Coin) -> PulsingSnapshot 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 DRepRole) DRepState)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (Map (KeyHash StakePool) (CompactForm Coin) -> PulsingSnapshot era)
-> Gen (Map (KeyHash StakePool) (CompactForm Coin))
-> Gen (PulsingSnapshot 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 (KeyHash StakePool) (CompactForm Coin))
forall a. Arbitrary a => Gen a
arbitrary

instance
  (Arbitrary (InstantStake era), Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Era era) =>
  Arbitrary (DRepPulsingState era)
  where
  arbitrary :: Gen (DRepPulsingState era)
arbitrary = PulsingSnapshot era -> RatifyState era -> DRepPulsingState era
forall era.
PulsingSnapshot era -> RatifyState era -> DRepPulsingState era
DRComplete (PulsingSnapshot era -> RatifyState era -> DRepPulsingState era)
-> Gen (PulsingSnapshot era)
-> Gen (RatifyState era -> DRepPulsingState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (PulsingSnapshot era)
forall a. Arbitrary a => Gen a
arbitrary Gen (RatifyState era -> DRepPulsingState era)
-> Gen (RatifyState era) -> Gen (DRepPulsingState 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 (RatifyState era)
forall a. Arbitrary a => Gen a
arbitrary

instance
  ( EraPParams era
  , Arbitrary (PlutusPurpose AsItem era)
  , Arbitrary (PlutusPurpose AsIx era)
  , Arbitrary (TxCert era)
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  Arbitrary (ConwayContextError era)
  where
  arbitrary :: Gen (ConwayContextError era)
arbitrary = Gen (ConwayContextError era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary ConwayGenesis where
  arbitrary :: Gen ConwayGenesis
arbitrary = do
    cgUpgradePParams <- Gen (UpgradeConwayPParams Identity)
forall a. Arbitrary a => Gen a
arbitrary
    cgConstitution <- arbitrary
    cgCommittee <- arbitrary
    delegatees <- arbitrary
    delegs <-
      if null delegatees
        then pure mempty
        else listOf ((,) <$> arbitrary <*> elements delegatees)
    let delegatedDReps =
          Set (Credential DRepRole) -> [Credential DRepRole]
forall a. Set a -> [a]
Set.toList (Set (Credential DRepRole) -> [Credential DRepRole])
-> Set (Credential DRepRole) -> [Credential DRepRole]
forall a b. (a -> b) -> a -> b
$
            [Credential DRepRole] -> Set (Credential DRepRole)
forall a. Ord a => [a] -> Set a
Set.fromList [Credential DRepRole
dRepCred | (Credential Staking
_, DelegVote (DRepCredential Credential DRepRole
dRepCred)) <- [(Credential Staking, Delegatee)]
delegs]
        arbitraryDRepState = do
          drepState <- Gen DRepState
forall a. Arbitrary a => Gen a
arbitrary
          -- Genesis file should never supply the delegation set, it is later reconstructed by
          -- injectIntoTestState when used
          pure drepState {drepDelegs = Set.empty}
    -- We need to preserve the invariant that delegations cannot point to non-existent DReps
    initialDRepsWithDelegs <- forM delegatedDReps $ \Credential DRepRole
dRepCred -> (,) Credential DRepRole
dRepCred (DRepState -> (Credential DRepRole, DRepState))
-> Gen DRepState -> Gen (Credential DRepRole, DRepState)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen DRepState
arbitraryDRepState
    initialDRepsNoDelegs <- listOf ((,) <$> arbitrary <*> arbitraryDRepState)
    -- Intermediate conversion to a Map isn't necessary, since uniform generation of credentials
    -- pretty much guarantees uniqueness
    let cgDelegs = [(Credential Staking, Delegatee)]
-> ListMap (Credential Staking) Delegatee
forall k v. [(k, v)] -> ListMap k v
ListMap.fromList [(Credential Staking, Delegatee)]
delegs
        cgInitialDReps = [(Credential DRepRole, DRepState)]
-> ListMap (Credential DRepRole) DRepState
forall k v. [(k, v)] -> ListMap k v
ListMap.fromList ([(Credential DRepRole, DRepState)]
 -> ListMap (Credential DRepRole) DRepState)
-> [(Credential DRepRole, DRepState)]
-> ListMap (Credential DRepRole) DRepState
forall a b. (a -> b) -> a -> b
$ [(Credential DRepRole, DRepState)]
initialDRepsNoDelegs [(Credential DRepRole, DRepState)]
-> [(Credential DRepRole, DRepState)]
-> [(Credential DRepRole, DRepState)]
forall a. [a] -> [a] -> [a]
++ [(Credential DRepRole, DRepState)]
initialDRepsWithDelegs
    pure ConwayGenesis {..}

instance Arbitrary (UpgradeConwayPParams Identity) where
  arbitrary :: Gen (UpgradeConwayPParams Identity)
arbitrary =
    PoolVotingThresholds
-> DRepVotingThresholds
-> Word16
-> EpochInterval
-> EpochInterval
-> Coin
-> Coin
-> EpochInterval
-> NonNegativeInterval
-> CostModel
-> UpgradeConwayPParams Identity
HKD Identity PoolVotingThresholds
-> HKD Identity DRepVotingThresholds
-> HKD Identity Word16
-> HKD Identity EpochInterval
-> HKD Identity EpochInterval
-> HKD Identity Coin
-> HKD Identity Coin
-> HKD Identity EpochInterval
-> HKD Identity NonNegativeInterval
-> HKD Identity CostModel
-> UpgradeConwayPParams Identity
forall (f :: * -> *).
HKD f PoolVotingThresholds
-> HKD f DRepVotingThresholds
-> HKD f Word16
-> HKD f EpochInterval
-> HKD f EpochInterval
-> HKD f Coin
-> HKD f Coin
-> HKD f EpochInterval
-> HKD f NonNegativeInterval
-> HKD f CostModel
-> UpgradeConwayPParams f
UpgradeConwayPParams
      (PoolVotingThresholds
 -> DRepVotingThresholds
 -> Word16
 -> EpochInterval
 -> EpochInterval
 -> Coin
 -> Coin
 -> EpochInterval
 -> NonNegativeInterval
 -> CostModel
 -> UpgradeConwayPParams Identity)
-> Gen PoolVotingThresholds
-> Gen
     (DRepVotingThresholds
      -> Word16
      -> EpochInterval
      -> EpochInterval
      -> Coin
      -> Coin
      -> EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen PoolVotingThresholds
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (DRepVotingThresholds
   -> Word16
   -> EpochInterval
   -> EpochInterval
   -> Coin
   -> Coin
   -> EpochInterval
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen DRepVotingThresholds
-> Gen
     (Word16
      -> EpochInterval
      -> EpochInterval
      -> Coin
      -> Coin
      -> EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen DRepVotingThresholds
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Word16
   -> EpochInterval
   -> EpochInterval
   -> Coin
   -> Coin
   -> EpochInterval
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen Word16
-> Gen
     (EpochInterval
      -> EpochInterval
      -> Coin
      -> Coin
      -> EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
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
  (EpochInterval
   -> EpochInterval
   -> Coin
   -> Coin
   -> EpochInterval
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen EpochInterval
-> Gen
     (EpochInterval
      -> Coin
      -> Coin
      -> EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
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
  (EpochInterval
   -> Coin
   -> Coin
   -> EpochInterval
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen EpochInterval
-> Gen
     (Coin
      -> Coin
      -> EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
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
  (Coin
   -> Coin
   -> EpochInterval
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen Coin
-> Gen
     (Coin
      -> EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
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
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen Coin
-> Gen
     (EpochInterval
      -> NonNegativeInterval
      -> CostModel
      -> UpgradeConwayPParams Identity)
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
   -> NonNegativeInterval
   -> CostModel
   -> UpgradeConwayPParams Identity)
-> Gen EpochInterval
-> Gen
     (NonNegativeInterval -> CostModel -> UpgradeConwayPParams Identity)
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
  (NonNegativeInterval -> CostModel -> UpgradeConwayPParams Identity)
-> Gen NonNegativeInterval
-> Gen (CostModel -> UpgradeConwayPParams Identity)
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 (CostModel -> UpgradeConwayPParams Identity)
-> Gen CostModel -> Gen (UpgradeConwayPParams Identity)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Language -> Gen CostModel
genValidCostModel Language
PlutusV3

instance Arbitrary Delegatee where
  arbitrary :: Gen Delegatee
arbitrary =
    [Gen Delegatee] -> Gen Delegatee
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ KeyHash StakePool -> Delegatee
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
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
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 ConwayDelegCert where
  arbitrary :: Gen ConwayDelegCert
arbitrary =
    [Gen ConwayDelegCert] -> Gen ConwayDelegCert
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Credential Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayRegCert (Credential Staking -> StrictMaybe Coin -> ConwayDelegCert)
-> Gen (Credential Staking)
-> Gen (StrictMaybe Coin -> ConwayDelegCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential Staking)
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe Coin -> ConwayDelegCert)
-> Gen (StrictMaybe Coin) -> Gen ConwayDelegCert
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
      , Credential Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayUnRegCert (Credential Staking -> StrictMaybe Coin -> ConwayDelegCert)
-> Gen (Credential Staking)
-> Gen (StrictMaybe Coin -> ConwayDelegCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential Staking)
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe Coin -> ConwayDelegCert)
-> Gen (StrictMaybe Coin) -> Gen ConwayDelegCert
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
      , Credential Staking -> Delegatee -> ConwayDelegCert
ConwayDelegCert (Credential Staking -> Delegatee -> ConwayDelegCert)
-> Gen (Credential Staking) -> Gen (Delegatee -> ConwayDelegCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential Staking)
forall a. Arbitrary a => Gen a
arbitrary Gen (Delegatee -> ConwayDelegCert)
-> Gen Delegatee -> Gen ConwayDelegCert
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Delegatee
forall a. Arbitrary a => Gen a
arbitrary
      , Credential Staking -> Delegatee -> Coin -> ConwayDelegCert
ConwayRegDelegCert (Credential Staking -> Delegatee -> Coin -> ConwayDelegCert)
-> Gen (Credential Staking)
-> Gen (Delegatee -> Coin -> ConwayDelegCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential Staking)
forall a. Arbitrary a => Gen a
arbitrary Gen (Delegatee -> Coin -> ConwayDelegCert)
-> Gen Delegatee -> Gen (Coin -> ConwayDelegCert)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Delegatee
forall a. Arbitrary a => Gen a
arbitrary Gen (Coin -> ConwayDelegCert) -> Gen Coin -> Gen ConwayDelegCert
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
      ]

instance Era era => Arbitrary (ConwayTxCert era) where
  arbitrary :: Gen (ConwayTxCert era)
arbitrary =
    [Gen (ConwayTxCert era)] -> Gen (ConwayTxCert era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> Gen ConwayDelegCert -> Gen (ConwayTxCert era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen ConwayDelegCert
forall a. Arbitrary a => Gen a
arbitrary
      , PoolCert -> ConwayTxCert era
forall era. PoolCert -> ConwayTxCert era
ConwayTxCertPool (PoolCert -> ConwayTxCert era)
-> Gen PoolCert -> Gen (ConwayTxCert era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen PoolCert
forall a. Arbitrary a => Gen a
arbitrary
      , ConwayGovCert -> ConwayTxCert era
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert era)
-> Gen ConwayGovCert -> Gen (ConwayTxCert era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen ConwayGovCert
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance Arbitrary ConwayGovCert where
  arbitrary :: Gen ConwayGovCert
arbitrary =
    [Gen ConwayGovCert] -> Gen ConwayGovCert
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Credential DRepRole -> Coin -> StrictMaybe Anchor -> ConwayGovCert
ConwayRegDRep (Credential DRepRole
 -> Coin -> StrictMaybe Anchor -> ConwayGovCert)
-> Gen (Credential DRepRole)
-> Gen (Coin -> StrictMaybe Anchor -> ConwayGovCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential DRepRole)
forall a. Arbitrary a => Gen a
arbitrary Gen (Coin -> StrictMaybe Anchor -> ConwayGovCert)
-> Gen Coin -> Gen (StrictMaybe Anchor -> ConwayGovCert)
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 (StrictMaybe Anchor -> ConwayGovCert)
-> Gen (StrictMaybe Anchor) -> Gen ConwayGovCert
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
      , Credential DRepRole -> Coin -> ConwayGovCert
ConwayUnRegDRep (Credential DRepRole -> Coin -> ConwayGovCert)
-> Gen (Credential DRepRole) -> Gen (Coin -> ConwayGovCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential DRepRole)
forall a. Arbitrary a => Gen a
arbitrary Gen (Coin -> ConwayGovCert) -> Gen Coin -> Gen ConwayGovCert
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
      , Credential ColdCommitteeRole
-> Credential HotCommitteeRole -> ConwayGovCert
ConwayAuthCommitteeHotKey (Credential ColdCommitteeRole
 -> Credential HotCommitteeRole -> ConwayGovCert)
-> Gen (Credential ColdCommitteeRole)
-> Gen (Credential HotCommitteeRole -> ConwayGovCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential ColdCommitteeRole)
forall a. Arbitrary a => Gen a
arbitrary Gen (Credential HotCommitteeRole -> ConwayGovCert)
-> Gen (Credential HotCommitteeRole) -> Gen ConwayGovCert
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 HotCommitteeRole)
forall a. Arbitrary a => Gen a
arbitrary
      , Credential ColdCommitteeRole -> StrictMaybe Anchor -> ConwayGovCert
ConwayResignCommitteeColdKey (Credential ColdCommitteeRole
 -> StrictMaybe Anchor -> ConwayGovCert)
-> Gen (Credential ColdCommitteeRole)
-> Gen (StrictMaybe Anchor -> ConwayGovCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential ColdCommitteeRole)
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe Anchor -> ConwayGovCert)
-> Gen (StrictMaybe Anchor) -> Gen ConwayGovCert
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
      ]

deriving instance Arbitrary (ConwayInstantStake era)

instance
  ( EraPParams era
  , Arbitrary (InstantStake era)
  , Arbitrary (PParams era)
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  Arbitrary (ConwayGovState era)
  where
  arbitrary :: Gen (ConwayGovState era)
arbitrary =
    Proposals era
-> StrictMaybe (Committee era)
-> Constitution era
-> PParams era
-> PParams era
-> FuturePParams era
-> DRepPulsingState era
-> ConwayGovState era
forall era.
Proposals era
-> StrictMaybe (Committee era)
-> Constitution era
-> PParams era
-> PParams era
-> FuturePParams era
-> DRepPulsingState era
-> ConwayGovState era
ConwayGovState
      (Proposals era
 -> StrictMaybe (Committee era)
 -> Constitution era
 -> PParams era
 -> PParams era
 -> FuturePParams era
 -> DRepPulsingState era
 -> ConwayGovState era)
-> Gen (Proposals era)
-> Gen
     (StrictMaybe (Committee era)
      -> Constitution era
      -> PParams era
      -> PParams era
      -> FuturePParams era
      -> DRepPulsingState era
      -> ConwayGovState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Proposals era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe (Committee era)
   -> Constitution era
   -> PParams era
   -> PParams era
   -> FuturePParams era
   -> DRepPulsingState era
   -> ConwayGovState era)
-> Gen (StrictMaybe (Committee era))
-> Gen
     (Constitution era
      -> PParams era
      -> PParams era
      -> FuturePParams era
      -> DRepPulsingState era
      -> ConwayGovState 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 (Committee era))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Constitution era
   -> PParams era
   -> PParams era
   -> FuturePParams era
   -> DRepPulsingState era
   -> ConwayGovState era)
-> Gen (Constitution era)
-> Gen
     (PParams era
      -> PParams era
      -> FuturePParams era
      -> DRepPulsingState era
      -> ConwayGovState 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
      Gen
  (PParams era
   -> PParams era
   -> FuturePParams era
   -> DRepPulsingState era
   -> ConwayGovState era)
-> Gen (PParams era)
-> Gen
     (PParams era
      -> FuturePParams era -> DRepPulsingState era -> ConwayGovState 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 (PParams era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (PParams era
   -> FuturePParams era -> DRepPulsingState era -> ConwayGovState era)
-> Gen (PParams era)
-> Gen
     (FuturePParams era -> DRepPulsingState era -> ConwayGovState 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 (PParams era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (FuturePParams era -> DRepPulsingState era -> ConwayGovState era)
-> Gen (FuturePParams era)
-> Gen (DRepPulsingState era -> ConwayGovState 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 (FuturePParams era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (DRepPulsingState era -> ConwayGovState era)
-> Gen (DRepPulsingState era) -> Gen (ConwayGovState 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 (DRepPulsingState era)
forall a. Arbitrary a => Gen a
arbitrary

  shrink :: ConwayGovState era -> [ConwayGovState era]
shrink = ConwayGovState era -> [ConwayGovState era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance
  (Era era, Arbitrary (PParams era), Arbitrary (PParamsUpdate era)) =>
  Arbitrary (RatifyState era)
  where
  arbitrary :: Gen (RatifyState era)
arbitrary =
    EnactState era
-> Seq (GovActionState era)
-> Set GovActionId
-> Bool
-> RatifyState era
forall era.
EnactState era
-> Seq (GovActionState era)
-> Set GovActionId
-> Bool
-> RatifyState era
RatifyState
      (EnactState era
 -> Seq (GovActionState era)
 -> Set GovActionId
 -> Bool
 -> RatifyState era)
-> Gen (EnactState era)
-> Gen
     (Seq (GovActionState era)
      -> Set GovActionId -> Bool -> RatifyState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (EnactState era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Seq (GovActionState era)
   -> Set GovActionId -> Bool -> RatifyState era)
-> Gen (Seq (GovActionState era))
-> Gen (Set GovActionId -> Bool -> RatifyState 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 (Seq (GovActionState era))
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Set GovActionId -> Bool -> RatifyState era)
-> Gen (Set GovActionId) -> Gen (Bool -> RatifyState 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 GovActionId)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Bool -> RatifyState era) -> Gen Bool -> Gen (RatifyState 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 Bool
forall a. Arbitrary a => Gen a
arbitrary

  shrink :: RatifyState era -> [RatifyState era]
shrink (RatifyState EnactState era
a Seq (GovActionState era)
b Set GovActionId
c Bool
d) =
    [ EnactState era
-> Seq (GovActionState era)
-> Set GovActionId
-> Bool
-> RatifyState era
forall era.
EnactState era
-> Seq (GovActionState era)
-> Set GovActionId
-> Bool
-> RatifyState era
RatifyState EnactState era
a' ([GovActionState era] -> Seq (GovActionState era)
forall a. [a] -> Seq a
Seq.fromList [GovActionState era]
b') Set GovActionId
c' Bool
d'
    | (EnactState era
a', [GovActionState era]
b', Set GovActionId
c', Bool
d') <- (EnactState era, [GovActionState era], Set GovActionId, Bool)
-> [(EnactState era, [GovActionState era], Set GovActionId, Bool)]
forall a. Arbitrary a => a -> [a]
shrink (EnactState era
a, Seq (GovActionState era) -> [GovActionState era]
forall a. Seq a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Seq (GovActionState era)
b, Set GovActionId
c, Bool
d)
    ]

instance
  (Era era, Arbitrary (InstantStake era), Arbitrary (Accounts era)) =>
  Arbitrary (RatifyEnv era)
  where
  arbitrary :: Gen (RatifyEnv era)
arbitrary =
    InstantStake era
-> PoolDistr
-> Map DRep (CompactForm Coin)
-> Map (Credential DRepRole) DRepState
-> EpochNo
-> CommitteeState era
-> Accounts era
-> Map (KeyHash StakePool) StakePoolState
-> RatifyEnv era
forall era.
InstantStake era
-> PoolDistr
-> Map DRep (CompactForm Coin)
-> Map (Credential DRepRole) DRepState
-> EpochNo
-> CommitteeState era
-> Accounts era
-> Map (KeyHash StakePool) StakePoolState
-> RatifyEnv era
RatifyEnv
      (InstantStake era
 -> PoolDistr
 -> Map DRep (CompactForm Coin)
 -> Map (Credential DRepRole) DRepState
 -> EpochNo
 -> CommitteeState era
 -> Accounts era
 -> Map (KeyHash StakePool) StakePoolState
 -> RatifyEnv era)
-> Gen (InstantStake era)
-> Gen
     (PoolDistr
      -> Map DRep (CompactForm Coin)
      -> Map (Credential DRepRole) DRepState
      -> EpochNo
      -> CommitteeState era
      -> Accounts era
      -> Map (KeyHash StakePool) StakePoolState
      -> RatifyEnv era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (InstantStake era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (PoolDistr
   -> Map DRep (CompactForm Coin)
   -> Map (Credential DRepRole) DRepState
   -> EpochNo
   -> CommitteeState era
   -> Accounts era
   -> Map (KeyHash StakePool) StakePoolState
   -> RatifyEnv era)
-> Gen PoolDistr
-> Gen
     (Map DRep (CompactForm Coin)
      -> Map (Credential DRepRole) DRepState
      -> EpochNo
      -> CommitteeState era
      -> Accounts era
      -> Map (KeyHash StakePool) StakePoolState
      -> RatifyEnv 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 PoolDistr
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Map DRep (CompactForm Coin)
   -> Map (Credential DRepRole) DRepState
   -> EpochNo
   -> CommitteeState era
   -> Accounts era
   -> Map (KeyHash StakePool) StakePoolState
   -> RatifyEnv era)
-> Gen (Map DRep (CompactForm Coin))
-> Gen
     (Map (Credential DRepRole) DRepState
      -> EpochNo
      -> CommitteeState era
      -> Accounts era
      -> Map (KeyHash StakePool) StakePoolState
      -> RatifyEnv 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 DRep (CompactForm Coin))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Map (Credential DRepRole) DRepState
   -> EpochNo
   -> CommitteeState era
   -> Accounts era
   -> Map (KeyHash StakePool) StakePoolState
   -> RatifyEnv era)
-> Gen (Map (Credential DRepRole) DRepState)
-> Gen
     (EpochNo
      -> CommitteeState era
      -> Accounts era
      -> Map (KeyHash StakePool) StakePoolState
      -> RatifyEnv 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 DRepRole) DRepState)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (EpochNo
   -> CommitteeState era
   -> Accounts era
   -> Map (KeyHash StakePool) StakePoolState
   -> RatifyEnv era)
-> Gen EpochNo
-> Gen
     (CommitteeState era
      -> Accounts era
      -> Map (KeyHash StakePool) StakePoolState
      -> RatifyEnv 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 EpochNo
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (CommitteeState era
   -> Accounts era
   -> Map (KeyHash StakePool) StakePoolState
   -> RatifyEnv era)
-> Gen (CommitteeState era)
-> Gen
     (Accounts era
      -> Map (KeyHash StakePool) StakePoolState -> RatifyEnv 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 (CommitteeState era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Accounts era
   -> Map (KeyHash StakePool) StakePoolState -> RatifyEnv era)
-> Gen (Accounts era)
-> Gen (Map (KeyHash StakePool) StakePoolState -> RatifyEnv 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 (Accounts era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Map (KeyHash StakePool) StakePoolState -> RatifyEnv era)
-> Gen (Map (KeyHash StakePool) StakePoolState)
-> Gen (RatifyEnv 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 (KeyHash StakePool) StakePoolState)
forall a. Arbitrary a => Gen a
arbitrary

instance
  (Era era, Arbitrary (PParams era)) =>
  Arbitrary (EnactState era)
  where
  arbitrary :: Gen (EnactState era)
arbitrary =
    StrictMaybe (Committee era)
-> Constitution era
-> PParams era
-> PParams era
-> Coin
-> Map (Credential Staking) Coin
-> GovRelation StrictMaybe
-> EnactState era
forall era.
StrictMaybe (Committee era)
-> Constitution era
-> PParams era
-> PParams era
-> Coin
-> Map (Credential Staking) Coin
-> GovRelation StrictMaybe
-> EnactState era
EnactState
      (StrictMaybe (Committee era)
 -> Constitution era
 -> PParams era
 -> PParams era
 -> Coin
 -> Map (Credential Staking) Coin
 -> GovRelation StrictMaybe
 -> EnactState era)
-> Gen (StrictMaybe (Committee era))
-> Gen
     (Constitution era
      -> PParams era
      -> PParams era
      -> Coin
      -> Map (Credential Staking) Coin
      -> GovRelation StrictMaybe
      -> EnactState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (Committee era))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Constitution era
   -> PParams era
   -> PParams era
   -> Coin
   -> Map (Credential Staking) Coin
   -> GovRelation StrictMaybe
   -> EnactState era)
-> Gen (Constitution era)
-> Gen
     (PParams era
      -> PParams era
      -> Coin
      -> Map (Credential Staking) Coin
      -> GovRelation StrictMaybe
      -> EnactState 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
      Gen
  (PParams era
   -> PParams era
   -> Coin
   -> Map (Credential Staking) Coin
   -> GovRelation StrictMaybe
   -> EnactState era)
-> Gen (PParams era)
-> Gen
     (PParams era
      -> Coin
      -> Map (Credential Staking) Coin
      -> GovRelation StrictMaybe
      -> EnactState 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 (PParams era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (PParams era
   -> Coin
   -> Map (Credential Staking) Coin
   -> GovRelation StrictMaybe
   -> EnactState era)
-> Gen (PParams era)
-> Gen
     (Coin
      -> Map (Credential Staking) Coin
      -> GovRelation StrictMaybe
      -> EnactState 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 (PParams era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Map (Credential Staking) Coin
   -> GovRelation StrictMaybe
   -> EnactState era)
-> Gen Coin
-> Gen
     (Map (Credential Staking) Coin
      -> GovRelation StrictMaybe -> EnactState 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
  (Map (Credential Staking) Coin
   -> GovRelation StrictMaybe -> EnactState era)
-> Gen (Map (Credential Staking) Coin)
-> Gen (GovRelation StrictMaybe -> EnactState 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 Staking) Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (GovRelation StrictMaybe -> EnactState era)
-> Gen (GovRelation StrictMaybe) -> Gen (EnactState 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 (GovRelation StrictMaybe)
forall a. Arbitrary a => Gen a
arbitrary

  shrink :: EnactState era -> [EnactState era]
shrink = EnactState era -> [EnactState era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Arbitrary (VState era) where
  arbitrary :: Gen (VState era)
arbitrary = Map (Credential DRepRole) DRepState
-> CommitteeState era -> EpochNo -> VState era
forall era.
Map (Credential DRepRole) DRepState
-> CommitteeState era -> EpochNo -> VState era
VState (Map (Credential DRepRole) DRepState
 -> CommitteeState era -> EpochNo -> VState era)
-> Gen (Map (Credential DRepRole) DRepState)
-> Gen (CommitteeState era -> EpochNo -> VState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Map (Credential DRepRole) DRepState)
forall a. Arbitrary a => Gen a
arbitrary Gen (CommitteeState era -> EpochNo -> VState era)
-> Gen (CommitteeState era) -> Gen (EpochNo -> VState 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 (CommitteeState era)
forall a. Arbitrary a => Gen a
arbitrary Gen (EpochNo -> VState era) -> Gen EpochNo -> Gen (VState 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 EpochNo
forall a. Arbitrary a => Gen a
arbitrary

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "LEDGERS" era))
  ) =>
  Arbitrary (ConwayBbodyPredFailure era)
  where
  arbitrary :: Gen (ConwayBbodyPredFailure era)
arbitrary = Gen (ConwayBbodyPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( EraTxOut era
  , Arbitrary (Value era)
  , Arbitrary (TxOut era)
  , Arbitrary (PredicateFailure (EraRule "UTXOS" era))
  ) =>
  Arbitrary (ConwayUtxoPredFailure era)
  where
  arbitrary :: Gen (ConwayUtxoPredFailure era)
arbitrary = Gen (ConwayUtxoPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "UTXO" era))
  , Arbitrary (TxCert era)
  , Arbitrary (PlutusPurpose AsItem era)
  , Arbitrary (PlutusPurpose AsIx era)
  ) =>
  Arbitrary (ConwayUtxowPredFailure era)
  where
  arbitrary :: Gen (ConwayUtxowPredFailure era)
arbitrary = Gen (ConwayUtxowPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

_uniqueIdGovActions ::
  (Era era, Arbitrary (PParamsUpdate era)) =>
  Gen (SSeq.StrictSeq (GovActionState era))
_uniqueIdGovActions :: forall era.
(Era era, Arbitrary (PParamsUpdate era)) =>
Gen (StrictSeq (GovActionState era))
_uniqueIdGovActions = [GovActionState era] -> StrictSeq (GovActionState era)
forall a. [a] -> StrictSeq a
SSeq.fromList ([GovActionState era] -> StrictSeq (GovActionState era))
-> ([GovActionState era] -> [GovActionState era])
-> [GovActionState era]
-> StrictSeq (GovActionState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (GovActionState era -> GovActionState era -> Bool)
-> [GovActionState era] -> [GovActionState era]
forall a. (a -> a -> Bool) -> [a] -> [a]
nubBy (\GovActionState era
x GovActionState era
y -> GovActionState era -> GovActionId
forall era. GovActionState era -> GovActionId
gasId GovActionState era
x GovActionId -> GovActionId -> Bool
forall a. Eq a => a -> a -> Bool
== GovActionState era -> GovActionId
forall era. GovActionState era -> GovActionId
gasId GovActionState era
y) ([GovActionState era] -> StrictSeq (GovActionState era))
-> Gen [GovActionState era] -> Gen (StrictSeq (GovActionState era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [GovActionState era]
forall a. Arbitrary a => Gen a
arbitrary

instance
  (forall p. Arbitrary (f (GovPurposeId (p :: GovActionPurpose)))) =>
  Arbitrary (GovRelation f)
  where
  arbitrary :: Gen (GovRelation f)
arbitrary = f (GovPurposeId 'PParamUpdatePurpose)
-> f (GovPurposeId 'HardForkPurpose)
-> f (GovPurposeId 'CommitteePurpose)
-> f (GovPurposeId 'ConstitutionPurpose)
-> GovRelation f
forall (f :: * -> *).
f (GovPurposeId 'PParamUpdatePurpose)
-> f (GovPurposeId 'HardForkPurpose)
-> f (GovPurposeId 'CommitteePurpose)
-> f (GovPurposeId 'ConstitutionPurpose)
-> GovRelation f
GovRelation (f (GovPurposeId 'PParamUpdatePurpose)
 -> f (GovPurposeId 'HardForkPurpose)
 -> f (GovPurposeId 'CommitteePurpose)
 -> f (GovPurposeId 'ConstitutionPurpose)
 -> GovRelation f)
-> Gen (f (GovPurposeId 'PParamUpdatePurpose))
-> Gen
     (f (GovPurposeId 'HardForkPurpose)
      -> f (GovPurposeId 'CommitteePurpose)
      -> f (GovPurposeId 'ConstitutionPurpose)
      -> GovRelation f)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (f (GovPurposeId 'PParamUpdatePurpose))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (f (GovPurposeId 'HardForkPurpose)
   -> f (GovPurposeId 'CommitteePurpose)
   -> f (GovPurposeId 'ConstitutionPurpose)
   -> GovRelation f)
-> Gen (f (GovPurposeId 'HardForkPurpose))
-> Gen
     (f (GovPurposeId 'CommitteePurpose)
      -> f (GovPurposeId 'ConstitutionPurpose) -> GovRelation f)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (f (GovPurposeId 'HardForkPurpose))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (f (GovPurposeId 'CommitteePurpose)
   -> f (GovPurposeId 'ConstitutionPurpose) -> GovRelation f)
-> Gen (f (GovPurposeId 'CommitteePurpose))
-> Gen (f (GovPurposeId 'ConstitutionPurpose) -> GovRelation f)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (f (GovPurposeId 'CommitteePurpose))
forall a. Arbitrary a => Gen a
arbitrary Gen (f (GovPurposeId 'ConstitutionPurpose) -> GovRelation f)
-> Gen (f (GovPurposeId 'ConstitutionPurpose))
-> Gen (GovRelation f)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (f (GovPurposeId 'ConstitutionPurpose))
forall a. Arbitrary a => Gen a
arbitrary

data ProposalsForEnactment era
  = ProposalsForEnactment
  { forall era. ProposalsForEnactment era -> Proposals era
pfeProposals :: Proposals era
  , forall era. ProposalsForEnactment era -> Seq (GovActionState era)
pfeToEnact :: Seq.Seq (GovActionState era)
  , forall era. ProposalsForEnactment era -> Set GovActionId
pfeToRemove :: Set.Set GovActionId
  , forall era. ProposalsForEnactment era -> Set GovActionId
pfeToRetain :: Set.Set GovActionId
  -- ^ Those that are retained can only be the ones that don't have any lineage
  }
  deriving (Int -> ProposalsForEnactment era -> ShowS
[ProposalsForEnactment era] -> ShowS
ProposalsForEnactment era -> String
(Int -> ProposalsForEnactment era -> ShowS)
-> (ProposalsForEnactment era -> String)
-> ([ProposalsForEnactment era] -> ShowS)
-> Show (ProposalsForEnactment era)
forall era.
EraPParams era =>
Int -> ProposalsForEnactment era -> ShowS
forall era. EraPParams era => [ProposalsForEnactment era] -> ShowS
forall era. EraPParams era => ProposalsForEnactment era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era.
EraPParams era =>
Int -> ProposalsForEnactment era -> ShowS
showsPrec :: Int -> ProposalsForEnactment era -> ShowS
$cshow :: forall era. EraPParams era => ProposalsForEnactment era -> String
show :: ProposalsForEnactment era -> String
$cshowList :: forall era. EraPParams era => [ProposalsForEnactment era] -> ShowS
showList :: [ProposalsForEnactment era] -> ShowS
Show, ProposalsForEnactment era -> ProposalsForEnactment era -> Bool
(ProposalsForEnactment era -> ProposalsForEnactment era -> Bool)
-> (ProposalsForEnactment era -> ProposalsForEnactment era -> Bool)
-> Eq (ProposalsForEnactment era)
forall era.
EraPParams era =>
ProposalsForEnactment era -> ProposalsForEnactment era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
EraPParams era =>
ProposalsForEnactment era -> ProposalsForEnactment era -> Bool
== :: ProposalsForEnactment era -> ProposalsForEnactment era -> Bool
$c/= :: forall era.
EraPParams era =>
ProposalsForEnactment era -> ProposalsForEnactment era -> Bool
/= :: ProposalsForEnactment era -> ProposalsForEnactment era -> Bool
Eq)

instance
  (EraPParams era, Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era)) =>
  Arbitrary (ProposalsForEnactment era)
  where
  arbitrary :: Gen (ProposalsForEnactment era)
arbitrary = do
    ps <- forall era.
(HasCallStack, EraPParams era,
 Arbitrary (PParamsHKD StrictMaybe era)) =>
(Int, Int) -> Gen (Proposals era)
genProposals @era (Int
2, Int
50)
    let gasHasNoLineage GovActionState era
gas =
          case GovActionState era -> GovAction era
forall era. GovActionState era -> GovAction era
gasAction GovActionState era
gas of
            InfoAction {} -> Bool
True
            TreasuryWithdrawals {} -> Bool
True
            GovAction era
_ -> Bool
False
        hasNoLineage GovActionId
gaId =
          case GovActionId -> Proposals era -> Maybe (GovActionState era)
forall era.
GovActionId -> Proposals era -> Maybe (GovActionState era)
proposalsLookupId GovActionId
gaId Proposals era
ps of
            Maybe (GovActionState era)
Nothing -> String -> Bool
forall a. HasCallStack => String -> a
error (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ String
"Expected " String -> ShowS
forall a. [a] -> [a] -> [a]
++ GovActionId -> String
forall a. Show a => a -> String
show GovActionId
gaId String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" in generated proposals"
            Just GovActionState era
gas -> GovActionState era -> Bool
forall {era}. GovActionState era -> Bool
gasHasNoLineage GovActionState era
gas
    pparamUpdates <- chooseLineage grPParamUpdateL ps Seq.Empty
    hardForks <- chooseLineage grHardForkL ps Seq.Empty
    committees <- chooseLineage grCommitteeL ps Seq.Empty
    constitutions <- chooseLineage grConstitutionL ps Seq.Empty
    noLineageMap <- uniformSubMap Nothing (Map.filter gasHasNoLineage $ proposalsActionsMap ps) QC
    noLineage <- Seq.fromList <$> shuffle (Map.elems noLineageMap)
    sequencedGass <-
      sequenceLineages
        ( Seq.filter
            (not . Seq.null)
            (Seq.fromList [pparamUpdates, hardForks, committees, constitutions, noLineage])
        )
        Seq.Empty
    let notEnacted =
          [GovActionId] -> Set GovActionId
forall a. Ord a => [a] -> Set a
Set.fromList (StrictSeq GovActionId -> [GovActionId]
forall a. StrictSeq a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList (StrictSeq GovActionId -> [GovActionId])
-> StrictSeq GovActionId -> [GovActionId]
forall a b. (a -> b) -> a -> b
$ Proposals era -> StrictSeq GovActionId
forall era. Proposals era -> StrictSeq GovActionId
proposalsIds Proposals era
ps)
            Set GovActionId -> Set GovActionId -> Set GovActionId
forall a. Ord a => Set a -> Set a -> Set a
`Set.difference` [GovActionId] -> Set GovActionId
forall a. Ord a => [a] -> Set a
Set.fromList (GovActionState era -> GovActionId
forall era. GovActionState era -> GovActionId
gasId (GovActionState era -> GovActionId)
-> [GovActionState era] -> [GovActionId]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Seq (GovActionState era) -> [GovActionState era]
forall a. Seq a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Seq (GovActionState era)
sequencedGass)
    let (retained, removedDueToConflict) = Set.partition hasNoLineage notEnacted
    pure $
      ProposalsForEnactment
        { pfeProposals = ps
        , pfeToEnact = sequencedGass
        , pfeToRemove = removedDueToConflict
        , pfeToRetain = retained
        }
    where
      -- Starting from the root select a path in the tree until a leaf is reached.
      chooseLineage ::
        (forall f. Lens' (GovRelation f) (f (GovPurposeId p))) ->
        Proposals era ->
        Seq.Seq (GovActionState era) ->
        Gen (Seq.Seq (GovActionState era))
      chooseLineage :: forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p) -> f (f (GovPurposeId p)))
 -> GovRelation f -> f (GovRelation f))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p) -> f (f (GovPurposeId p)))
-> GovRelation f -> f (GovRelation f)
govRelL Proposals era
ps = \case
        Seq (GovActionState era)
Seq.Empty ->
          let children :: Set (GovPurposeId p)
children = Proposals era
ps Proposals era
-> Getting
     (Set (GovPurposeId p)) (Proposals era) (Set (GovPurposeId p))
-> Set (GovPurposeId p)
forall s a. s -> Getting a s a -> a
^. (GovRelation PRoot
 -> Const (Set (GovPurposeId p)) (GovRelation PRoot))
-> Proposals era -> Const (Set (GovPurposeId p)) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PRoot -> f (GovRelation PRoot))
-> Proposals era -> f (Proposals era)
pRootsL ((GovRelation PRoot
  -> Const (Set (GovPurposeId p)) (GovRelation PRoot))
 -> Proposals era -> Const (Set (GovPurposeId p)) (Proposals era))
-> ((Set (GovPurposeId p)
     -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
    -> GovRelation PRoot
    -> Const (Set (GovPurposeId p)) (GovRelation PRoot))
-> Getting
     (Set (GovPurposeId p)) (Proposals era) (Set (GovPurposeId p))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PRoot (GovPurposeId p)
 -> Const (Set (GovPurposeId p)) (PRoot (GovPurposeId p)))
-> GovRelation PRoot
-> Const (Set (GovPurposeId p)) (GovRelation PRoot)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p) -> f (f (GovPurposeId p)))
-> GovRelation f -> f (GovRelation f)
govRelL ((PRoot (GovPurposeId p)
  -> Const (Set (GovPurposeId p)) (PRoot (GovPurposeId p)))
 -> GovRelation PRoot
 -> Const (Set (GovPurposeId p)) (GovRelation PRoot))
-> ((Set (GovPurposeId p)
     -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
    -> PRoot (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (PRoot (GovPurposeId p)))
-> (Set (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
-> GovRelation PRoot
-> Const (Set (GovPurposeId p)) (GovRelation PRoot)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (GovPurposeId p)
 -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
-> PRoot (GovPurposeId p)
-> Const (Set (GovPurposeId p)) (PRoot (GovPurposeId p))
forall a (f :: * -> *).
Functor f =>
(Set a -> f (Set a)) -> PRoot a -> f (PRoot a)
prChildrenL
           in if Set (GovPurposeId p) -> Bool
forall a. Set a -> Bool
Set.null Set (GovPurposeId p)
children
                then Seq (GovActionState era) -> Gen (Seq (GovActionState era))
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Seq (GovActionState era)
forall a. Seq a
Seq.Empty
                else do
                  child <- [GovPurposeId p] -> Gen (GovPurposeId p)
forall a. HasCallStack => [a] -> Gen a
elements ([GovPurposeId p] -> Gen (GovPurposeId p))
-> [GovPurposeId p] -> Gen (GovPurposeId p)
forall a b. (a -> b) -> a -> b
$ Set (GovPurposeId p) -> [GovPurposeId p]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set (GovPurposeId p)
children
                  chooseLineage govRelL ps (Seq.Empty Seq.:|> (proposalsActionsMap ps Map.! unGovPurposeId child))
        lineage :: Seq (GovActionState era)
lineage@(Seq (GovActionState era)
_ Seq.:|> GovActionState era
gas) ->
          let children :: Set (GovPurposeId p)
children = Proposals era
ps Proposals era
-> Getting
     (Set (GovPurposeId p)) (Proposals era) (Set (GovPurposeId p))
-> Set (GovPurposeId p)
forall s a. s -> Getting a s a -> a
^. (GovRelation PGraph
 -> Const (Set (GovPurposeId p)) (GovRelation PGraph))
-> Proposals era -> Const (Set (GovPurposeId p)) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PGraph -> f (GovRelation PGraph))
-> Proposals era -> f (Proposals era)
pGraphL ((GovRelation PGraph
  -> Const (Set (GovPurposeId p)) (GovRelation PGraph))
 -> Proposals era -> Const (Set (GovPurposeId p)) (Proposals era))
-> ((Set (GovPurposeId p)
     -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
    -> GovRelation PGraph
    -> Const (Set (GovPurposeId p)) (GovRelation PGraph))
-> Getting
     (Set (GovPurposeId p)) (Proposals era) (Set (GovPurposeId p))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PGraph (GovPurposeId p)
 -> Const (Set (GovPurposeId p)) (PGraph (GovPurposeId p)))
-> GovRelation PGraph
-> Const (Set (GovPurposeId p)) (GovRelation PGraph)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p) -> f (f (GovPurposeId p)))
-> GovRelation f -> f (GovRelation f)
govRelL ((PGraph (GovPurposeId p)
  -> Const (Set (GovPurposeId p)) (PGraph (GovPurposeId p)))
 -> GovRelation PGraph
 -> Const (Set (GovPurposeId p)) (GovRelation PGraph))
-> ((Set (GovPurposeId p)
     -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
    -> PGraph (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (PGraph (GovPurposeId p)))
-> (Set (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
-> GovRelation PGraph
-> Const (Set (GovPurposeId p)) (GovRelation PGraph)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (GovPurposeId p) (PEdges (GovPurposeId p))
 -> Const
      (Set (GovPurposeId p))
      (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
-> PGraph (GovPurposeId p)
-> Const (Set (GovPurposeId p)) (PGraph (GovPurposeId p))
forall a (f :: * -> *).
Functor f =>
(Map a (PEdges a) -> f (Map a (PEdges a)))
-> PGraph a -> f (PGraph a)
pGraphNodesL ((Map (GovPurposeId p) (PEdges (GovPurposeId p))
  -> Const
       (Set (GovPurposeId p))
       (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
 -> PGraph (GovPurposeId p)
 -> Const (Set (GovPurposeId p)) (PGraph (GovPurposeId p)))
-> ((Set (GovPurposeId p)
     -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
    -> Map (GovPurposeId p) (PEdges (GovPurposeId p))
    -> Const
         (Set (GovPurposeId p))
         (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
-> (Set (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
-> PGraph (GovPurposeId p)
-> Const (Set (GovPurposeId p)) (PGraph (GovPurposeId p))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (GovPurposeId p) (PEdges (GovPurposeId p))
 -> PEdges (GovPurposeId p))
-> SimpleGetter
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
     (PEdges (GovPurposeId p))
forall s a. (s -> a) -> SimpleGetter s a
to (Map (GovPurposeId p) (PEdges (GovPurposeId p))
-> GovPurposeId p -> PEdges (GovPurposeId p)
forall k a. Ord k => Map k a -> k -> a
Map.! GovActionId -> GovPurposeId p
forall (p :: GovActionPurpose). GovActionId -> GovPurposeId p
GovPurposeId (GovActionState era -> GovActionId
forall era. GovActionState era -> GovActionId
gasId GovActionState era
gas)) Getting
  (Set (GovPurposeId p))
  (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
  (PEdges (GovPurposeId p))
-> ((Set (GovPurposeId p)
     -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
    -> PEdges (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (PEdges (GovPurposeId p)))
-> (Set (GovPurposeId p)
    -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
-> Map (GovPurposeId p) (PEdges (GovPurposeId p))
-> Const
     (Set (GovPurposeId p))
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (GovPurposeId p)
 -> Const (Set (GovPurposeId p)) (Set (GovPurposeId p)))
-> PEdges (GovPurposeId p)
-> Const (Set (GovPurposeId p)) (PEdges (GovPurposeId p))
forall a (f :: * -> *).
Functor f =>
(Set a -> f (Set a)) -> PEdges a -> f (PEdges a)
peChildrenL
           in if Set (GovPurposeId p) -> Bool
forall a. Set a -> Bool
Set.null Set (GovPurposeId p)
children
                then Seq (GovActionState era) -> Gen (Seq (GovActionState era))
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Seq (GovActionState era)
lineage
                else do
                  child <- [GovPurposeId p] -> Gen (GovPurposeId p)
forall a. HasCallStack => [a] -> Gen a
elements ([GovPurposeId p] -> Gen (GovPurposeId p))
-> [GovPurposeId p] -> Gen (GovPurposeId p)
forall a b. (a -> b) -> a -> b
$ Set (GovPurposeId p) -> [GovPurposeId p]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set (GovPurposeId p)
children
                  chooseLineage govRelL ps (lineage Seq.:|> (proposalsActionsMap ps Map.! unGovPurposeId child))
      consumeHeadAtIndex :: Int -> Seq.Seq (Seq.Seq a) -> (a, Seq.Seq (Seq.Seq a))
      consumeHeadAtIndex :: forall a. Int -> Seq (Seq a) -> (a, Seq (Seq a))
consumeHeadAtIndex Int
idx Seq (Seq a)
ss = (Seq (Seq a)
ss Seq (Seq a) -> Int -> Seq a
forall a. Seq a -> Int -> a
`Seq.index` Int
idx Seq a -> Int -> a
forall a. Seq a -> Int -> a
`Seq.index` Int
0, (Seq a -> Seq a) -> Int -> Seq (Seq a) -> Seq (Seq a)
forall a. (a -> a) -> Int -> Seq a -> Seq a
Seq.adjust' (Int -> Seq a -> Seq a
forall a. Int -> Seq a -> Seq a
Seq.drop Int
1) Int
idx Seq (Seq a)
ss)
      -- Mix lineages at random, while preserving relative order of each lineage
      sequenceLineages :: Seq.Seq (Seq.Seq a) -> Seq.Seq a -> Gen (Seq.Seq a)
      sequenceLineages :: forall a. Seq (Seq a) -> Seq a -> Gen (Seq a)
sequenceLineages Seq (Seq a)
lineages Seq a
sequenced = case Seq (Seq a)
lineages of
        Seq (Seq a)
Seq.Empty -> Seq a -> Gen (Seq a)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Seq a
sequenced
        Seq (Seq a)
_ -> do
          index <- (Int, Int) -> Gen Int
chooseInt (Int
0, Seq (Seq a) -> Int
forall a. Seq a -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length Seq (Seq a)
lineages Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
          let (chosen, adjustedLineages) = consumeHeadAtIndex index lineages
          sequenceLineages (Seq.filter (not . Seq.null) adjustedLineages) (sequenced Seq.:|> chosen)

data ProposalsNewActions era = ProposalsNewActions (Proposals era) [GovActionState era]
  deriving (Int -> ProposalsNewActions era -> ShowS
[ProposalsNewActions era] -> ShowS
ProposalsNewActions era -> String
(Int -> ProposalsNewActions era -> ShowS)
-> (ProposalsNewActions era -> String)
-> ([ProposalsNewActions era] -> ShowS)
-> Show (ProposalsNewActions era)
forall era.
EraPParams era =>
Int -> ProposalsNewActions era -> ShowS
forall era. EraPParams era => [ProposalsNewActions era] -> ShowS
forall era. EraPParams era => ProposalsNewActions era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era.
EraPParams era =>
Int -> ProposalsNewActions era -> ShowS
showsPrec :: Int -> ProposalsNewActions era -> ShowS
$cshow :: forall era. EraPParams era => ProposalsNewActions era -> String
show :: ProposalsNewActions era -> String
$cshowList :: forall era. EraPParams era => [ProposalsNewActions era] -> ShowS
showList :: [ProposalsNewActions era] -> ShowS
Show, ProposalsNewActions era -> ProposalsNewActions era -> Bool
(ProposalsNewActions era -> ProposalsNewActions era -> Bool)
-> (ProposalsNewActions era -> ProposalsNewActions era -> Bool)
-> Eq (ProposalsNewActions era)
forall era.
EraPParams era =>
ProposalsNewActions era -> ProposalsNewActions era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
EraPParams era =>
ProposalsNewActions era -> ProposalsNewActions era -> Bool
== :: ProposalsNewActions era -> ProposalsNewActions era -> Bool
$c/= :: forall era.
EraPParams era =>
ProposalsNewActions era -> ProposalsNewActions era -> Bool
/= :: ProposalsNewActions era -> ProposalsNewActions era -> Bool
Eq)

instance
  (EraPParams era, Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era)) =>
  Arbitrary (ProposalsNewActions era)
  where
  arbitrary :: Gen (ProposalsNewActions era)
arbitrary = do
    ps <- Gen (Proposals era)
forall a. Arbitrary a => Gen a
arbitrary
    i <- chooseInt (2, 20)
    gass <- vectorOf i $ genGovActionState =<< genGovAction ps
    pure $ ProposalsNewActions ps gass

instance
  (EraPParams era, Arbitrary (PParamsHKD StrictMaybe era)) =>
  Arbitrary (Proposals era)
  where
  arbitrary :: Gen (Proposals era)
arbitrary = (Int, Int) -> Gen (Proposals era)
forall era.
(HasCallStack, EraPParams era,
 Arbitrary (PParamsHKD StrictMaybe era)) =>
(Int, Int) -> Gen (Proposals era)
genProposals (Int
0, Int
30)
  shrink :: Proposals era -> [Proposals era]
shrink Proposals era
ps =
    [ Proposals era
ps'
    | Set GovActionId
gais' <- Set GovActionId -> [Set GovActionId]
forall a. Arbitrary a => a -> [a]
shrink Set GovActionId
gais
    , let (Proposals era
ps', Map GovActionId (GovActionState era)
_) = Set GovActionId
-> Proposals era
-> (Proposals era, Map GovActionId (GovActionState era))
forall era.
EraPParams era =>
Set GovActionId
-> Proposals era
-> (Proposals era, Map GovActionId (GovActionState era))
proposalsRemoveWithDescendants (Set GovActionId
gais Set GovActionId -> Set GovActionId -> Set GovActionId
forall a. Ord a => Set a -> Set a -> Set a
Set.\\ Set GovActionId
gais') Proposals era
ps
    ]
    where
      gais :: Set GovActionId
gais = [GovActionId] -> Set GovActionId
forall a. Ord a => [a] -> Set a
Set.fromList (StrictSeq GovActionId -> [GovActionId]
forall a. StrictSeq a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList (StrictSeq GovActionId -> [GovActionId])
-> StrictSeq GovActionId -> [GovActionId]
forall a b. (a -> b) -> a -> b
$ Proposals era -> StrictSeq GovActionId
forall era. Proposals era -> StrictSeq GovActionId
proposalsIds Proposals era
ps)

genProposals ::
  forall era.
  ( HasCallStack
  , EraPParams era
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  (Int, Int) ->
  Gen (Proposals era)
genProposals :: forall era.
(HasCallStack, EraPParams era,
 Arbitrary (PParamsHKD StrictMaybe era)) =>
(Int, Int) -> Gen (Proposals era)
genProposals (Int, Int)
range = do
  pgais <- Gen (GovRelation StrictMaybe)
forall a. Arbitrary a => Gen a
arbitrary
  i <- chooseInt range
  go (def & pRootsL .~ fromPrevGovActionIds pgais) i
  where
    go :: Proposals era -> Int -> Gen (Proposals era)
    go :: Proposals era -> Int -> Gen (Proposals era)
go !Proposals era
ps Int
n
      | Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
0 = Proposals era -> Gen (Proposals era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Proposals era
ps
      | Bool
otherwise = do
          gas <- forall era. GovAction era -> Gen (GovActionState era)
genGovActionState @era (GovAction era -> Gen (GovActionState era))
-> Gen (GovAction era) -> Gen (GovActionState era)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Proposals era -> Gen (GovAction era)
forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
Proposals era -> Gen (GovAction era)
genGovAction Proposals era
ps
          case proposalsAddAction gas ps of
            Maybe (Proposals era)
Nothing -> String -> Gen (Proposals era)
forall a. HasCallStack => String -> a
error String
"Error adding GovActionState to Proposals"
            Just Proposals era
ps' -> Proposals era -> Int -> Gen (Proposals era)
go Proposals era
ps' (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)

genGovAction ::
  forall era.
  (Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
  Proposals era ->
  Gen (GovAction era)
genGovAction :: forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
Proposals era -> Gen (GovAction era)
genGovAction Proposals era
ps =
  [Gen (GovAction era)] -> Gen (GovAction era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
    [ (StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'PParamUpdatePurpose)
     -> f (f (GovPurposeId 'PParamUpdatePurpose)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p) -> f (f (GovPurposeId p)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> Gen (GovAction era)
forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> Gen (GovAction era)
genPParamUpdateGovAction (f (GovPurposeId 'PParamUpdatePurpose)
 -> f (f (GovPurposeId 'PParamUpdatePurpose)))
-> GovRelation f -> f (GovRelation f)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'PParamUpdatePurpose)
 -> f (f (GovPurposeId 'PParamUpdatePurpose)))
-> GovRelation f -> f (GovRelation f)
grPParamUpdateL
    , (StrictMaybe (GovPurposeId 'HardForkPurpose)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'HardForkPurpose)
     -> f (f (GovPurposeId 'HardForkPurpose)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p) -> f (f (GovPurposeId p)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'HardForkPurpose) -> Gen (GovAction era)
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose) -> Gen (GovAction era)
genHardForkGovAction (f (GovPurposeId 'HardForkPurpose)
 -> f (f (GovPurposeId 'HardForkPurpose)))
-> GovRelation f -> f (GovRelation f)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'HardForkPurpose)
 -> f (f (GovPurposeId 'HardForkPurpose)))
-> GovRelation f -> f (GovRelation f)
grHardForkL
    , Gen (GovAction era)
forall era. Gen (GovAction era)
genTreasuryWithdrawals
    , (StrictMaybe (GovPurposeId 'CommitteePurpose)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'CommitteePurpose)
     -> f (f (GovPurposeId 'CommitteePurpose)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p) -> f (f (GovPurposeId p)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'CommitteePurpose) -> Gen (GovAction era)
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose) -> Gen (GovAction era)
genCommitteeGovAction (f (GovPurposeId 'CommitteePurpose)
 -> f (f (GovPurposeId 'CommitteePurpose)))
-> GovRelation f -> f (GovRelation f)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'CommitteePurpose)
 -> f (f (GovPurposeId 'CommitteePurpose)))
-> GovRelation f -> f (GovRelation f)
grCommitteeL
    , (StrictMaybe (GovPurposeId 'ConstitutionPurpose)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'ConstitutionPurpose)
     -> f (f (GovPurposeId 'ConstitutionPurpose)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p) -> f (f (GovPurposeId p)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Gen (GovAction era)
forall era.
Era era =>
StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Gen (GovAction era)
genConstitutionGovAction (f (GovPurposeId 'ConstitutionPurpose)
 -> f (f (GovPurposeId 'ConstitutionPurpose)))
-> GovRelation f -> f (GovRelation f)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'ConstitutionPurpose)
 -> f (f (GovPurposeId 'ConstitutionPurpose)))
-> GovRelation f -> f (GovRelation f)
grConstitutionL
    , 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
InfoAction
    ]
  where
    genWithParent ::
      (StrictMaybe (GovPurposeId p) -> Gen (GovAction era)) ->
      (forall f. Lens' (GovRelation f) (f (GovPurposeId p))) ->
      Gen (GovAction era)
    genWithParent :: forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p) -> f (f (GovPurposeId p)))
    -> GovRelation f -> f (GovRelation f))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId p) -> Gen (GovAction era)
gen forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p) -> f (f (GovPurposeId p)))
-> GovRelation f -> f (GovRelation f)
govRelL =
      StrictMaybe (GovPurposeId p) -> Gen (GovAction era)
gen
        (StrictMaybe (GovPurposeId p) -> Gen (GovAction era))
-> Gen (StrictMaybe (GovPurposeId p)) -> Gen (GovAction era)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< [StrictMaybe (GovPurposeId p)]
-> Gen (StrictMaybe (GovPurposeId p))
forall a. HasCallStack => [a] -> Gen a
elements
          ( (Proposals era
ps Proposals era
-> Getting
     (StrictMaybe (GovPurposeId p))
     (Proposals era)
     (StrictMaybe (GovPurposeId p))
-> StrictMaybe (GovPurposeId p)
forall s a. s -> Getting a s a -> a
^. (GovRelation PRoot
 -> Const (StrictMaybe (GovPurposeId p)) (GovRelation PRoot))
-> Proposals era
-> Const (StrictMaybe (GovPurposeId p)) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PRoot -> f (GovRelation PRoot))
-> Proposals era -> f (Proposals era)
pRootsL ((GovRelation PRoot
  -> Const (StrictMaybe (GovPurposeId p)) (GovRelation PRoot))
 -> Proposals era
 -> Const (StrictMaybe (GovPurposeId p)) (Proposals era))
-> ((StrictMaybe (GovPurposeId p)
     -> Const
          (StrictMaybe (GovPurposeId p)) (StrictMaybe (GovPurposeId p)))
    -> GovRelation PRoot
    -> Const (StrictMaybe (GovPurposeId p)) (GovRelation PRoot))
-> Getting
     (StrictMaybe (GovPurposeId p))
     (Proposals era)
     (StrictMaybe (GovPurposeId p))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PRoot (GovPurposeId p)
 -> Const (StrictMaybe (GovPurposeId p)) (PRoot (GovPurposeId p)))
-> GovRelation PRoot
-> Const (StrictMaybe (GovPurposeId p)) (GovRelation PRoot)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p) -> f (f (GovPurposeId p)))
-> GovRelation f -> f (GovRelation f)
govRelL ((PRoot (GovPurposeId p)
  -> Const (StrictMaybe (GovPurposeId p)) (PRoot (GovPurposeId p)))
 -> GovRelation PRoot
 -> Const (StrictMaybe (GovPurposeId p)) (GovRelation PRoot))
-> ((StrictMaybe (GovPurposeId p)
     -> Const
          (StrictMaybe (GovPurposeId p)) (StrictMaybe (GovPurposeId p)))
    -> PRoot (GovPurposeId p)
    -> Const (StrictMaybe (GovPurposeId p)) (PRoot (GovPurposeId p)))
-> (StrictMaybe (GovPurposeId p)
    -> Const
         (StrictMaybe (GovPurposeId p)) (StrictMaybe (GovPurposeId p)))
-> GovRelation PRoot
-> Const (StrictMaybe (GovPurposeId p)) (GovRelation PRoot)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (GovPurposeId p)
 -> Const
      (StrictMaybe (GovPurposeId p)) (StrictMaybe (GovPurposeId p)))
-> PRoot (GovPurposeId p)
-> Const (StrictMaybe (GovPurposeId p)) (PRoot (GovPurposeId p))
forall a (f :: * -> *).
Functor f =>
(StrictMaybe a -> f (StrictMaybe a)) -> PRoot a -> f (PRoot a)
prRootL)
              StrictMaybe (GovPurposeId p)
-> [StrictMaybe (GovPurposeId p)] -> [StrictMaybe (GovPurposeId p)]
forall a. a -> [a] -> [a]
: (GovPurposeId p -> StrictMaybe (GovPurposeId p))
-> [GovPurposeId p] -> [StrictMaybe (GovPurposeId p)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId p -> StrictMaybe (GovPurposeId p)
forall a. a -> StrictMaybe a
SJust (Map (GovPurposeId p) (PEdges (GovPurposeId p)) -> [GovPurposeId p]
forall k a. Map k a -> [k]
Map.keys (Map (GovPurposeId p) (PEdges (GovPurposeId p))
 -> [GovPurposeId p])
-> Map (GovPurposeId p) (PEdges (GovPurposeId p))
-> [GovPurposeId p]
forall a b. (a -> b) -> a -> b
$ Proposals era
ps Proposals era
-> Getting
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
     (Proposals era)
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
-> Map (GovPurposeId p) (PEdges (GovPurposeId p))
forall s a. s -> Getting a s a -> a
^. (GovRelation PGraph
 -> Const
      (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
      (GovRelation PGraph))
-> Proposals era
-> Const
     (Map (GovPurposeId p) (PEdges (GovPurposeId p))) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PGraph -> f (GovRelation PGraph))
-> Proposals era -> f (Proposals era)
pGraphL ((GovRelation PGraph
  -> Const
       (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
       (GovRelation PGraph))
 -> Proposals era
 -> Const
      (Map (GovPurposeId p) (PEdges (GovPurposeId p))) (Proposals era))
-> ((Map (GovPurposeId p) (PEdges (GovPurposeId p))
     -> Const
          (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
          (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
    -> GovRelation PGraph
    -> Const
         (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
         (GovRelation PGraph))
-> Getting
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
     (Proposals era)
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PGraph (GovPurposeId p)
 -> Const
      (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
      (PGraph (GovPurposeId p)))
-> GovRelation PGraph
-> Const
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
     (GovRelation PGraph)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p) -> f (f (GovPurposeId p)))
-> GovRelation f -> f (GovRelation f)
govRelL ((PGraph (GovPurposeId p)
  -> Const
       (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
       (PGraph (GovPurposeId p)))
 -> GovRelation PGraph
 -> Const
      (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
      (GovRelation PGraph))
-> ((Map (GovPurposeId p) (PEdges (GovPurposeId p))
     -> Const
          (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
          (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
    -> PGraph (GovPurposeId p)
    -> Const
         (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
         (PGraph (GovPurposeId p)))
-> (Map (GovPurposeId p) (PEdges (GovPurposeId p))
    -> Const
         (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
         (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
-> GovRelation PGraph
-> Const
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
     (GovRelation PGraph)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (GovPurposeId p) (PEdges (GovPurposeId p))
 -> Const
      (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
      (Map (GovPurposeId p) (PEdges (GovPurposeId p))))
-> PGraph (GovPurposeId p)
-> Const
     (Map (GovPurposeId p) (PEdges (GovPurposeId p)))
     (PGraph (GovPurposeId p))
forall a (f :: * -> *).
Functor f =>
(Map a (PEdges a) -> f (Map a (PEdges a)))
-> PGraph a -> f (PGraph a)
pGraphNodesL)
          )

genPParamUpdateGovAction ::
  ( Era era
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  StrictMaybe (GovPurposeId 'PParamUpdatePurpose) ->
  Gen (GovAction era)
genPParamUpdateGovAction :: forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> Gen (GovAction era)
genPParamUpdateGovAction StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
parent = StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
ParameterChange StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
parent (PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era)
-> Gen (PParamsUpdate era)
-> Gen (StrictMaybe ScriptHash -> GovAction era)
forall (f :: * -> *) a b. Functor 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

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

genCommitteeGovAction ::
  StrictMaybe (GovPurposeId 'CommitteePurpose) ->
  Gen (GovAction era)
genCommitteeGovAction :: forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose) -> Gen (GovAction era)
genCommitteeGovAction StrictMaybe (GovPurposeId 'CommitteePurpose)
parent =
  [Gen (GovAction era)] -> Gen (GovAction era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
    [ GovAction era -> Gen (GovAction era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (GovAction era -> Gen (GovAction era))
-> GovAction era -> Gen (GovAction era)
forall a b. (a -> b) -> a -> b
$ StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
NoConfidence StrictMaybe (GovPurposeId 'CommitteePurpose)
parent
    , StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
UpdateCommittee StrictMaybe (GovPurposeId 'CommitteePurpose)
parent (Set (Credential ColdCommitteeRole)
 -> Map (Credential ColdCommitteeRole) EpochNo
 -> UnitInterval
 -> GovAction era)
-> Gen (Set (Credential ColdCommitteeRole))
-> Gen
     (Map (Credential ColdCommitteeRole) EpochNo
      -> UnitInterval -> GovAction era)
forall (f :: * -> *) a b. Functor 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
    ]

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

genGovActionState :: GovAction era -> Gen (GovActionState era)
genGovActionState :: forall era. GovAction era -> Gen (GovActionState era)
genGovActionState GovAction era
ga =
  GovActionId
-> Map (Credential HotCommitteeRole) Vote
-> Map (Credential DRepRole) Vote
-> Map (KeyHash StakePool) Vote
-> ProposalProcedure era
-> EpochNo
-> EpochNo
-> GovActionState era
forall era.
GovActionId
-> Map (Credential HotCommitteeRole) Vote
-> Map (Credential DRepRole) Vote
-> Map (KeyHash StakePool) Vote
-> ProposalProcedure era
-> EpochNo
-> EpochNo
-> GovActionState era
GovActionState
    (GovActionId
 -> Map (Credential HotCommitteeRole) Vote
 -> Map (Credential DRepRole) Vote
 -> Map (KeyHash StakePool) Vote
 -> ProposalProcedure era
 -> EpochNo
 -> EpochNo
 -> GovActionState era)
-> Gen GovActionId
-> Gen
     (Map (Credential HotCommitteeRole) Vote
      -> Map (Credential DRepRole) Vote
      -> Map (KeyHash StakePool) Vote
      -> ProposalProcedure era
      -> EpochNo
      -> EpochNo
      -> GovActionState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen GovActionId
forall a. Arbitrary a => Gen a
arbitrary
    Gen
  (Map (Credential HotCommitteeRole) Vote
   -> Map (Credential DRepRole) Vote
   -> Map (KeyHash StakePool) Vote
   -> ProposalProcedure era
   -> EpochNo
   -> EpochNo
   -> GovActionState era)
-> Gen (Map (Credential HotCommitteeRole) Vote)
-> Gen
     (Map (Credential DRepRole) Vote
      -> Map (KeyHash StakePool) Vote
      -> ProposalProcedure era
      -> EpochNo
      -> EpochNo
      -> GovActionState 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 HotCommitteeRole) Vote)
forall a. Arbitrary a => Gen a
arbitrary
    Gen
  (Map (Credential DRepRole) Vote
   -> Map (KeyHash StakePool) Vote
   -> ProposalProcedure era
   -> EpochNo
   -> EpochNo
   -> GovActionState era)
-> Gen (Map (Credential DRepRole) Vote)
-> Gen
     (Map (KeyHash StakePool) Vote
      -> ProposalProcedure era
      -> EpochNo
      -> EpochNo
      -> GovActionState 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 DRepRole) Vote)
forall a. Arbitrary a => Gen a
arbitrary
    Gen
  (Map (KeyHash StakePool) Vote
   -> ProposalProcedure era
   -> EpochNo
   -> EpochNo
   -> GovActionState era)
-> Gen (Map (KeyHash StakePool) Vote)
-> Gen
     (ProposalProcedure era -> EpochNo -> EpochNo -> GovActionState 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 (KeyHash StakePool) Vote)
forall a. Arbitrary a => Gen a
arbitrary
    Gen
  (ProposalProcedure era -> EpochNo -> EpochNo -> GovActionState era)
-> Gen (ProposalProcedure era)
-> Gen (EpochNo -> EpochNo -> GovActionState era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
forall era.
Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
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
<*> GovAction era -> Gen (GovAction era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure GovAction era
ga 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)
    Gen (EpochNo -> EpochNo -> GovActionState era)
-> Gen EpochNo -> Gen (EpochNo -> GovActionState 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 EpochNo
forall a. Arbitrary a => Gen a
arbitrary
    Gen (EpochNo -> GovActionState era)
-> Gen EpochNo -> Gen (GovActionState 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 EpochNo
forall a. Arbitrary a => Gen a
arbitrary

instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (GovActionState era) where
  arbitrary :: Gen (GovActionState era)
arbitrary = GovAction era -> Gen (GovActionState era)
forall era. GovAction era -> Gen (GovActionState era)
genGovActionState (GovAction era -> Gen (GovActionState era))
-> Gen (GovAction era) -> Gen (GovActionState era)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Gen (GovAction era)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: GovActionState era -> [GovActionState era]
shrink = GovActionState era -> [GovActionState era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

-- | These lists of `GovActionStates` contain only one of a priority.
-- In other words, no two `GovActionState`s in the list have the same `actionPriority`.
data ShuffledGovActionStates era
  = ShuffledGovActionStates [GovActionState era] [GovActionState era]
  deriving (Int -> ShuffledGovActionStates era -> ShowS
[ShuffledGovActionStates era] -> ShowS
ShuffledGovActionStates era -> String
(Int -> ShuffledGovActionStates era -> ShowS)
-> (ShuffledGovActionStates era -> String)
-> ([ShuffledGovActionStates era] -> ShowS)
-> Show (ShuffledGovActionStates era)
forall era.
EraPParams era =>
Int -> ShuffledGovActionStates era -> ShowS
forall era.
EraPParams era =>
[ShuffledGovActionStates era] -> ShowS
forall era. EraPParams era => ShuffledGovActionStates era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era.
EraPParams era =>
Int -> ShuffledGovActionStates era -> ShowS
showsPrec :: Int -> ShuffledGovActionStates era -> ShowS
$cshow :: forall era. EraPParams era => ShuffledGovActionStates era -> String
show :: ShuffledGovActionStates era -> String
$cshowList :: forall era.
EraPParams era =>
[ShuffledGovActionStates era] -> ShowS
showList :: [ShuffledGovActionStates era] -> ShowS
Show)

instance
  (Era era, Arbitrary (PParamsUpdate era)) =>
  Arbitrary (ShuffledGovActionStates era)
  where
  arbitrary :: Gen (ShuffledGovActionStates era)
arbitrary = do
    gass <- (Gen (GovAction era) -> Gen (GovActionState era))
-> [Gen (GovAction era)] -> Gen [GovActionState era]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> [a] -> f [b]
traverse (GovAction era -> Gen (GovActionState era)
forall era. GovAction era -> Gen (GovActionState era)
genGovActionState (GovAction era -> Gen (GovActionState era))
-> Gen (GovAction era) -> Gen (GovActionState era)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) [Gen (GovAction era)]
forall era.
(Era era, Arbitrary (PParamsUpdate era)) =>
[Gen (GovAction era)]
govActionGenerators
    shuffledGass <- shuffle gass
    pure $ ShuffledGovActionStates gass shuffledGass

genParameterChange :: Arbitrary (PParamsUpdate era) => Gen (GovAction era)
genParameterChange :: forall era. Arbitrary (PParamsUpdate era) => Gen (GovAction era)
genParameterChange = StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
ParameterChange (StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
 -> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'PParamUpdatePurpose))
-> Gen
     (PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'PParamUpdatePurpose))
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 (GovAction era)
genHardForkInitiation :: forall era. Gen (GovAction era)
genHardForkInitiation = StrictMaybe (GovPurposeId 'HardForkPurpose)
-> ProtVer -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose)
-> ProtVer -> GovAction era
HardForkInitiation (StrictMaybe (GovPurposeId 'HardForkPurpose)
 -> ProtVer -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'HardForkPurpose))
-> Gen (ProtVer -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'HardForkPurpose))
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 (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
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 (GovAction era)
genNoConfidence :: forall era. Gen (GovAction era)
genNoConfidence = StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
NoConfidence (StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose))
-> Gen (GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose))
forall a. Arbitrary a => Gen a
arbitrary

genUpdateCommittee :: Gen (GovAction era)
genUpdateCommittee :: forall era. Gen (GovAction era)
genUpdateCommittee =
  StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
UpdateCommittee
    (StrictMaybe (GovPurposeId 'CommitteePurpose)
 -> Set (Credential ColdCommitteeRole)
 -> Map (Credential ColdCommitteeRole) EpochNo
 -> UnitInterval
 -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose))
-> 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))
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 :: Era era => Gen (GovAction era)
genNewConstitution :: forall era. Era era => Gen (GovAction era)
genNewConstitution = StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Constitution era -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Constitution era -> GovAction era
NewConstitution (StrictMaybe (GovPurposeId 'ConstitutionPurpose)
 -> Constitution era -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'ConstitutionPurpose))
-> Gen (Constitution era -> GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'ConstitutionPurpose))
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

govActionGenerators ::
  ( Era era
  , Arbitrary (PParamsUpdate era)
  ) =>
  [Gen (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
InfoAction
  ]

instance (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (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

instance Era era => Arbitrary (Committee era) where
  arbitrary :: Gen (Committee era)
arbitrary = Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval -> Committee era
forall era.
Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval -> Committee era
Committee (Map (Credential ColdCommitteeRole) EpochNo
 -> UnitInterval -> Committee era)
-> Gen (Map (Credential ColdCommitteeRole) EpochNo)
-> Gen (UnitInterval -> Committee era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Map (Credential ColdCommitteeRole) EpochNo)
forall a. Arbitrary a => Gen a
arbitrary Gen (UnitInterval -> Committee era)
-> Gen UnitInterval -> Gen (Committee 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

instance Arbitrary GovActionId where
  arbitrary :: Gen GovActionId
arbitrary = TxId -> GovActionIx -> GovActionId
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 GovActionIx

deriving instance Arbitrary (GovPurposeId p)

instance Arbitrary Voter where
  arbitrary :: Gen Voter
arbitrary =
    [Gen Voter] -> Gen Voter
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Credential HotCommitteeRole -> Voter
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
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
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 Arbitrary 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

instance Arbitrary (TxBody TopTx ConwayEra) where
  arbitrary :: Gen (TxBody TopTx ConwayEra)
arbitrary =
    Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut ConwayEra))
-> StrictMaybe (Sized (TxOut ConwayEra))
-> StrictMaybe Coin
-> OSet (TxCert ConwayEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> TxBody TopTx ConwayEra
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (BabbageTxOut ConwayEra))
-> StrictMaybe (Sized (BabbageTxOut ConwayEra))
-> StrictMaybe Coin
-> OSet (ConwayTxCert ConwayEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> TxBody TopTx ConwayEra
ConwayTxBody
      (Set TxIn
 -> Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (BabbageTxOut ConwayEra))
 -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
 -> StrictMaybe Coin
 -> OSet (ConwayTxCert ConwayEra)
 -> Withdrawals
 -> Coin
 -> ValidityInterval
 -> Set (KeyHash Guard)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures ConwayEra
 -> OSet (ProposalProcedure ConwayEra)
 -> StrictMaybe Coin
 -> Coin
 -> TxBody TopTx ConwayEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Set TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set TxIn
   -> Set TxIn
   -> StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set TxIn
   -> StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (Set TxIn)
-> Gen
     (StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictSeq (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> Gen
     (StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 (Sized (BabbageTxOut ConwayEra)))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe (Sized (BabbageTxOut ConwayEra))
   -> StrictMaybe Coin
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (StrictMaybe (Sized (BabbageTxOut ConwayEra)))
-> Gen
     (StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 (Sized (BabbageTxOut ConwayEra)))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (StrictMaybe Coin)
-> Gen
     (OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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
  (OSet (ConwayTxCert ConwayEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (OSet (ConwayTxCert ConwayEra))
-> Gen
     (Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (ConwayTxCert ConwayEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen Withdrawals
-> Gen
     (Coin
      -> ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Withdrawals
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen Coin
-> Gen
     (ValidityInterval
      -> Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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
  (ValidityInterval
   -> Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen ValidityInterval
-> Gen
     (Set (KeyHash Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Int -> Int) -> Gen ValidityInterval -> Gen ValidityInterval
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
15) Gen ValidityInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set (KeyHash Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (Set (KeyHash Guard))
-> Gen
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 Guard))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen MultiAsset
-> Gen
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Int -> Int) -> Gen MultiAsset -> Gen MultiAsset
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
15) Gen MultiAsset
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (StrictMaybe ScriptIntegrityHash)
-> Gen
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 ScriptIntegrityHash)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (StrictMaybe TxAuxDataHash)
-> Gen
     (StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 TxAuxDataHash)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (StrictMaybe Network)
-> Gen
     (VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody TopTx ConwayEra)
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 Network)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody TopTx ConwayEra)
-> Gen (VotingProcedures ConwayEra)
-> Gen
     (OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin -> Coin -> TxBody TopTx ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (VotingProcedures ConwayEra)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin -> Coin -> TxBody TopTx ConwayEra)
-> Gen (OSet (ProposalProcedure ConwayEra))
-> Gen (StrictMaybe Coin -> Coin -> TxBody TopTx ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (ProposalProcedure ConwayEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen (StrictMaybe Coin -> Coin -> TxBody TopTx ConwayEra)
-> Gen (StrictMaybe Coin) -> Gen (Coin -> TxBody TopTx ConwayEra)
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 (Coin -> TxBody TopTx ConwayEra)
-> Gen Coin -> Gen (TxBody TopTx ConwayEra)
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

instance
  ( Era era
  , Arbitrary (TxCert era)
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  Arbitrary (ConwayPlutusPurpose AsItem era)
  where
  arbitrary :: Gen (ConwayPlutusPurpose AsItem era)
arbitrary =
    [Gen (ConwayPlutusPurpose AsItem era)]
-> Gen (ConwayPlutusPurpose AsItem era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ AsItem Word32 TxIn -> ConwayPlutusPurpose AsItem era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (AsItem Word32 TxIn -> ConwayPlutusPurpose AsItem era)
-> Gen (AsItem Word32 TxIn) -> Gen (ConwayPlutusPurpose AsItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsItem Word32 TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      , AsItem Word32 PolicyID -> ConwayPlutusPurpose AsItem era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (AsItem Word32 PolicyID -> ConwayPlutusPurpose AsItem era)
-> Gen (AsItem Word32 PolicyID)
-> Gen (ConwayPlutusPurpose AsItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsItem Word32 PolicyID)
forall a. Arbitrary a => Gen a
arbitrary
      , AsItem Word32 (TxCert era) -> ConwayPlutusPurpose AsItem era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (AsItem Word32 (TxCert era) -> ConwayPlutusPurpose AsItem era)
-> Gen (AsItem Word32 (TxCert era))
-> Gen (ConwayPlutusPurpose AsItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsItem Word32 (TxCert era))
forall a. Arbitrary a => Gen a
arbitrary
      , AsItem Word32 RewardAccount -> ConwayPlutusPurpose AsItem era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (AsItem Word32 RewardAccount -> ConwayPlutusPurpose AsItem era)
-> Gen (AsItem Word32 RewardAccount)
-> Gen (ConwayPlutusPurpose AsItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsItem Word32 RewardAccount)
forall a. Arbitrary a => Gen a
arbitrary
      , AsItem Word32 Voter -> ConwayPlutusPurpose AsItem era
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (AsItem Word32 Voter -> ConwayPlutusPurpose AsItem era)
-> Gen (AsItem Word32 Voter)
-> Gen (ConwayPlutusPurpose AsItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsItem Word32 Voter)
forall a. Arbitrary a => Gen a
arbitrary
      , AsItem Word32 (ProposalProcedure era)
-> ConwayPlutusPurpose AsItem era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (AsItem Word32 (ProposalProcedure era)
 -> ConwayPlutusPurpose AsItem era)
-> Gen (AsItem Word32 (ProposalProcedure era))
-> Gen (ConwayPlutusPurpose AsItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsItem Word32 (ProposalProcedure era))
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance
  ( Era era
  , Arbitrary (TxCert era)
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  Arbitrary (ConwayPlutusPurpose AsIxItem era)
  where
  arbitrary :: Gen (ConwayPlutusPurpose AsIxItem era)
arbitrary =
    [Gen (ConwayPlutusPurpose AsIxItem era)]
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ AsIxItem Word32 TxIn -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (AsIxItem Word32 TxIn -> ConwayPlutusPurpose AsIxItem era)
-> Gen (AsIxItem Word32 TxIn)
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsIxItem Word32 TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      , AsIxItem Word32 PolicyID -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (AsIxItem Word32 PolicyID -> ConwayPlutusPurpose AsIxItem era)
-> Gen (AsIxItem Word32 PolicyID)
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsIxItem Word32 PolicyID)
forall a. Arbitrary a => Gen a
arbitrary
      , AsIxItem Word32 (TxCert era) -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (AsIxItem Word32 (TxCert era) -> ConwayPlutusPurpose AsIxItem era)
-> Gen (AsIxItem Word32 (TxCert era))
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsIxItem Word32 (TxCert era))
forall a. Arbitrary a => Gen a
arbitrary
      , AsIxItem Word32 RewardAccount -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (AsIxItem Word32 RewardAccount -> ConwayPlutusPurpose AsIxItem era)
-> Gen (AsIxItem Word32 RewardAccount)
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsIxItem Word32 RewardAccount)
forall a. Arbitrary a => Gen a
arbitrary
      , AsIxItem Word32 Voter -> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (AsIxItem Word32 Voter -> ConwayPlutusPurpose AsIxItem era)
-> Gen (AsIxItem Word32 Voter)
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsIxItem Word32 Voter)
forall a. Arbitrary a => Gen a
arbitrary
      , AsIxItem Word32 (ProposalProcedure era)
-> ConwayPlutusPurpose AsIxItem era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (AsIxItem Word32 (ProposalProcedure era)
 -> ConwayPlutusPurpose AsIxItem era)
-> Gen (AsIxItem Word32 (ProposalProcedure era))
-> Gen (ConwayPlutusPurpose AsIxItem era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (AsIxItem Word32 (ProposalProcedure era))
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance
  Era era =>
  Arbitrary (ConwayPlutusPurpose AsIx era)
  where
  arbitrary :: Gen (ConwayPlutusPurpose AsIx era)
arbitrary = Gen Word32
forall a. Arbitrary a => Gen a
arbitrary Gen Word32
-> (Word32 -> Gen (ConwayPlutusPurpose AsIx era))
-> Gen (ConwayPlutusPurpose AsIx era)
forall a b. Gen a -> (a -> Gen b) -> Gen b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Word32 -> Gen (ConwayPlutusPurpose AsIx era)
forall era. Word32 -> Gen (ConwayPlutusPurpose AsIx era)
genConwayPlutusPurposePointer

genConwayPlutusPurposePointer :: Word32 -> Gen (ConwayPlutusPurpose AsIx era)
genConwayPlutusPurposePointer :: forall era. Word32 -> Gen (ConwayPlutusPurpose AsIx era)
genConwayPlutusPurposePointer Word32
i =
  [ConwayPlutusPurpose AsIx era]
-> Gen (ConwayPlutusPurpose AsIx era)
forall a. HasCallStack => [a] -> Gen a
elements
    [ AsIx Word32 TxIn -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
i)
    , AsIx Word32 PolicyID -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (Word32 -> AsIx Word32 PolicyID
forall ix it. ix -> AsIx ix it
AsIx Word32
i)
    , AsIx Word32 (TxCert era) -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (Word32 -> AsIx Word32 (TxCert era)
forall ix it. ix -> AsIx ix it
AsIx Word32
i)
    , AsIx Word32 RewardAccount -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (Word32 -> AsIx Word32 RewardAccount
forall ix it. ix -> AsIx ix it
AsIx Word32
i)
    , AsIx Word32 Voter -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (Word32 -> AsIx Word32 Voter
forall ix it. ix -> AsIx ix it
AsIx Word32
i)
    , AsIx Word32 (ProposalProcedure era) -> ConwayPlutusPurpose AsIx era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (Word32 -> AsIx Word32 (ProposalProcedure era)
forall ix it. ix -> AsIx ix it
AsIx Word32
i)
    ]

------------------------------------------------------------------------------------------
-- Cardano.Ledger.Conway.Rules -----------------------------------------------------------
------------------------------------------------------------------------------------------

-- GOV

instance (Era era, Arbitrary (PParamsHKD Identity era), Arbitrary (CertState era)) => Arbitrary (GovEnv era) where
  arbitrary :: Gen (GovEnv era)
arbitrary =
    TxId
-> EpochNo
-> PParams era
-> StrictMaybe ScriptHash
-> CertState era
-> StrictMaybe (Committee era)
-> GovEnv era
forall era.
TxId
-> EpochNo
-> PParams era
-> StrictMaybe ScriptHash
-> CertState era
-> StrictMaybe (Committee era)
-> GovEnv era
GovEnv
      (TxId
 -> EpochNo
 -> PParams era
 -> StrictMaybe ScriptHash
 -> CertState era
 -> StrictMaybe (Committee era)
 -> GovEnv era)
-> Gen TxId
-> Gen
     (EpochNo
      -> PParams era
      -> StrictMaybe ScriptHash
      -> CertState era
      -> StrictMaybe (Committee era)
      -> GovEnv era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen TxId
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (EpochNo
   -> PParams era
   -> StrictMaybe ScriptHash
   -> CertState era
   -> StrictMaybe (Committee era)
   -> GovEnv era)
-> Gen EpochNo
-> Gen
     (PParams era
      -> StrictMaybe ScriptHash
      -> CertState era
      -> StrictMaybe (Committee era)
      -> GovEnv 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 EpochNo
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (PParams era
   -> StrictMaybe ScriptHash
   -> CertState era
   -> StrictMaybe (Committee era)
   -> GovEnv era)
-> Gen (PParams era)
-> Gen
     (StrictMaybe ScriptHash
      -> CertState era -> StrictMaybe (Committee era) -> GovEnv 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 (PParams era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe ScriptHash
   -> CertState era -> StrictMaybe (Committee era) -> GovEnv era)
-> Gen (StrictMaybe ScriptHash)
-> Gen (CertState era -> StrictMaybe (Committee era) -> GovEnv 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
      Gen (CertState era -> StrictMaybe (Committee era) -> GovEnv era)
-> Gen (CertState era)
-> Gen (StrictMaybe (Committee era) -> GovEnv 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 (CertState era)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (StrictMaybe (Committee era) -> GovEnv era)
-> Gen (StrictMaybe (Committee era)) -> Gen (GovEnv 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 (Committee era))
forall a. Arbitrary a => Gen a
arbitrary

instance Era era => Arbitrary (VotingProcedure era) where
  arbitrary :: Gen (VotingProcedure era)
arbitrary = Vote -> StrictMaybe Anchor -> VotingProcedure era
forall era. Vote -> StrictMaybe Anchor -> VotingProcedure era
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

instance Era era => Arbitrary (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
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 (Era era, Arbitrary (PParamsUpdate era)) => Arbitrary (ProposalProcedure era) where
  arbitrary :: Gen (ProposalProcedure era)
arbitrary =
    Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
forall era.
Coin
-> RewardAccount
-> GovAction era
-> Anchor
-> ProposalProcedure era
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 (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
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
  (EraPParams era, Arbitrary (PParamsUpdate era), Arbitrary (TxCert era)) =>
  Arbitrary (GovSignal era)
  where
  arbitrary :: Gen (GovSignal era)
arbitrary = VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictSeq (TxCert era)
-> GovSignal era
forall era.
VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictSeq (TxCert era)
-> GovSignal era
GovSignal (VotingProcedures era
 -> OSet (ProposalProcedure era)
 -> StrictSeq (TxCert era)
 -> GovSignal era)
-> Gen (VotingProcedures era)
-> Gen
     (OSet (ProposalProcedure era)
      -> StrictSeq (TxCert era) -> GovSignal era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (VotingProcedures era)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (OSet (ProposalProcedure era)
   -> StrictSeq (TxCert era) -> GovSignal era)
-> Gen (OSet (ProposalProcedure era))
-> Gen (StrictSeq (TxCert era) -> GovSignal 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 (OSet (ProposalProcedure era))
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictSeq (TxCert era) -> GovSignal era)
-> Gen (StrictSeq (TxCert era)) -> Gen (GovSignal 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 (StrictSeq (TxCert era))
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: GovSignal era -> [GovSignal era]
shrink (GovSignal VotingProcedures era
vp OSet (ProposalProcedure era)
pp StrictSeq (TxCert era)
cs) = [VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictSeq (TxCert era)
-> GovSignal era
forall era.
VotingProcedures era
-> OSet (ProposalProcedure era)
-> StrictSeq (TxCert era)
-> GovSignal era
GovSignal VotingProcedures era
vp' OSet (ProposalProcedure era)
pp' StrictSeq (TxCert era)
cs' | (VotingProcedures era
vp', OSet (ProposalProcedure era)
pp', StrictSeq (TxCert era)
cs') <- (VotingProcedures era, OSet (ProposalProcedure era),
 StrictSeq (TxCert era))
-> [(VotingProcedures era, OSet (ProposalProcedure era),
     StrictSeq (TxCert era))]
forall a. Arbitrary a => a -> [a]
shrink (VotingProcedures era
vp, OSet (ProposalProcedure era)
pp, StrictSeq (TxCert era)
cs)]

instance
  ( Era era
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  Arbitrary (ConwayGovPredFailure era)
  where
  arbitrary :: Gen (ConwayGovPredFailure era)
arbitrary = Gen (ConwayGovPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (CollectError era)
  ) =>
  Arbitrary (ConwayUtxosPredFailure era)
  where
  arbitrary :: Gen (ConwayUtxosPredFailure era)
arbitrary = Gen (ConwayUtxosPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "UTXOW" era))
  , Arbitrary (PredicateFailure (EraRule "CERTS" era))
  , Arbitrary (PredicateFailure (EraRule "GOV" era))
  ) =>
  Arbitrary (ConwayLedgerPredFailure era)
  where
  arbitrary :: Gen (ConwayLedgerPredFailure era)
arbitrary = Gen (ConwayLedgerPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

-- EPOCH

instance
  ( Era era
  , Arbitrary (Event (EraRule "POOLREAP" era))
  , Arbitrary (Event (EraRule "SNAP" era))
  ) =>
  Arbitrary (ConwayEpochEvent era)
  where
  arbitrary :: Gen (ConwayEpochEvent era)
arbitrary =
    [Gen (ConwayEpochEvent era)] -> Gen (ConwayEpochEvent era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Event (EraRule "POOLREAP" era) -> ConwayEpochEvent era
forall era. Event (EraRule "POOLREAP" era) -> ConwayEpochEvent era
PoolReapEvent (Event (EraRule "POOLREAP" era) -> ConwayEpochEvent era)
-> Gen (Event (EraRule "POOLREAP" era))
-> Gen (ConwayEpochEvent era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Event (EraRule "POOLREAP" era))
forall a. Arbitrary a => Gen a
arbitrary
      , Event (EraRule "SNAP" era) -> ConwayEpochEvent era
forall era. Event (EraRule "SNAP" era) -> ConwayEpochEvent era
SnapEvent (Event (EraRule "SNAP" era) -> ConwayEpochEvent era)
-> Gen (Event (EraRule "SNAP" era)) -> Gen (ConwayEpochEvent era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Event (EraRule "SNAP" era))
forall a. Arbitrary a => Gen a
arbitrary
      ]

-- NEWEPOCH

instance
  ( Era era
  , Arbitrary (Event (EraRule "RUPD" era))
  ) =>
  Arbitrary (ConwayNewEpochEvent era)
  where
  arbitrary :: Gen (ConwayNewEpochEvent era)
arbitrary =
    [Gen (ConwayNewEpochEvent era)] -> Gen (ConwayNewEpochEvent era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ Event (EraRule "RUPD" era) -> ConwayNewEpochEvent era
forall era. Event (EraRule "RUPD" era) -> ConwayNewEpochEvent era
DeltaRewardEvent (Event (EraRule "RUPD" era) -> ConwayNewEpochEvent era)
-> Gen (Event (EraRule "RUPD" era))
-> Gen (ConwayNewEpochEvent era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Event (EraRule "RUPD" era))
forall a. Arbitrary a => Gen a
arbitrary
      , EpochNo
-> Map (Credential Staking) (Set Reward)
-> Set (Credential Staking)
-> ConwayNewEpochEvent era
forall era.
EpochNo
-> Map (Credential Staking) (Set Reward)
-> Set (Credential Staking)
-> ConwayNewEpochEvent era
RestrainedRewards (EpochNo
 -> Map (Credential Staking) (Set Reward)
 -> Set (Credential Staking)
 -> ConwayNewEpochEvent era)
-> Gen EpochNo
-> Gen
     (Map (Credential Staking) (Set Reward)
      -> Set (Credential Staking) -> ConwayNewEpochEvent era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen EpochNo
forall a. Arbitrary a => Gen a
arbitrary Gen
  (Map (Credential Staking) (Set Reward)
   -> Set (Credential Staking) -> ConwayNewEpochEvent era)
-> Gen (Map (Credential Staking) (Set Reward))
-> Gen (Set (Credential Staking) -> ConwayNewEpochEvent 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 Staking) (Set Reward))
forall a. Arbitrary a => Gen a
arbitrary Gen (Set (Credential Staking) -> ConwayNewEpochEvent era)
-> Gen (Set (Credential Staking)) -> Gen (ConwayNewEpochEvent 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 Staking))
forall a. Arbitrary a => Gen a
arbitrary
      ]

-- CERTS

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "CERT" era))
  ) =>
  Arbitrary (ConwayCertsPredFailure era)
  where
  arbitrary :: Gen (ConwayCertsPredFailure era)
arbitrary = Gen (ConwayCertsPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

-- CERT

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "DELEG" era))
  , Arbitrary (PredicateFailure (EraRule "POOL" era))
  , Arbitrary (PredicateFailure (EraRule "GOVCERT" era))
  ) =>
  Arbitrary (ConwayCertPredFailure era)
  where
  arbitrary :: Gen (ConwayCertPredFailure era)
arbitrary = Gen (ConwayCertPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

-- DELEG

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

-- GOVCERT

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

instance Arbitrary (HKD f a) => Arbitrary (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
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 Era era => Arbitrary (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
     (CompactForm 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 (CompactForm 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
     (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm Coin)
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval
-> ConwayPParams f era
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
      (CompactForm 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 (CompactForm 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
           (CompactForm 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 (CompactForm 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
        (CompactForm 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 (CompactForm 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
           (CompactForm 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 (CompactForm 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
        (CompactForm 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 (CompactForm 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
           (CompactForm 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 (CompactForm 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
        (CompactForm 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 (CompactForm 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
           (CompactForm 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 (CompactForm 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
        (CompactForm 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 (CompactForm 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
           (CompactForm 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 (CompactForm 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
        (CompactForm 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 (CompactForm 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
        (CompactForm 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 (CompactForm 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
     (CompactForm 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 (CompactForm Coin)
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        Identity
        (CompactForm 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 (CompactForm 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
     (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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
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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm 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 (CompactForm Coin)
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        (CompactForm 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
     (CompactForm 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 Era era => Arbitrary (ConwayPParams 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
     (CompactForm 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
     (CompactForm 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
     (CompactForm 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
     (CompactForm 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 (CompactForm 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 (CompactForm Coin)
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval
-> ConwayPParams f era
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
      (CompactForm 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
      (CompactForm 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
           (CompactForm 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
           (CompactForm 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
        (CompactForm 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
        (CompactForm 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
           (CompactForm 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
           (CompactForm 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
        (CompactForm 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
        (CompactForm 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
           (CompactForm 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
           (CompactForm 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
        (CompactForm 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
        (CompactForm 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
           (CompactForm 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
           (CompactForm 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
        (CompactForm 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
        (CompactForm 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
           (CompactForm 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
           (CompactForm 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
        (CompactForm 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
        (CompactForm 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
        (CompactForm 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
           (CompactForm 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
     (CompactForm 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
        (CompactForm Coin)
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        (CompactForm 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
           (CompactForm 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
     (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
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
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
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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
           (CompactForm 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
        (CompactForm 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
        (CompactForm 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
     (CompactForm Coin)
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        (CompactForm 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
     (CompactForm 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

instance Arbitrary PoolVotingThresholds where
  arbitrary :: Gen PoolVotingThresholds
arbitrary =
    UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> PoolVotingThresholds
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 DRepVotingThresholds where
  arbitrary :: Gen DRepVotingThresholds
arbitrary =
    UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> UnitInterval
-> DRepVotingThresholds
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 Era era => Arbitrary (Constitution era) where
  arbitrary :: Gen (Constitution era)
arbitrary = Anchor -> StrictMaybe ScriptHash -> Constitution era
forall era. Anchor -> StrictMaybe ScriptHash -> Constitution era
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

instance (Era era, Arbitrary (Accounts era)) => Arbitrary (ConwayCertState era) where
  arbitrary :: Gen (ConwayCertState era)
arbitrary = VState era -> PState era -> DState era -> ConwayCertState era
forall era.
VState era -> PState era -> DState era -> ConwayCertState era
ConwayCertState (VState era -> PState era -> DState era -> ConwayCertState era)
-> Gen (VState era)
-> Gen (PState era -> DState era -> ConwayCertState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (VState era)
forall a. Arbitrary a => Gen a
arbitrary Gen (PState era -> DState era -> ConwayCertState era)
-> Gen (PState era) -> Gen (DState era -> ConwayCertState 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 (PState era)
forall a. Arbitrary a => Gen a
arbitrary Gen (DState era -> ConwayCertState era)
-> Gen (DState era) -> Gen (ConwayCertState 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 (DState era)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: ConwayCertState era -> [ConwayCertState era]
shrink = ConwayCertState era -> [ConwayCertState era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

deriving instance Arbitrary (ConwayAccounts era)

instance Arbitrary (ConwayAccountState era) where
  arbitrary :: Gen (ConwayAccountState era)
arbitrary = CompactForm Coin
-> CompactForm Coin
-> StrictMaybe (KeyHash StakePool)
-> StrictMaybe DRep
-> ConwayAccountState era
forall era.
CompactForm Coin
-> CompactForm Coin
-> StrictMaybe (KeyHash StakePool)
-> StrictMaybe DRep
-> ConwayAccountState era
ConwayAccountState (CompactForm Coin
 -> CompactForm Coin
 -> StrictMaybe (KeyHash StakePool)
 -> StrictMaybe DRep
 -> ConwayAccountState era)
-> Gen (CompactForm Coin)
-> Gen
     (CompactForm Coin
      -> StrictMaybe (KeyHash StakePool)
      -> StrictMaybe DRep
      -> ConwayAccountState era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (CompactForm Coin)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (CompactForm Coin
   -> StrictMaybe (KeyHash StakePool)
   -> StrictMaybe DRep
   -> ConwayAccountState era)
-> Gen (CompactForm Coin)
-> Gen
     (StrictMaybe (KeyHash StakePool)
      -> StrictMaybe DRep -> ConwayAccountState 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 (CompactForm Coin)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (StrictMaybe (KeyHash StakePool)
   -> StrictMaybe DRep -> ConwayAccountState era)
-> Gen (StrictMaybe (KeyHash StakePool))
-> Gen (StrictMaybe DRep -> ConwayAccountState 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 (KeyHash StakePool))
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe DRep -> ConwayAccountState era)
-> Gen (StrictMaybe DRep) -> Gen (ConwayAccountState 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 DRep)
forall a. Arbitrary a => Gen a
arbitrary
  shrink :: ConwayAccountState era -> [ConwayAccountState era]
shrink = ConwayAccountState era -> [ConwayAccountState era]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
genericShrink

instance Arbitrary (TransitionConfig ConwayEra) where
  arbitrary :: Gen (TransitionConfig ConwayEra)
arbitrary = ConwayGenesis
-> TransitionConfig BabbageEra -> TransitionConfig ConwayEra
ConwayTransitionConfig (ConwayGenesis
 -> TransitionConfig BabbageEra -> TransitionConfig ConwayEra)
-> Gen ConwayGenesis
-> Gen (TransitionConfig BabbageEra -> TransitionConfig ConwayEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen ConwayGenesis
forall a. Arbitrary a => Gen a
arbitrary Gen (TransitionConfig BabbageEra -> TransitionConfig ConwayEra)
-> Gen (TransitionConfig BabbageEra)
-> Gen (TransitionConfig ConwayEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (TransitionConfig BabbageEra)
forall a. Arbitrary a => Gen a
arbitrary

deriving newtype instance Arbitrary (Tx TopTx ConwayEra)