{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# 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)
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.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.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.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 =
    UpgradeConwayPParams Identity
-> Constitution ConwayEra
-> Committee ConwayEra
-> ListMap (Credential 'Staking) Delegatee
-> ListMap (Credential 'DRepRole) DRepState
-> ConwayGenesis
ConwayGenesis
      (UpgradeConwayPParams Identity
 -> Constitution ConwayEra
 -> Committee ConwayEra
 -> ListMap (Credential 'Staking) Delegatee
 -> ListMap (Credential 'DRepRole) DRepState
 -> ConwayGenesis)
-> Gen (UpgradeConwayPParams Identity)
-> Gen
     (Constitution ConwayEra
      -> Committee ConwayEra
      -> ListMap (Credential 'Staking) Delegatee
      -> ListMap (Credential 'DRepRole) DRepState
      -> ConwayGenesis)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (UpgradeConwayPParams Identity)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Constitution ConwayEra
   -> Committee ConwayEra
   -> ListMap (Credential 'Staking) Delegatee
   -> ListMap (Credential 'DRepRole) DRepState
   -> ConwayGenesis)
-> Gen (Constitution ConwayEra)
-> Gen
     (Committee ConwayEra
      -> ListMap (Credential 'Staking) Delegatee
      -> ListMap (Credential 'DRepRole) DRepState
      -> ConwayGenesis)
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 ConwayEra)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Committee ConwayEra
   -> ListMap (Credential 'Staking) Delegatee
   -> ListMap (Credential 'DRepRole) DRepState
   -> ConwayGenesis)
-> Gen (Committee ConwayEra)
-> Gen
     (ListMap (Credential 'Staking) Delegatee
      -> ListMap (Credential 'DRepRole) DRepState -> ConwayGenesis)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Committee ConwayEra)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ListMap (Credential 'Staking) Delegatee
   -> ListMap (Credential 'DRepRole) DRepState -> ConwayGenesis)
-> Gen (ListMap (Credential 'Staking) Delegatee)
-> Gen (ListMap (Credential 'DRepRole) DRepState -> ConwayGenesis)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (ListMap (Credential 'Staking) Delegatee)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (ListMap (Credential 'DRepRole) DRepState -> ConwayGenesis)
-> Gen (ListMap (Credential 'DRepRole) DRepState)
-> Gen ConwayGenesis
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (ListMap (Credential 'DRepRole) DRepState)
forall a. Arbitrary a => Gen a
arbitrary

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 (RatifyEnv era) where
  arbitrary :: Gen (RatifyEnv era)
arbitrary =
    InstantStake era
-> PoolDistr
-> Map DRep (CompactForm Coin)
-> Map (Credential 'DRepRole) DRepState
-> EpochNo
-> CommitteeState era
-> Map (Credential 'Staking) DRep
-> Map (KeyHash 'StakePool) PoolParams
-> RatifyEnv era
forall era.
InstantStake era
-> PoolDistr
-> Map DRep (CompactForm Coin)
-> Map (Credential 'DRepRole) DRepState
-> EpochNo
-> CommitteeState era
-> Map (Credential 'Staking) DRep
-> Map (KeyHash 'StakePool) PoolParams
-> RatifyEnv era
RatifyEnv
      (InstantStake era
 -> PoolDistr
 -> Map DRep (CompactForm Coin)
 -> Map (Credential 'DRepRole) DRepState
 -> EpochNo
 -> CommitteeState era
 -> Map (Credential 'Staking) DRep
 -> Map (KeyHash 'StakePool) PoolParams
 -> RatifyEnv era)
-> Gen (InstantStake era)
-> Gen
     (PoolDistr
      -> Map DRep (CompactForm Coin)
      -> Map (Credential 'DRepRole) DRepState
      -> EpochNo
      -> CommitteeState era
      -> Map (Credential 'Staking) DRep
      -> Map (KeyHash 'StakePool) PoolParams
      -> 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
   -> Map (Credential 'Staking) DRep
   -> Map (KeyHash 'StakePool) PoolParams
   -> RatifyEnv era)
-> Gen PoolDistr
-> Gen
     (Map DRep (CompactForm Coin)
      -> Map (Credential 'DRepRole) DRepState
      -> EpochNo
      -> CommitteeState era
      -> Map (Credential 'Staking) DRep
      -> Map (KeyHash 'StakePool) PoolParams
      -> 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
   -> Map (Credential 'Staking) DRep
   -> Map (KeyHash 'StakePool) PoolParams
   -> RatifyEnv era)
-> Gen (Map DRep (CompactForm Coin))
-> Gen
     (Map (Credential 'DRepRole) DRepState
      -> EpochNo
      -> CommitteeState era
      -> Map (Credential 'Staking) DRep
      -> Map (KeyHash 'StakePool) PoolParams
      -> 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
   -> Map (Credential 'Staking) DRep
   -> Map (KeyHash 'StakePool) PoolParams
   -> RatifyEnv era)
-> Gen (Map (Credential 'DRepRole) DRepState)
-> Gen
     (EpochNo
      -> CommitteeState era
      -> Map (Credential 'Staking) DRep
      -> Map (KeyHash 'StakePool) PoolParams
      -> 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
   -> Map (Credential 'Staking) DRep
   -> Map (KeyHash 'StakePool) PoolParams
   -> RatifyEnv era)
-> Gen EpochNo
-> Gen
     (CommitteeState era
      -> Map (Credential 'Staking) DRep
      -> Map (KeyHash 'StakePool) PoolParams
      -> 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
   -> Map (Credential 'Staking) DRep
   -> Map (KeyHash 'StakePool) PoolParams
   -> RatifyEnv era)
-> Gen (CommitteeState era)
-> Gen
     (Map (Credential 'Staking) DRep
      -> Map (KeyHash 'StakePool) PoolParams -> 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
  (Map (Credential 'Staking) DRep
   -> Map (KeyHash 'StakePool) PoolParams -> RatifyEnv era)
-> Gen (Map (Credential 'Staking) DRep)
-> Gen (Map (KeyHash 'StakePool) PoolParams -> 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 'Staking) DRep)
forall a. Arbitrary a => Gen a
arbitrary
      Gen (Map (KeyHash 'StakePool) PoolParams -> RatifyEnv era)
-> Gen (Map (KeyHash 'StakePool) PoolParams) -> 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) PoolParams)
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 era
-> EnactState era
forall era.
StrictMaybe (Committee era)
-> Constitution era
-> PParams era
-> PParams era
-> Coin
-> Map (Credential 'Staking) Coin
-> GovRelation StrictMaybe era
-> EnactState era
EnactState
      (StrictMaybe (Committee era)
 -> Constitution era
 -> PParams era
 -> PParams era
 -> Coin
 -> Map (Credential 'Staking) Coin
 -> GovRelation StrictMaybe era
 -> EnactState era)
-> Gen (StrictMaybe (Committee era))
-> Gen
     (Constitution era
      -> PParams era
      -> PParams era
      -> Coin
      -> Map (Credential 'Staking) Coin
      -> GovRelation StrictMaybe era
      -> 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 era
   -> EnactState era)
-> Gen (Constitution era)
-> Gen
     (PParams era
      -> PParams era
      -> Coin
      -> Map (Credential 'Staking) Coin
      -> GovRelation StrictMaybe era
      -> 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 era
   -> EnactState era)
-> Gen (PParams era)
-> Gen
     (PParams era
      -> Coin
      -> Map (Credential 'Staking) Coin
      -> GovRelation StrictMaybe era
      -> 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 era
   -> EnactState era)
-> Gen (PParams era)
-> Gen
     (Coin
      -> Map (Credential 'Staking) Coin
      -> GovRelation StrictMaybe era
      -> 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 era
   -> EnactState era)
-> Gen Coin
-> Gen
     (Map (Credential 'Staking) Coin
      -> GovRelation StrictMaybe era -> 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 era -> EnactState era)
-> Gen (Map (Credential 'Staking) Coin)
-> Gen (GovRelation StrictMaybe era -> 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 era -> EnactState era)
-> Gen (GovRelation StrictMaybe era) -> 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 era)
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) era))) =>
  Arbitrary (GovRelation f era)
  where
  arbitrary :: Gen (GovRelation f era)
arbitrary = f (GovPurposeId 'PParamUpdatePurpose era)
-> f (GovPurposeId 'HardForkPurpose era)
-> f (GovPurposeId 'CommitteePurpose era)
-> f (GovPurposeId 'ConstitutionPurpose era)
-> GovRelation f era
forall (f :: * -> *) era.
f (GovPurposeId 'PParamUpdatePurpose era)
-> f (GovPurposeId 'HardForkPurpose era)
-> f (GovPurposeId 'CommitteePurpose era)
-> f (GovPurposeId 'ConstitutionPurpose era)
-> GovRelation f era
GovRelation (f (GovPurposeId 'PParamUpdatePurpose era)
 -> f (GovPurposeId 'HardForkPurpose era)
 -> f (GovPurposeId 'CommitteePurpose era)
 -> f (GovPurposeId 'ConstitutionPurpose era)
 -> GovRelation f era)
-> Gen (f (GovPurposeId 'PParamUpdatePurpose era))
-> Gen
     (f (GovPurposeId 'HardForkPurpose era)
      -> f (GovPurposeId 'CommitteePurpose era)
      -> f (GovPurposeId 'ConstitutionPurpose era)
      -> GovRelation f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (f (GovPurposeId 'PParamUpdatePurpose era))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (f (GovPurposeId 'HardForkPurpose era)
   -> f (GovPurposeId 'CommitteePurpose era)
   -> f (GovPurposeId 'ConstitutionPurpose era)
   -> GovRelation f era)
-> Gen (f (GovPurposeId 'HardForkPurpose era))
-> Gen
     (f (GovPurposeId 'CommitteePurpose era)
      -> f (GovPurposeId 'ConstitutionPurpose era) -> GovRelation f era)
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 era))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (f (GovPurposeId 'CommitteePurpose era)
   -> f (GovPurposeId 'ConstitutionPurpose era) -> GovRelation f era)
-> Gen (f (GovPurposeId 'CommitteePurpose era))
-> Gen
     (f (GovPurposeId 'ConstitutionPurpose era) -> GovRelation f era)
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 era))
forall a. Arbitrary a => Gen a
arbitrary Gen
  (f (GovPurposeId 'ConstitutionPurpose era) -> GovRelation f era)
-> Gen (f (GovPurposeId 'ConstitutionPurpose era))
-> Gen (GovRelation f era)
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 era))
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
    Proposals era
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 -> Bool
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 -> Bool
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
    Seq (GovActionState era)
pparamUpdates <- (forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId 'PParamUpdatePurpose era)
  -> f (f (GovPurposeId 'PParamUpdatePurpose era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage (f (GovPurposeId 'PParamUpdatePurpose era)
 -> f (f (GovPurposeId 'PParamUpdatePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'PParamUpdatePurpose era)
 -> f2 (f1 (GovPurposeId 'PParamUpdatePurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'PParamUpdatePurpose era)
 -> f (f (GovPurposeId 'PParamUpdatePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grPParamUpdateL Proposals era
ps Seq (GovActionState era)
forall a. Seq a
Seq.Empty
    Seq (GovActionState era)
hardForks <- (forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId 'HardForkPurpose era)
  -> f (f (GovPurposeId 'HardForkPurpose era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage (f (GovPurposeId 'HardForkPurpose era)
 -> f (f (GovPurposeId 'HardForkPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'HardForkPurpose era)
 -> f2 (f1 (GovPurposeId 'HardForkPurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'HardForkPurpose era)
 -> f (f (GovPurposeId 'HardForkPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grHardForkL Proposals era
ps Seq (GovActionState era)
forall a. Seq a
Seq.Empty
    Seq (GovActionState era)
committees <- (forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId 'CommitteePurpose era)
  -> f (f (GovPurposeId 'CommitteePurpose era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage (f (GovPurposeId 'CommitteePurpose era)
 -> f (f (GovPurposeId 'CommitteePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'CommitteePurpose era)
 -> f2 (f1 (GovPurposeId 'CommitteePurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'CommitteePurpose era)
 -> f (f (GovPurposeId 'CommitteePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grCommitteeL Proposals era
ps Seq (GovActionState era)
forall a. Seq a
Seq.Empty
    Seq (GovActionState era)
constitutions <- (forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId 'ConstitutionPurpose era)
  -> f (f (GovPurposeId 'ConstitutionPurpose era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage (f (GovPurposeId 'ConstitutionPurpose era)
 -> f (f (GovPurposeId 'ConstitutionPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'ConstitutionPurpose era)
 -> f2 (f1 (GovPurposeId 'ConstitutionPurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'ConstitutionPurpose era)
 -> f (f (GovPurposeId 'ConstitutionPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grConstitutionL Proposals era
ps Seq (GovActionState era)
forall a. Seq a
Seq.Empty
    Map GovActionId (GovActionState era)
noLineageMap <- Maybe Int
-> Map GovActionId (GovActionState era)
-> QC
-> Gen (Map GovActionId (GovActionState era))
forall g (m :: * -> *) k v.
(StatefulGen g m, Ord k) =>
Maybe Int -> Map k v -> g -> m (Map k v)
uniformSubMap Maybe Int
forall a. Maybe a
Nothing ((GovActionState era -> Bool)
-> Map GovActionId (GovActionState era)
-> Map GovActionId (GovActionState era)
forall a k. (a -> Bool) -> Map k a -> Map k a
Map.filter GovActionState era -> Bool
forall {era}. GovActionState era -> Bool
gasHasNoLineage (Map GovActionId (GovActionState era)
 -> Map GovActionId (GovActionState era))
-> Map GovActionId (GovActionState era)
-> Map GovActionId (GovActionState era)
forall a b. (a -> b) -> a -> b
$ Proposals era -> Map GovActionId (GovActionState era)
forall era. Proposals era -> Map GovActionId (GovActionState era)
proposalsActionsMap Proposals era
ps) QC
QC
    Seq (GovActionState era)
noLineage <- [GovActionState era] -> Seq (GovActionState era)
forall a. [a] -> Seq a
Seq.fromList ([GovActionState era] -> Seq (GovActionState era))
-> Gen [GovActionState era] -> Gen (Seq (GovActionState era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [GovActionState era] -> Gen [GovActionState era]
forall a. [a] -> Gen [a]
shuffle (Map GovActionId (GovActionState era) -> [GovActionState era]
forall k a. Map k a -> [a]
Map.elems Map GovActionId (GovActionState era)
noLineageMap)
    Seq (GovActionState era)
sequencedGass <-
      Seq (Seq (GovActionState era))
-> Seq (GovActionState era) -> Gen (Seq (GovActionState era))
forall a. Seq (Seq a) -> Seq a -> Gen (Seq a)
sequenceLineages
        ( (Seq (GovActionState era) -> Bool)
-> Seq (Seq (GovActionState era)) -> Seq (Seq (GovActionState era))
forall a. (a -> Bool) -> Seq a -> Seq a
Seq.filter
            (Bool -> Bool
not (Bool -> Bool)
-> (Seq (GovActionState era) -> Bool)
-> Seq (GovActionState era)
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Seq (GovActionState era) -> Bool
forall a. Seq a -> Bool
Seq.null)
            ([Seq (GovActionState era)] -> Seq (Seq (GovActionState era))
forall a. [a] -> Seq a
Seq.fromList [Seq (GovActionState era)
pparamUpdates, Seq (GovActionState era)
hardForks, Seq (GovActionState era)
committees, Seq (GovActionState era)
constitutions, Seq (GovActionState era)
noLineage])
        )
        Seq (GovActionState era)
forall a. Seq a
Seq.Empty
    let notEnacted :: Set GovActionId
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 (Set GovActionId
retained, Set GovActionId
removedDueToConflict) = (GovActionId -> Bool)
-> Set GovActionId -> (Set GovActionId, Set GovActionId)
forall a. (a -> Bool) -> Set a -> (Set a, Set a)
Set.partition GovActionId -> Bool
hasNoLineage Set GovActionId
notEnacted
    ProposalsForEnactment era -> Gen (ProposalsForEnactment era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ProposalsForEnactment era -> Gen (ProposalsForEnactment era))
-> ProposalsForEnactment era -> Gen (ProposalsForEnactment era)
forall a b. (a -> b) -> a -> b
$
      ProposalsForEnactment
        { pfeProposals :: Proposals era
pfeProposals = Proposals era
ps
        , pfeToEnact :: Seq (GovActionState era)
pfeToEnact = Seq (GovActionState era)
sequencedGass
        , pfeToRemove :: Set GovActionId
pfeToRemove = Set GovActionId
removedDueToConflict
        , pfeToRetain :: Set GovActionId
pfeToRetain = Set GovActionId
retained
        }
    where
      -- Starting from the root select a path in the tree until a leaf is reached.
      chooseLineage ::
        (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) ->
        Proposals era ->
        Seq.Seq (GovActionState era) ->
        Gen (Seq.Seq (GovActionState era))
      chooseLineage :: forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL Proposals era
ps = \case
        Seq (GovActionState era)
Seq.Empty ->
          let children :: Set (GovPurposeId p era)
children = Proposals era
ps Proposals era
-> Getting
     (Set (GovPurposeId p era))
     (Proposals era)
     (Set (GovPurposeId p era))
-> Set (GovPurposeId p era)
forall s a. s -> Getting a s a -> a
^. (GovRelation PRoot era
 -> Const (Set (GovPurposeId p era)) (GovRelation PRoot era))
-> Proposals era
-> Const (Set (GovPurposeId p era)) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PRoot era -> f (GovRelation PRoot era))
-> Proposals era -> f (Proposals era)
pRootsL ((GovRelation PRoot era
  -> Const (Set (GovPurposeId p era)) (GovRelation PRoot era))
 -> Proposals era
 -> Const (Set (GovPurposeId p era)) (Proposals era))
-> ((Set (GovPurposeId p era)
     -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
    -> GovRelation PRoot era
    -> Const (Set (GovPurposeId p era)) (GovRelation PRoot era))
-> Getting
     (Set (GovPurposeId p era))
     (Proposals era)
     (Set (GovPurposeId p era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PRoot (GovPurposeId p era)
 -> Const (Set (GovPurposeId p era)) (PRoot (GovPurposeId p era)))
-> GovRelation PRoot era
-> Const (Set (GovPurposeId p era)) (GovRelation PRoot era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL ((PRoot (GovPurposeId p era)
  -> Const (Set (GovPurposeId p era)) (PRoot (GovPurposeId p era)))
 -> GovRelation PRoot era
 -> Const (Set (GovPurposeId p era)) (GovRelation PRoot era))
-> ((Set (GovPurposeId p era)
     -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
    -> PRoot (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (PRoot (GovPurposeId p era)))
-> (Set (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
-> GovRelation PRoot era
-> Const (Set (GovPurposeId p era)) (GovRelation PRoot era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (GovPurposeId p era)
 -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
-> PRoot (GovPurposeId p era)
-> Const (Set (GovPurposeId p era)) (PRoot (GovPurposeId p era))
forall a (f :: * -> *).
Functor f =>
(Set a -> f (Set a)) -> PRoot a -> f (PRoot a)
prChildrenL
           in if Set (GovPurposeId p era) -> Bool
forall a. Set a -> Bool
Set.null Set (GovPurposeId p era)
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
                  GovPurposeId p era
child <- [GovPurposeId p era] -> Gen (GovPurposeId p era)
forall a. HasCallStack => [a] -> Gen a
elements ([GovPurposeId p era] -> Gen (GovPurposeId p era))
-> [GovPurposeId p era] -> Gen (GovPurposeId p era)
forall a b. (a -> b) -> a -> b
$ Set (GovPurposeId p era) -> [GovPurposeId p era]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set (GovPurposeId p era)
children
                  (forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL Proposals era
ps (Seq (GovActionState era)
forall a. Seq a
Seq.Empty Seq (GovActionState era)
-> GovActionState era -> Seq (GovActionState era)
forall a. Seq a -> a -> Seq a
Seq.:|> (Proposals era -> Map GovActionId (GovActionState era)
forall era. Proposals era -> Map GovActionId (GovActionState era)
proposalsActionsMap Proposals era
ps Map GovActionId (GovActionState era)
-> GovActionId -> GovActionState era
forall k a. Ord k => Map k a -> k -> a
Map.! GovPurposeId p era -> GovActionId
forall (p :: GovActionPurpose) era.
GovPurposeId p era -> GovActionId
unGovPurposeId GovPurposeId p era
child))
        lineage :: Seq (GovActionState era)
lineage@(Seq (GovActionState era)
_ Seq.:|> GovActionState era
gas) ->
          let children :: Set (GovPurposeId p era)
children = Proposals era
ps Proposals era
-> Getting
     (Set (GovPurposeId p era))
     (Proposals era)
     (Set (GovPurposeId p era))
-> Set (GovPurposeId p era)
forall s a. s -> Getting a s a -> a
^. (GovRelation PGraph era
 -> Const (Set (GovPurposeId p era)) (GovRelation PGraph era))
-> Proposals era
-> Const (Set (GovPurposeId p era)) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PGraph era -> f (GovRelation PGraph era))
-> Proposals era -> f (Proposals era)
pGraphL ((GovRelation PGraph era
  -> Const (Set (GovPurposeId p era)) (GovRelation PGraph era))
 -> Proposals era
 -> Const (Set (GovPurposeId p era)) (Proposals era))
-> ((Set (GovPurposeId p era)
     -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
    -> GovRelation PGraph era
    -> Const (Set (GovPurposeId p era)) (GovRelation PGraph era))
-> Getting
     (Set (GovPurposeId p era))
     (Proposals era)
     (Set (GovPurposeId p era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PGraph (GovPurposeId p era)
 -> Const (Set (GovPurposeId p era)) (PGraph (GovPurposeId p era)))
-> GovRelation PGraph era
-> Const (Set (GovPurposeId p era)) (GovRelation PGraph era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL ((PGraph (GovPurposeId p era)
  -> Const (Set (GovPurposeId p era)) (PGraph (GovPurposeId p era)))
 -> GovRelation PGraph era
 -> Const (Set (GovPurposeId p era)) (GovRelation PGraph era))
-> ((Set (GovPurposeId p era)
     -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
    -> PGraph (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (PGraph (GovPurposeId p era)))
-> (Set (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
-> GovRelation PGraph era
-> Const (Set (GovPurposeId p era)) (GovRelation PGraph era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
 -> Const
      (Set (GovPurposeId p era))
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
-> PGraph (GovPurposeId p era)
-> Const (Set (GovPurposeId p era)) (PGraph (GovPurposeId p era))
forall a (f :: * -> *).
Functor f =>
(Map a (PEdges a) -> f (Map a (PEdges a)))
-> PGraph a -> f (PGraph a)
pGraphNodesL ((Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
  -> Const
       (Set (GovPurposeId p era))
       (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
 -> PGraph (GovPurposeId p era)
 -> Const (Set (GovPurposeId p era)) (PGraph (GovPurposeId p era)))
-> ((Set (GovPurposeId p era)
     -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
    -> Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
    -> Const
         (Set (GovPurposeId p era))
         (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
-> (Set (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
-> PGraph (GovPurposeId p era)
-> Const (Set (GovPurposeId p era)) (PGraph (GovPurposeId p era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
 -> PEdges (GovPurposeId p era))
-> SimpleGetter
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (PEdges (GovPurposeId p era))
forall s a. (s -> a) -> SimpleGetter s a
to (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
-> GovPurposeId p era -> PEdges (GovPurposeId p era)
forall k a. Ord k => Map k a -> k -> a
Map.! GovActionId -> GovPurposeId p era
forall (p :: GovActionPurpose) era.
GovActionId -> GovPurposeId p era
GovPurposeId (GovActionState era -> GovActionId
forall era. GovActionState era -> GovActionId
gasId GovActionState era
gas)) Getting
  (Set (GovPurposeId p era))
  (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
  (PEdges (GovPurposeId p era))
-> ((Set (GovPurposeId p era)
     -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
    -> PEdges (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (PEdges (GovPurposeId p era)))
-> (Set (GovPurposeId p era)
    -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
-> Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
-> Const
     (Set (GovPurposeId p era))
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (GovPurposeId p era)
 -> Const (Set (GovPurposeId p era)) (Set (GovPurposeId p era)))
-> PEdges (GovPurposeId p era)
-> Const (Set (GovPurposeId p era)) (PEdges (GovPurposeId p era))
forall a (f :: * -> *).
Functor f =>
(Set a -> f (Set a)) -> PEdges a -> f (PEdges a)
peChildrenL
           in if Set (GovPurposeId p era) -> Bool
forall a. Set a -> Bool
Set.null Set (GovPurposeId p era)
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
                  GovPurposeId p era
child <- [GovPurposeId p era] -> Gen (GovPurposeId p era)
forall a. HasCallStack => [a] -> Gen a
elements ([GovPurposeId p era] -> Gen (GovPurposeId p era))
-> [GovPurposeId p era] -> Gen (GovPurposeId p era)
forall a b. (a -> b) -> a -> b
$ Set (GovPurposeId p era) -> [GovPurposeId p era]
forall a. Set a -> [a]
forall (t :: * -> *) a. Foldable t => t a -> [a]
toList Set (GovPurposeId p era)
children
                  (forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
forall (p :: GovActionPurpose).
(forall (f :: * -> *) (f :: * -> *).
 Functor f =>
 (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
 -> GovRelation f era -> f (GovRelation f era))
-> Proposals era
-> Seq (GovActionState era)
-> Gen (Seq (GovActionState era))
chooseLineage (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL Proposals era
ps (Seq (GovActionState era)
lineage Seq (GovActionState era)
-> GovActionState era -> Seq (GovActionState era)
forall a. Seq a -> a -> Seq a
Seq.:|> (Proposals era -> Map GovActionId (GovActionState era)
forall era. Proposals era -> Map GovActionId (GovActionState era)
proposalsActionsMap Proposals era
ps Map GovActionId (GovActionState era)
-> GovActionId -> GovActionState era
forall k a. Ord k => Map k a -> k -> a
Map.! GovPurposeId p era -> GovActionId
forall (p :: GovActionPurpose) era.
GovPurposeId p era -> GovActionId
unGovPurposeId GovPurposeId p era
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
          Int
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 (a
chosen, Seq (Seq a)
adjustedLineages) = Int -> Seq (Seq a) -> (a, Seq (Seq a))
forall a. Int -> Seq (Seq a) -> (a, Seq (Seq a))
consumeHeadAtIndex Int
index Seq (Seq a)
lineages
          Seq (Seq a) -> Seq a -> Gen (Seq a)
forall a. Seq (Seq a) -> Seq a -> Gen (Seq a)
sequenceLineages ((Seq a -> Bool) -> Seq (Seq a) -> Seq (Seq a)
forall a. (a -> Bool) -> Seq a -> Seq a
Seq.filter (Bool -> Bool
not (Bool -> Bool) -> (Seq a -> Bool) -> Seq a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Seq a -> Bool
forall a. Seq a -> Bool
Seq.null) Seq (Seq a)
adjustedLineages) (Seq a
sequenced Seq a -> a -> Seq a
forall a. Seq a -> a -> Seq a
Seq.:|> a
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
    Proposals era
ps <- Gen (Proposals era)
forall a. Arbitrary a => Gen a
arbitrary
    Int
i <- (Int, Int) -> Gen Int
chooseInt (Int
2, Int
20)
    [GovActionState era]
gass <- Int -> Gen (GovActionState era) -> Gen [GovActionState era]
forall a. Int -> Gen a -> Gen [a]
vectorOf Int
i (Gen (GovActionState era) -> Gen [GovActionState era])
-> Gen (GovActionState era) -> Gen [GovActionState era]
forall a b. (a -> b) -> a -> b
$ 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
=<< Proposals era -> Gen (GovAction era)
forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
Proposals era -> Gen (GovAction era)
genGovAction Proposals era
ps
    ProposalsNewActions era -> Gen (ProposalsNewActions era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ProposalsNewActions era -> Gen (ProposalsNewActions era))
-> ProposalsNewActions era -> Gen (ProposalsNewActions era)
forall a b. (a -> b) -> a -> b
$ Proposals era -> [GovActionState era] -> ProposalsNewActions era
forall era.
Proposals era -> [GovActionState era] -> ProposalsNewActions era
ProposalsNewActions Proposals era
ps [GovActionState era]
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
  GovRelation StrictMaybe era
pgais <- Gen (GovRelation StrictMaybe era)
forall a. Arbitrary a => Gen a
arbitrary
  Int
i <- (Int, Int) -> Gen Int
chooseInt (Int, Int)
range
  Proposals era -> Int -> Gen (Proposals era)
go (Proposals era
forall a. Default a => a
def Proposals era -> (Proposals era -> Proposals era) -> Proposals era
forall a b. a -> (a -> b) -> b
& (GovRelation PRoot era -> Identity (GovRelation PRoot era))
-> Proposals era -> Identity (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PRoot era -> f (GovRelation PRoot era))
-> Proposals era -> f (Proposals era)
pRootsL ((GovRelation PRoot era -> Identity (GovRelation PRoot era))
 -> Proposals era -> Identity (Proposals era))
-> GovRelation PRoot era -> Proposals era -> Proposals era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ GovRelation StrictMaybe era -> GovRelation PRoot era
forall era. GovRelation StrictMaybe era -> GovRelation PRoot era
fromPrevGovActionIds GovRelation StrictMaybe era
pgais) Int
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
          GovActionState era
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 GovActionState era -> Proposals era -> Maybe (Proposals era)
forall era.
(EraPParams era, HasCallStack) =>
GovActionState era -> Proposals era -> Maybe (Proposals era)
proposalsAddAction GovActionState era
gas Proposals era
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 era)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'PParamUpdatePurpose era)
     -> f (f (GovPurposeId 'PParamUpdatePurpose era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p era) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> Gen (GovAction era)
forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> Gen (GovAction era)
genPParamUpdateGovAction (f (GovPurposeId 'PParamUpdatePurpose era)
 -> f (f (GovPurposeId 'PParamUpdatePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'PParamUpdatePurpose era)
 -> f2 (f1 (GovPurposeId 'PParamUpdatePurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'PParamUpdatePurpose era)
 -> f (f (GovPurposeId 'PParamUpdatePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grPParamUpdateL
    , (StrictMaybe (GovPurposeId 'HardForkPurpose era)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'HardForkPurpose era)
     -> f (f (GovPurposeId 'HardForkPurpose era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p era) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> Gen (GovAction era)
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> Gen (GovAction era)
genHardForkGovAction (f (GovPurposeId 'HardForkPurpose era)
 -> f (f (GovPurposeId 'HardForkPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'HardForkPurpose era)
 -> f2 (f1 (GovPurposeId 'HardForkPurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'HardForkPurpose era)
 -> f (f (GovPurposeId 'HardForkPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grHardForkL
    , Gen (GovAction era)
forall era. Gen (GovAction era)
genTreasuryWithdrawals
    , (StrictMaybe (GovPurposeId 'CommitteePurpose era)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'CommitteePurpose era)
     -> f (f (GovPurposeId 'CommitteePurpose era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p era) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Gen (GovAction era)
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Gen (GovAction era)
genCommitteeGovAction (f (GovPurposeId 'CommitteePurpose era)
 -> f (f (GovPurposeId 'CommitteePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'CommitteePurpose era)
 -> f2 (f1 (GovPurposeId 'CommitteePurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'CommitteePurpose era)
 -> f (f (GovPurposeId 'CommitteePurpose era)))
-> GovRelation f era -> f (GovRelation f era)
grCommitteeL
    , (StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
 -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId 'ConstitutionPurpose era)
     -> f (f (GovPurposeId 'ConstitutionPurpose era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p era) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Gen (GovAction era)
forall era.
Era era =>
StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Gen (GovAction era)
genConstitutionGovAction (f (GovPurposeId 'ConstitutionPurpose era)
 -> f (f (GovPurposeId 'ConstitutionPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
forall (f1 :: * -> *) era (f2 :: * -> *).
Functor f2 =>
(f1 (GovPurposeId 'ConstitutionPurpose era)
 -> f2 (f1 (GovPurposeId 'ConstitutionPurpose era)))
-> GovRelation f1 era -> f2 (GovRelation f1 era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId 'ConstitutionPurpose era)
 -> f (f (GovPurposeId 'ConstitutionPurpose era)))
-> GovRelation f era -> f (GovRelation f era)
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 era) -> Gen (GovAction era)) ->
      (forall f. Lens' (GovRelation f era) (f (GovPurposeId p era))) ->
      Gen (GovAction era)
    genWithParent :: forall (p :: GovActionPurpose).
(StrictMaybe (GovPurposeId p era) -> Gen (GovAction era))
-> (forall (f :: * -> *) (f :: * -> *).
    Functor f =>
    (f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
    -> GovRelation f era -> f (GovRelation f era))
-> Gen (GovAction era)
genWithParent StrictMaybe (GovPurposeId p era) -> Gen (GovAction era)
gen forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL =
      StrictMaybe (GovPurposeId p era) -> Gen (GovAction era)
gen
        (StrictMaybe (GovPurposeId p era) -> Gen (GovAction era))
-> Gen (StrictMaybe (GovPurposeId p era)) -> Gen (GovAction era)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< [StrictMaybe (GovPurposeId p era)]
-> Gen (StrictMaybe (GovPurposeId p era))
forall a. HasCallStack => [a] -> Gen a
elements
          ( (Proposals era
ps Proposals era
-> Getting
     (StrictMaybe (GovPurposeId p era))
     (Proposals era)
     (StrictMaybe (GovPurposeId p era))
-> StrictMaybe (GovPurposeId p era)
forall s a. s -> Getting a s a -> a
^. (GovRelation PRoot era
 -> Const
      (StrictMaybe (GovPurposeId p era)) (GovRelation PRoot era))
-> Proposals era
-> Const (StrictMaybe (GovPurposeId p era)) (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PRoot era -> f (GovRelation PRoot era))
-> Proposals era -> f (Proposals era)
pRootsL ((GovRelation PRoot era
  -> Const
       (StrictMaybe (GovPurposeId p era)) (GovRelation PRoot era))
 -> Proposals era
 -> Const (StrictMaybe (GovPurposeId p era)) (Proposals era))
-> ((StrictMaybe (GovPurposeId p era)
     -> Const
          (StrictMaybe (GovPurposeId p era))
          (StrictMaybe (GovPurposeId p era)))
    -> GovRelation PRoot era
    -> Const
         (StrictMaybe (GovPurposeId p era)) (GovRelation PRoot era))
-> Getting
     (StrictMaybe (GovPurposeId p era))
     (Proposals era)
     (StrictMaybe (GovPurposeId p era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PRoot (GovPurposeId p era)
 -> Const
      (StrictMaybe (GovPurposeId p era)) (PRoot (GovPurposeId p era)))
-> GovRelation PRoot era
-> Const (StrictMaybe (GovPurposeId p era)) (GovRelation PRoot era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL ((PRoot (GovPurposeId p era)
  -> Const
       (StrictMaybe (GovPurposeId p era)) (PRoot (GovPurposeId p era)))
 -> GovRelation PRoot era
 -> Const
      (StrictMaybe (GovPurposeId p era)) (GovRelation PRoot era))
-> ((StrictMaybe (GovPurposeId p era)
     -> Const
          (StrictMaybe (GovPurposeId p era))
          (StrictMaybe (GovPurposeId p era)))
    -> PRoot (GovPurposeId p era)
    -> Const
         (StrictMaybe (GovPurposeId p era)) (PRoot (GovPurposeId p era)))
-> (StrictMaybe (GovPurposeId p era)
    -> Const
         (StrictMaybe (GovPurposeId p era))
         (StrictMaybe (GovPurposeId p era)))
-> GovRelation PRoot era
-> Const (StrictMaybe (GovPurposeId p era)) (GovRelation PRoot era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (GovPurposeId p era)
 -> Const
      (StrictMaybe (GovPurposeId p era))
      (StrictMaybe (GovPurposeId p era)))
-> PRoot (GovPurposeId p era)
-> Const
     (StrictMaybe (GovPurposeId p era)) (PRoot (GovPurposeId p era))
forall a (f :: * -> *).
Functor f =>
(StrictMaybe a -> f (StrictMaybe a)) -> PRoot a -> f (PRoot a)
prRootL)
              StrictMaybe (GovPurposeId p era)
-> [StrictMaybe (GovPurposeId p era)]
-> [StrictMaybe (GovPurposeId p era)]
forall a. a -> [a] -> [a]
: (GovPurposeId p era -> StrictMaybe (GovPurposeId p era))
-> [GovPurposeId p era] -> [StrictMaybe (GovPurposeId p era)]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap GovPurposeId p era -> StrictMaybe (GovPurposeId p era)
forall a. a -> StrictMaybe a
SJust (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
-> [GovPurposeId p era]
forall k a. Map k a -> [k]
Map.keys (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
 -> [GovPurposeId p era])
-> Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
-> [GovPurposeId p era]
forall a b. (a -> b) -> a -> b
$ Proposals era
ps Proposals era
-> Getting
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (Proposals era)
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
-> Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
forall s a. s -> Getting a s a -> a
^. (GovRelation PGraph era
 -> Const
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
      (GovRelation PGraph era))
-> Proposals era
-> Const
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (Proposals era)
forall era (f :: * -> *).
Functor f =>
(GovRelation PGraph era -> f (GovRelation PGraph era))
-> Proposals era -> f (Proposals era)
pGraphL ((GovRelation PGraph era
  -> Const
       (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
       (GovRelation PGraph era))
 -> Proposals era
 -> Const
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
      (Proposals era))
-> ((Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
     -> Const
          (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
          (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
    -> GovRelation PGraph era
    -> Const
         (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
         (GovRelation PGraph era))
-> Getting
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (Proposals era)
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PGraph (GovPurposeId p era)
 -> Const
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
      (PGraph (GovPurposeId p era)))
-> GovRelation PGraph era
-> Const
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (GovRelation PGraph era)
forall (f :: * -> *) (f :: * -> *).
Functor f =>
(f (GovPurposeId p era) -> f (f (GovPurposeId p era)))
-> GovRelation f era -> f (GovRelation f era)
govRelL ((PGraph (GovPurposeId p era)
  -> Const
       (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
       (PGraph (GovPurposeId p era)))
 -> GovRelation PGraph era
 -> Const
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
      (GovRelation PGraph era))
-> ((Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
     -> Const
          (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
          (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
    -> PGraph (GovPurposeId p era)
    -> Const
         (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
         (PGraph (GovPurposeId p era)))
-> (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
    -> Const
         (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
         (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
-> GovRelation PGraph era
-> Const
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (GovRelation PGraph era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))
 -> Const
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
      (Map (GovPurposeId p era) (PEdges (GovPurposeId p era))))
-> PGraph (GovPurposeId p era)
-> Const
     (Map (GovPurposeId p era) (PEdges (GovPurposeId p era)))
     (PGraph (GovPurposeId p era))
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 era) ->
  Gen (GovAction era)
genPParamUpdateGovAction :: forall era.
(Era era, Arbitrary (PParamsHKD StrictMaybe era)) =>
StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> Gen (GovAction era)
genPParamUpdateGovAction StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
parent = StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
ParameterChange StrictMaybe (GovPurposeId 'PParamUpdatePurpose era)
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 era) ->
  Gen (GovAction era)
genHardForkGovAction :: forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> Gen (GovAction era)
genHardForkGovAction StrictMaybe (GovPurposeId 'HardForkPurpose era)
parent = StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> ProtVer -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose era)
-> ProtVer -> GovAction era
HardForkInitiation StrictMaybe (GovPurposeId 'HardForkPurpose era)
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 era) ->
  Gen (GovAction era)
genCommitteeGovAction :: forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Gen (GovAction era)
genCommitteeGovAction StrictMaybe (GovPurposeId 'CommitteePurpose era)
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 era) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era) -> GovAction era
NoConfidence StrictMaybe (GovPurposeId 'CommitteePurpose era)
parent
    , StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Set (Credential 'ColdCommitteeRole)
-> Map (Credential 'ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era)
-> Set (Credential 'ColdCommitteeRole)
-> Map (Credential 'ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
UpdateCommittee StrictMaybe (GovPurposeId 'CommitteePurpose era)
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 era) ->
  Gen (GovAction era)
genConstitutionGovAction :: forall era.
Era era =>
StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Gen (GovAction era)
genConstitutionGovAction StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
parent = StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Constitution era -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
-> Constitution era -> GovAction era
NewConstitution StrictMaybe (GovPurposeId 'ConstitutionPurpose era)
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
    [GovActionState era]
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
    [GovActionState era]
shuffledGass <- [GovActionState era] -> Gen [GovActionState era]
forall a. [a] -> Gen [a]
shuffle [GovActionState era]
gass
    ShuffledGovActionStates era -> Gen (ShuffledGovActionStates era)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ShuffledGovActionStates era -> Gen (ShuffledGovActionStates era))
-> ShuffledGovActionStates era -> Gen (ShuffledGovActionStates era)
forall a b. (a -> b) -> a -> b
$ [GovActionState era]
-> [GovActionState era] -> ShuffledGovActionStates era
forall era.
[GovActionState era]
-> [GovActionState era] -> ShuffledGovActionStates era
ShuffledGovActionStates [GovActionState era]
gass [GovActionState era]
shuffledGass

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

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

genTreasuryWithdrawals :: Gen (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 era) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose era) -> GovAction era
NoConfidence (StrictMaybe (GovPurposeId 'CommitteePurpose era) -> GovAction era)
-> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose era))
-> Gen (GovAction era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictMaybe (GovPurposeId 'CommitteePurpose era))
forall a. Arbitrary a => Gen a
arbitrary

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

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

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 era)

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 ConwayEra) where
  arbitrary :: Gen (TxBody 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 'Witness)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> TxBody 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 'Witness)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures ConwayEra
-> OSet (ProposalProcedure ConwayEra)
-> StrictMaybe Coin
-> Coin
-> TxBody 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 'Witness)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures ConwayEra
 -> OSet (ProposalProcedure ConwayEra)
 -> StrictMaybe Coin
 -> Coin
 -> TxBody 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 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody 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 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen (Set TxIn)
-> Gen
     (StrictSeq (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen (StrictSeq (Sized (BabbageTxOut ConwayEra)))
-> Gen
     (StrictMaybe (Sized (BabbageTxOut ConwayEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen (StrictMaybe (Sized (BabbageTxOut ConwayEra)))
-> Gen
     (StrictMaybe Coin
      -> OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen (StrictMaybe Coin)
-> Gen
     (OSet (ConwayTxCert ConwayEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen (OSet (ConwayTxCert ConwayEra))
-> Gen
     (Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen Withdrawals
-> Gen
     (Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen Coin
-> Gen
     (ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen ValidityInterval
-> Gen
     (Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen (Set (KeyHash 'Witness))
-> Gen
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 'Witness))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures ConwayEra
   -> OSet (ProposalProcedure ConwayEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody ConwayEra)
-> Gen MultiAsset
-> Gen
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 ConwayEra)
-> Gen (StrictMaybe ScriptIntegrityHash)
-> Gen
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 ConwayEra)
-> Gen (StrictMaybe TxAuxDataHash)
-> Gen
     (StrictMaybe Network
      -> VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 ConwayEra)
-> Gen (StrictMaybe Network)
-> Gen
     (VotingProcedures ConwayEra
      -> OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 ConwayEra)
-> Gen (VotingProcedures ConwayEra)
-> Gen
     (OSet (ProposalProcedure ConwayEra)
      -> StrictMaybe Coin -> Coin -> TxBody 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 ConwayEra)
-> Gen (OSet (ProposalProcedure ConwayEra))
-> Gen (StrictMaybe Coin -> Coin -> TxBody 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 ConwayEra)
-> Gen (StrictMaybe Coin) -> Gen (Coin -> TxBody 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 ConwayEra)
-> Gen Coin -> Gen (TxBody 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
-> GovEnv era
forall era.
TxId
-> EpochNo
-> PParams era
-> StrictMaybe ScriptHash
-> CertState era
-> GovEnv era
GovEnv
      (TxId
 -> EpochNo
 -> PParams era
 -> StrictMaybe ScriptHash
 -> CertState era
 -> GovEnv era)
-> Gen TxId
-> Gen
     (EpochNo
      -> PParams era
      -> StrictMaybe ScriptHash
      -> CertState 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
   -> GovEnv era)
-> Gen EpochNo
-> Gen
     (PParams era
      -> StrictMaybe ScriptHash -> CertState 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 -> GovEnv era)
-> Gen (PParams era)
-> Gen (StrictMaybe ScriptHash -> CertState 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 -> GovEnv era)
-> Gen (StrictMaybe ScriptHash)
-> Gen (CertState 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 -> GovEnv era)
-> Gen (CertState 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 (CertState 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 Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> HKDNoUpdate Identity ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval
-> ConwayPParams Identity era
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
-> ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval
-> ConwayPParams Identity era
forall (f :: * -> *) era.
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f NonNegativeInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> HKDNoUpdate f ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f CoinPerByte
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f CostModels
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Prices
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval
-> ConwayPParams f era
ConwayPParams
      (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
 -> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
 -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
 -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      Identity
      EpochInterval
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      Identity
      NonNegativeInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
 -> ProtVer
 -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
 -> THKD
      ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
 -> THKD
      ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
 -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      Identity
      PoolVotingThresholds
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      Identity
      DRepVotingThresholds
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
 -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup)
      Identity
      NonNegativeInterval
 -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        EpochInterval)
-> Gen
     (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           Identity
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        Identity
        NonNegativeInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     Identity
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
      -> ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval
   -> ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
-> Gen
     (ProtVer
      -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ProtVer
   -> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen ProtVer
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen ProtVer
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) Identity CoinPerByte)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
HKD Identity CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels
forall (t :: PPGroups) (f :: * -> *) a. HKD f a -> THKD t f a
THKD (CostModels
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels)
-> Gen CostModels
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity CostModels)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen CostModels
forall a. Arbitrary a => Gen a
arbitrary)
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) Identity Prices)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
-> Gen
     (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
      -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) Identity Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16
   -> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           Identity
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        PoolVotingThresholds)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     PoolVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        Identity
        DRepVotingThresholds)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     Identity
     DRepVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
-> Gen
     (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           Identity
           NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval
      -> ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) Identity EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval
   -> ConwayPParams Identity era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        Identity
        NonNegativeInterval)
-> Gen (ConwayPParams Identity era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     Identity
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary

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

instance 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 Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> HKDNoUpdate StrictMaybe ProtVer
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval
-> ConwayPParams StrictMaybe era
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
-> NoUpdate ProtVer
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
-> THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
-> THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval
-> ConwayPParams StrictMaybe era
forall (f :: * -> *) era.
THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word16
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f NonNegativeInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f UnitInterval
-> HKDNoUpdate f ProtVer
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) f CoinPerByte
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f CostModels
-> THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) f Prices
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f OrdExUnits
-> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) f Word32
-> THKD ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'NetworkGroup 'NoStakePoolGroup) f Word16
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f PoolVotingThresholds
-> THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) f DRepVotingThresholds
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Word16
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD ('PPGroups 'GovGroup 'SecurityGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f Coin
-> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) f EpochInterval
-> THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) f NonNegativeInterval
-> ConwayPParams f era
ConwayPParams
      (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
 -> THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      EpochInterval
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      NonNegativeInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
      StrictMaybe
      UnitInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
      StrictMaybe
      UnitInterval
 -> NoUpdate ProtVer
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
      StrictMaybe
      CostModels
 -> THKD
      ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
 -> THKD
      ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
 -> THKD
      ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
 -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
 -> THKD
      ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      StrictMaybe
      PoolVotingThresholds
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup)
      StrictMaybe
      DRepVotingThresholds
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
 -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
 -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
 -> THKD
      ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
 -> THKD
      ('PPGroups 'EconomicGroup 'SecurityGroup)
      StrictMaybe
      NonNegativeInterval
 -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        NonNegativeInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
           StrictMaybe
           UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval
      -> NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval
   -> NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
        StrictMaybe
        UnitInterval)
-> Gen
     (NoUpdate ProtVer
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup)
     StrictMaybe
     UnitInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (NoUpdate ProtVer
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen (NoUpdate ProtVer)
-> Gen
     (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NoUpdate ProtVer -> Gen (NoUpdate ProtVer)
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure NoUpdate ProtVer
forall a. NoUpdate a
NoUpdate
      Gen
  (THKD ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
           StrictMaybe
           CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels
      -> THKD
           ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup) StrictMaybe CoinPerByte)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
   -> THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
        StrictMaybe
        CostModels)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (StrictMaybe CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
HKD StrictMaybe CostModels
-> THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup)
     StrictMaybe
     CostModels
forall (t :: PPGroups) (f :: * -> *) a. HKD f a -> THKD t f a
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 Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
      -> THKD
           ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'NoStakePoolGroup) StrictMaybe Prices)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits
   -> THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
      -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits
   -> THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
      -> THKD
           ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe OrdExUnits)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32
   -> THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'NetworkGroup 'SecurityGroup) StrictMaybe Word32)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'TechnicalGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup)
           StrictMaybe
           DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'NetworkGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        PoolVotingThresholds)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     PoolVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup)
        StrictMaybe
        DRepVotingThresholds)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup)
     StrictMaybe
     DRepVotingThresholds)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Word16)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
-> Gen
     (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
      -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin
   -> THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
      -> THKD
           ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'SecurityGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin
   -> THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
      -> THKD
           ('PPGroups 'EconomicGroup 'SecurityGroup)
           StrictMaybe
           NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (THKD ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval
   -> THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval
      -> ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'GovGroup 'NoStakePoolGroup) StrictMaybe EpochInterval)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval
   -> ConwayPParams StrictMaybe era)
-> Gen
     (THKD
        ('PPGroups 'EconomicGroup 'SecurityGroup)
        StrictMaybe
        NonNegativeInterval)
-> Gen (ConwayPParams StrictMaybe era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen
  (THKD
     ('PPGroups 'EconomicGroup 'SecurityGroup)
     StrictMaybe
     NonNegativeInterval)
forall a. Arbitrary a => Gen a
arbitrary

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

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 (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