{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE MonoLocalBinds #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Conway.HuddleSpec ( module Cardano.Ledger.Babbage.HuddleSpec, conwayCDDL, conwayMultiasset, conwayValueRule, conwayMintRule, conwayWithdrawalsRule, conwayRedeemer, conwayRedeemerTag, anchorRule, drepRule, voterRule, dnsNameRule, urlRule, voteRule, drepCredentialRule, committeeHotCredentialRule, committeeColdCredentialRule, accountRegistrationDepositCertGroup, accountUnregistrationDepositCertGroup, delegationToDrepCertGroup, delegationToStakePoolAndDrepCertGroup, accountRegistrationDelegationToStakePoolCertGroup, accountRegistrationDelegationToDrepCertGroup, accountRegistrationDelegationToStakePoolAndDrepCertGroup, committeeAuthorizationCertGroup, committeeResignationCertGroup, drepRegistrationCertGroup, drepUnregistrationCertGroup, drepUpdateCertGroup, votingProcedureRule, votingProceduresRule, constitutionRule, parameterChangeActionGroup, hardForkInitiationActionGroup, treasuryWithdrawalsActionGroup, noConfidenceGroup, updateCommitteeGroup, newConstitutionGroup, infoActionRule, govActionRule, proposalProcedureRule, proposalProceduresRule, poolVotingThresholdsRule, drepVotingThresholdsRule, maybeTaggedSet, maybeTaggedNonemptySet, maybeTaggedNonemptyOset, policyHashRule, potentialLanguagesRule, conwayCertificateRule, certificatesRule, ) where import Cardano.Ledger.Babbage.HuddleSpec hiding ( alonzoRedeemer, alonzoRedeemerTag, dnsNameRule, maryMintRule, maryMultiasset, maryValueRule, shelleyWithdrawalsRule, urlRule, ) import Cardano.Ledger.Conway (ConwayEra) import Codec.CBOR.Cuddle.Comments ((//-)) import Codec.CBOR.Cuddle.Huddle import Data.Proxy (Proxy (..)) import Data.Text qualified as T import Data.Word (Word64) import Text.Heredoc import Prelude hiding ((/)) conwayCDDL :: Huddle conwayCDDL :: Huddle conwayCDDL = [HuddleItem] -> Huddle collectFromInit [ Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"block" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"kes_signature" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"language" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"potential_languages" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"signkey_kes" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"certificate" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"policy_id" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"asset_name" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemer" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @ConwayEra) ] anchorRule :: forall era. (HuddleRule "url" era, HuddleRule "hash32" era) => Proxy era -> Rule anchorRule :: forall era. (HuddleRule "url" era, HuddleRule "hash32" era) => Proxy era -> Rule anchorRule Proxy era p = Text "anchor" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "anchor_url" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"url" Proxy era p , Key "anchor_data_hash" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy era p ] drepRule :: forall era. (HuddleRule "addr_keyhash" era, HuddleRule "script_hash" era) => Proxy era -> Rule drepRule :: forall era. (HuddleRule "addr_keyhash" era, HuddleRule "script_hash" era) => Proxy era -> Rule drepRule Proxy era p = Text "drep" Text -> Choice ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 0, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"addr_keyhash" Proxy era p)] ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 1, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 2] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 3] voterRule :: forall era. (HuddleRule "addr_keyhash" era, HuddleRule "script_hash" era) => Proxy era -> Rule voterRule :: forall era. (HuddleRule "addr_keyhash" era, HuddleRule "script_hash" era) => Proxy era -> Rule voterRule Proxy era p = Text "voter" Text -> Choice ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 0, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"addr_keyhash" Proxy era p)] ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 1, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 2, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"addr_keyhash" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 3, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 4, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"addr_keyhash" Proxy era p)] dnsNameRule :: Proxy era -> Rule dnsNameRule :: forall era. Proxy era -> Rule dnsNameRule Proxy era _ = Text "dns_name" Text -> Constrained -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Value Text VText Value Text -> (Word64, Word64) -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 0 :: Word64, Word64 128 :: Word64) urlRule :: Proxy era -> Rule urlRule :: forall era. Proxy era -> Rule urlRule Proxy era _ = Text "url" Text -> Constrained -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Value Text VText Value Text -> (Word64, Word64) -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 0 :: Word64, Word64 128 :: Word64) voteRule :: Proxy era -> Rule voteRule :: forall era. Proxy era -> Rule voteRule Proxy era _ = Text "vote" Text -> Ranged -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Integer 0 :: Integer) Integer -> Integer -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... (Integer 2 :: Integer) drepCredentialRule :: forall era. HuddleRule "credential" era => Proxy era -> Rule drepCredentialRule :: forall era. HuddleRule "credential" era => Proxy era -> Rule drepCredentialRule Proxy era p = Text "drep_credential" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"credential" Proxy era p committeeHotCredentialRule :: forall era. HuddleRule "credential" era => Proxy era -> Rule committeeHotCredentialRule :: forall era. HuddleRule "credential" era => Proxy era -> Rule committeeHotCredentialRule Proxy era p = Text "committee_hot_credential" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"credential" Proxy era p committeeColdCredentialRule :: forall era. HuddleRule "credential" era => Proxy era -> Rule committeeColdCredentialRule :: forall era. HuddleRule "credential" era => Proxy era -> Rule committeeColdCredentialRule Proxy era p = Text "committee_cold_credential" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"credential" Proxy era p policyHashRule :: forall era. HuddleRule "script_hash" era => Proxy era -> Rule policyHashRule :: forall era. HuddleRule "script_hash" era => Proxy era -> Rule policyHashRule Proxy era p = Text "policy_hash" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy era p potentialLanguagesRule :: Proxy era -> Rule potentialLanguagesRule :: forall era. Proxy era -> Rule potentialLanguagesRule Proxy era _ = Text "potential_languages" Text -> Ranged -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Integer 0 :: Integer) Integer -> Integer -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... (Integer 255 :: Integer) conwayCertificateRule :: forall era. ( HuddleGroup "account_registration_cert" era , HuddleGroup "account_unregistration_cert" era , HuddleGroup "delegation_to_stake_pool_cert" era , HuddleGroup "pool_registration_cert" era , HuddleGroup "pool_retirement_cert" era , HuddleGroup "account_registration_deposit_cert" era , HuddleGroup "account_unregistration_deposit_cert" era , HuddleGroup "delegation_to_drep_cert" era , HuddleGroup "delegation_to_stake_pool_and_drep_cert" era , HuddleGroup "account_registration_delegation_to_stake_pool_cert" era , HuddleGroup "account_registration_delegation_to_drep_cert" era , HuddleGroup "account_registration_delegation_to_stake_pool_and_drep_cert" era , HuddleGroup "committee_authorization_cert" era , HuddleGroup "committee_resignation_cert" era , HuddleGroup "drep_registration_cert" era , HuddleGroup "drep_unregistration_cert" era , HuddleGroup "drep_update_cert" era ) => Proxy era -> Rule conwayCertificateRule :: forall era. (HuddleGroup "account_registration_cert" era, HuddleGroup "account_unregistration_cert" era, HuddleGroup "delegation_to_stake_pool_cert" era, HuddleGroup "pool_registration_cert" era, HuddleGroup "pool_retirement_cert" era, HuddleGroup "account_registration_deposit_cert" era, HuddleGroup "account_unregistration_deposit_cert" era, HuddleGroup "delegation_to_drep_cert" era, HuddleGroup "delegation_to_stake_pool_and_drep_cert" era, HuddleGroup "account_registration_delegation_to_stake_pool_cert" era, HuddleGroup "account_registration_delegation_to_drep_cert" era, HuddleGroup "account_registration_delegation_to_stake_pool_and_drep_cert" era, HuddleGroup "committee_authorization_cert" era, HuddleGroup "committee_resignation_cert" era, HuddleGroup "drep_registration_cert" era, HuddleGroup "drep_unregistration_cert" era, HuddleGroup "drep_update_cert" era) => Proxy era -> Rule conwayCertificateRule Proxy era p = Text "certificate" Text -> Choice ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_registration_cert" Proxy era p] ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_unregistration_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"delegation_to_stake_pool_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"pool_registration_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"pool_retirement_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_registration_deposit_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_unregistration_deposit_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"delegation_to_drep_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"delegation_to_stake_pool_and_drep_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_registration_delegation_to_stake_pool_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_registration_delegation_to_drep_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"account_registration_delegation_to_stake_pool_and_drep_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"committee_authorization_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"committee_resignation_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"drep_registration_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"drep_unregistration_cert" Proxy era p] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"drep_update_cert" Proxy era p] certificatesRule :: forall era. HuddleRule "certificate" era => Proxy era -> Rule certificatesRule :: forall era. HuddleRule "certificate" era => Proxy era -> Rule certificatesRule Proxy era p = Text "certificates" Text -> GRuleCall -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptyOset (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"certificate" Proxy era p) accountRegistrationDepositCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDepositCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDepositCertGroup Proxy era p = Text "account_registration_deposit_cert" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 7, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p), Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p)] accountUnregistrationDepositCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group accountUnregistrationDepositCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group accountUnregistrationDepositCertGroup Proxy era p = Text "account_unregistration_deposit_cert" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 8, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p), Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p)] delegationToDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "drep" era) => Proxy era -> Named Group delegationToDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "drep" era) => Proxy era -> Named Group delegationToDrepCertGroup Proxy era p = Text "delegation_to_drep_cert" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 9, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p), Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep" Proxy era p)] delegationToStakePoolAndDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "drep" era) => Proxy era -> Named Group delegationToStakePoolAndDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "drep" era) => Proxy era -> Named Group delegationToStakePoolAndDrepCertGroup Proxy era p = Text "delegation_to_stake_pool_and_drep_cert" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 10 , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"pool_keyhash" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep" Proxy era p) ] accountRegistrationDelegationToStakePoolCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToStakePoolCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToStakePoolCertGroup Proxy era p = Text "account_registration_delegation_to_stake_pool_cert" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 11 , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"pool_keyhash" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p) ] accountRegistrationDelegationToDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "drep" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "drep" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToDrepCertGroup Proxy era p = Text "account_registration_delegation_to_drep_cert" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 12 , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p) ] accountRegistrationDelegationToStakePoolAndDrepCertGroup :: forall era. ( HuddleRule "stake_credential" era , HuddleRule "pool_keyhash" era , HuddleRule "drep" era , HuddleRule "coin" era ) => Proxy era -> Named Group accountRegistrationDelegationToStakePoolAndDrepCertGroup :: forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "drep" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToStakePoolAndDrepCertGroup Proxy era p = Text "account_registration_delegation_to_stake_pool_and_drep_cert" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 13 , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"stake_credential" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"pool_keyhash" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p) ] committeeAuthorizationCertGroup :: forall era. ( HuddleRule "committee_cold_credential" era , HuddleRule "committee_hot_credential" era ) => Proxy era -> Named Group committeeAuthorizationCertGroup :: forall era. (HuddleRule "committee_cold_credential" era, HuddleRule "committee_hot_credential" era) => Proxy era -> Named Group committeeAuthorizationCertGroup Proxy era p = Text "committee_authorization_cert" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 14 , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"committee_cold_credential" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"committee_hot_credential" Proxy era p) ] committeeResignationCertGroup :: forall era. (HuddleRule "committee_cold_credential" era, HuddleRule "anchor" era) => Proxy era -> Named Group committeeResignationCertGroup :: forall era. (HuddleRule "committee_cold_credential" era, HuddleRule "anchor" era) => Proxy era -> Named Group committeeResignationCertGroup Proxy era p = Text "committee_resignation_cert" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 15, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"committee_cold_credential" Proxy era p), Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"anchor" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil)] drepRegistrationCertGroup :: forall era. (HuddleRule "drep_credential" era, HuddleRule "coin" era, HuddleRule "anchor" era) => Proxy era -> Named Group drepRegistrationCertGroup :: forall era. (HuddleRule "drep_credential" era, HuddleRule "coin" era, HuddleRule "anchor" era) => Proxy era -> Named Group drepRegistrationCertGroup Proxy era p = Text "drep_registration_cert" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 16 , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep_credential" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p) , Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"anchor" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil) ] drepUnregistrationCertGroup :: forall era. (HuddleRule "drep_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group drepUnregistrationCertGroup :: forall era. (HuddleRule "drep_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group drepUnregistrationCertGroup Proxy era p = Text "drep_unregistration_cert" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 17, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep_credential" Proxy era p), Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p)] drepUpdateCertGroup :: forall era. (HuddleRule "drep_credential" era, HuddleRule "anchor" era) => Proxy era -> Named Group drepUpdateCertGroup :: forall era. (HuddleRule "drep_credential" era, HuddleRule "anchor" era) => Proxy era -> Named Group drepUpdateCertGroup Proxy era p = Text "drep_update_cert" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 18, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep_credential" Proxy era p), Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"anchor" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil)] votingProcedureRule :: forall era. (HuddleRule "vote" era, HuddleRule "anchor" era) => Proxy era -> Rule votingProcedureRule :: forall era. (HuddleRule "vote" era, HuddleRule "anchor" era) => Proxy era -> Rule votingProcedureRule Proxy era p = Text "voting_procedure" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vote" Proxy era p), Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"anchor" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil)] votingProceduresRule :: forall era. ( HuddleRule "voter" era , HuddleRule "gov_action_id" era , HuddleRule "voting_procedure" era ) => Proxy era -> Rule votingProceduresRule :: forall era. (HuddleRule "voter" era, HuddleRule "gov_action_id" era, HuddleRule "voting_procedure" era) => Proxy era -> Rule votingProceduresRule Proxy era p = Text "voting_procedures" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"voter" Proxy era p) Key -> MapChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> MapChoice -> MapChoice mp [Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action_id" Proxy era p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"voting_procedure" Proxy era p] ] constitutionRule :: forall era. (HuddleRule "anchor" era, HuddleRule "script_hash" era) => Proxy era -> Rule constitutionRule :: forall era. (HuddleRule "anchor" era, HuddleRule "script_hash" era) => Proxy era -> Rule constitutionRule Proxy era p = Text "constitution" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"anchor" Proxy era p) , Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil) ] parameterChangeActionGroup :: forall era. ( HuddleRule "gov_action_id" era , HuddleRule "protocol_param_update" era , HuddleRule "policy_hash" era ) => Proxy era -> Named Group parameterChangeActionGroup :: forall era. (HuddleRule "gov_action_id" era, HuddleRule "protocol_param_update" era, HuddleRule "policy_hash" era) => Proxy era -> Named Group parameterChangeActionGroup Proxy era p = Text "parameter_change_action" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 0 , Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action_id" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil , Rule -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item Group) -> Rule -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"protocol_param_update" Proxy era p , Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"policy_hash" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil ] hardForkInitiationActionGroup :: forall era. (HuddleRule "gov_action_id" era, HuddleRule "protocol_version" era) => Proxy era -> Named Group hardForkInitiationActionGroup :: forall era. (HuddleRule "gov_action_id" era, HuddleRule "protocol_version" era) => Proxy era -> Named Group hardForkInitiationActionGroup Proxy era p = Text "hard_fork_initiation_action" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 1, Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action_id" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil, Rule -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item Group) -> Rule -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"protocol_version" Proxy era p] treasuryWithdrawalsActionGroup :: forall era. (HuddleRule "reward_account" era, HuddleRule "coin" era, HuddleRule "policy_hash" era) => Proxy era -> Named Group treasuryWithdrawalsActionGroup :: forall era. (HuddleRule "reward_account" era, HuddleRule "coin" era, HuddleRule "policy_hash" era) => Proxy era -> Named Group treasuryWithdrawalsActionGroup Proxy era p = Text "treasury_withdrawals_action" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 2 , MapChoice -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (MapChoice -> Item Group) -> MapChoice -> Item Group forall a b. (a -> b) -> a -> b $ MapChoice -> MapChoice mp [ Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"reward_account" Proxy era p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p ] , Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"policy_hash" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil ] noConfidenceGroup :: forall era. HuddleRule "gov_action_id" era => Proxy era -> Named Group noConfidenceGroup :: forall era. HuddleRule "gov_action_id" era => Proxy era -> Named Group noConfidenceGroup Proxy era p = Text "no_confidence" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 3, Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action_id" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil] updateCommitteeGroup :: forall era. ( HuddleRule "gov_action_id" era , HuddleRule "committee_cold_credential" era , HuddleRule "epoch" era , HuddleRule "unit_interval" era ) => Proxy era -> Named Group updateCommitteeGroup :: forall era. (HuddleRule "gov_action_id" era, HuddleRule "committee_cold_credential" era, HuddleRule "epoch" era, HuddleRule "unit_interval" era) => Proxy era -> Named Group updateCommitteeGroup Proxy era p = Text "update_committee" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 4 , Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action_id" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil , GRuleCall -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GRuleCall -> Item Group) -> GRuleCall -> Item Group forall a b. (a -> b) -> a -> b $ Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedSet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"committee_cold_credential" Proxy era p) , MapChoice -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (MapChoice -> Item Group) -> MapChoice -> Item Group forall a b. (a -> b) -> a -> b $ MapChoice -> MapChoice mp [ Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"committee_cold_credential" Proxy era p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch" Proxy era p ] , Rule -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item Group) -> Rule -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p ] newConstitutionGroup :: forall era. (HuddleRule "gov_action_id" era, HuddleRule "constitution" era) => Proxy era -> Named Group newConstitutionGroup :: forall era. (HuddleRule "gov_action_id" era, HuddleRule "constitution" era) => Proxy era -> Named Group newConstitutionGroup Proxy era p = Text "new_constitution" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 5 , Choice Type2 -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item Group) -> Choice Type2 -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action_id" Proxy era p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil , Rule -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item Group) -> Rule -> Item Group forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"constitution" Proxy era p ] infoActionRule :: Rule infoActionRule :: Rule infoActionRule = Text "info_action" Text -> Literal -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Integer -> Literal int Integer 6 govActionRule :: forall era. ( HuddleGroup "parameter_change_action" era , HuddleGroup "hard_fork_initiation_action" era , HuddleGroup "treasury_withdrawals_action" era , HuddleGroup "no_confidence" era , HuddleGroup "update_committee" era , HuddleGroup "new_constitution" era , HuddleRule "info_action" era ) => Proxy era -> Rule govActionRule :: forall era. (HuddleGroup "parameter_change_action" era, HuddleGroup "hard_fork_initiation_action" era, HuddleGroup "treasury_withdrawals_action" era, HuddleGroup "no_confidence" era, HuddleGroup "update_committee" era, HuddleGroup "new_constitution" era, HuddleRule "info_action" era) => Proxy era -> Rule govActionRule Proxy era p = Text "gov_action" Text -> Choice ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"parameter_change_action" Proxy era p)] ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"hard_fork_initiation_action" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"treasury_withdrawals_action" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"no_confidence" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"update_committee" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"new_constitution" Proxy era p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"info_action" Proxy era p)] proposalProcedureRule :: forall era. ( HuddleRule "coin" era , HuddleRule "reward_account" era , HuddleRule "gov_action" era , HuddleRule "anchor" era ) => Proxy era -> Rule proposalProcedureRule :: forall era. (HuddleRule "coin" era, HuddleRule "reward_account" era, HuddleRule "gov_action" era, HuddleRule "anchor" era) => Proxy era -> Rule proposalProcedureRule Proxy era p = Text "proposal_procedure" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "deposit" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"reward_account" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"gov_action" Proxy era p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"anchor" Proxy era p) ] proposalProceduresRule :: forall era. HuddleRule "proposal_procedure" era => Proxy era -> Rule proposalProceduresRule :: forall era. HuddleRule "proposal_procedure" era => Proxy era -> Rule proposalProceduresRule Proxy era p = Text "proposal_procedures" Text -> GRuleCall -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptyOset (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"proposal_procedure" Proxy era p) poolVotingThresholdsRule :: forall era. HuddleRule "unit_interval" era => Proxy era -> Rule poolVotingThresholdsRule :: forall era. HuddleRule "unit_interval" era => Proxy era -> Rule poolVotingThresholdsRule Proxy era p = Text "pool_voting_thresholds" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "motion no confidence" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "committee normal" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "committee no confidence" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "hard fork initiation" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "security relevant parameter voting threshold" ] drepVotingThresholdsRule :: forall era. HuddleRule "unit_interval" era => Proxy era -> Rule drepVotingThresholdsRule :: forall era. HuddleRule "unit_interval" era => Proxy era -> Rule drepVotingThresholdsRule Proxy era p = Text "drep_voting_thresholds" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "motion no confidence" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "committee normal" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "committee no confidence" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "update constitution" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "hard fork initiation" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "PP network group" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "PP economic group" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "PP technical group" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "PP governance group" , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy era p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "treasury withdrawal" ] conwayMultiasset :: forall era a. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, IsType0 a) => Proxy era -> a -> GRuleCall conwayMultiasset :: forall era a. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, IsType0 a) => Proxy era -> a -> GRuleCall conwayMultiasset Proxy era p = (GRef -> Rule) -> a -> GRuleCall forall t0. IsType0 t0 => (GRef -> Rule) -> t0 -> GRuleCall binding ((GRef -> Rule) -> a -> GRuleCall) -> (GRef -> Rule) -> a -> GRuleCall forall a b. (a -> b) -> a -> b $ \GRef x -> Text "multiasset" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"policy_id" Proxy era p) Key -> MapChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> MapChoice -> MapChoice mp [Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"asset_name" Proxy era p) Key -> GRef -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> GRef x] ] conwayValueRule :: forall era. ( HuddleRule "policy_id" era , HuddleRule "asset_name" era , HuddleRule "positive_coin" era ) => Proxy era -> Rule conwayValueRule :: forall era. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, HuddleRule "positive_coin" era) => Proxy era -> Rule conwayValueRule Proxy era p = Text "value" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p Rule -> Seal (Choice ArrayChoice) -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> Seal (Choice ArrayChoice) sarr [Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p, GRuleCall -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GRuleCall -> Item ArrayChoice) -> GRuleCall -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ Proxy era -> Rule -> GRuleCall forall era a. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, IsType0 a) => Proxy era -> a -> GRuleCall conwayMultiasset Proxy era p (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_coin" Proxy era p)] conwayMintRule :: forall era. ( HuddleRule "policy_id" era , HuddleRule "asset_name" era , HuddleRule "nonzero_int64" era ) => Proxy era -> Rule conwayMintRule :: forall era. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, HuddleRule "nonzero_int64" era) => Proxy era -> Rule conwayMintRule Proxy era p = Text "mint" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"policy_id" Proxy era p) Key -> MapChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> MapChoice -> MapChoice mp [Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"asset_name" Proxy era p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonzero_int64" Proxy era p] ] conwayWithdrawalsRule :: forall era. Era era => Proxy era -> Rule conwayWithdrawalsRule :: forall era. Era era => Proxy era -> Rule conwayWithdrawalsRule Proxy era p = Text "withdrawals" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"reward_account" Proxy era p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy era p ] conwayRedeemerTag :: Rule conwayRedeemerTag :: Rule conwayRedeemerTag = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|0: spend |1: mint |2: cert |3: reward |4: voting |5: proposing |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "redeemer_tag" Text -> Ranged -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Integer 0 :: Integer) Integer -> Integer -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... (Integer 5 :: Integer) conwayRedeemer :: forall era. ( HuddleRule "redeemer_tag" era , HuddleRule "plutus_data" era , HuddleRule "ex_units" era ) => Proxy era -> Rule conwayRedeemer :: forall era. (HuddleRule "redeemer_tag" era, HuddleRule "plutus_data" era, HuddleRule "ex_units" era) => Proxy era -> Rule conwayRedeemer Proxy era p = Text "redeemer" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "tag" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemer_tag" Proxy era p , Key "index" Key -> Constrained -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64)) , Key "data" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy era p , Key "ex_units" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy era p ] instance HuddleRule "bounded_bytes" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Rule boundedBytesRule instance HuddleRule "distinct_bytes" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Rule distinctBytesRule instance HuddleRule "big_uint" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = Proxy ConwayEra -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigUintRule instance HuddleRule "big_nint" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = Proxy ConwayEra -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigNintRule instance HuddleRule "big_int" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = Proxy ConwayEra -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigIntRule instance HuddleRule "network_id" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Rule networkIdRule instance HuddleRule "dns_name" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Proxy era -> Rule dnsNameRule @ConwayEra instance HuddleRule "url" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Proxy era -> Rule urlRule @ConwayEra instance HuddleRule "major_protocol_version" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule majorProtocolVersionRule @ConwayEra instance HuddleRule "genesis_hash" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule genesisHashRule @ConwayEra instance HuddleRule "genesis_delegate_hash" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule genesisDelegateHashRule @ConwayEra instance HuddleRule "transaction_id" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule transactionIdRule @ConwayEra instance HuddleRule "vkeywitness" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule vkeywitnessRule @ConwayEra instance HuddleRule "bootstrap_witness" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule bootstrapWitnessRule @ConwayEra instance HuddleRule "ex_units" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Rule exUnitsRule instance HuddleRule "positive_interval" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = Proxy ConwayEra -> Rule forall era. Era era => Proxy era -> Rule positiveIntervalRule instance HuddleRule "vote" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Proxy era -> Rule voteRule @ConwayEra instance HuddleRule "asset_name" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Proxy era -> Rule assetNameRule @ConwayEra instance HuddleRule "drep_credential" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "credential" era => Proxy era -> Rule drepCredentialRule @ConwayEra instance HuddleRule "committee_cold_credential" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "credential" era => Proxy era -> Rule committeeColdCredentialRule @ConwayEra instance HuddleRule "committee_hot_credential" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "credential" era => Proxy era -> Rule committeeHotCredentialRule @ConwayEra instance HuddleRule "anchor" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "url" era, HuddleRule "hash32" era) => Proxy era -> Rule anchorRule @ConwayEra instance HuddleRule "drep" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "addr_keyhash" era, HuddleRule "script_hash" era) => Proxy era -> Rule drepRule @ConwayEra instance HuddleRule "voter" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "addr_keyhash" era, HuddleRule "script_hash" era) => Proxy era -> Rule voterRule @ConwayEra instance (Era era, HuddleRule "transaction_id" era) => HuddleRule "gov_action_id" era where huddleRule :: Proxy era -> Rule huddleRule Proxy era p = Text "gov_action_id" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "transaction_id" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_id" Proxy era p , Key "gov_action_index" Key -> Constrained -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64)) ] instance HuddleRule "operational_cert" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule babbageOperationalCertRule @ConwayEra instance HuddleRule "protocol_version" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "major_protocol_version" era => Proxy era -> Rule babbageProtocolVersionRule @ConwayEra instance (Era era, HuddleRule "distinct_bytes" era) => HuddleRule "plutus_v3_script" era where huddleRule :: Proxy era -> Rule huddleRule Proxy era p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Conway introduces Plutus V3 with support for new governance features. | |Note: distinct VBytes ensures uniqueness in test generation. |The cddl tool we use for roundtrip testing doesn't generate |distinct collections, so we use sized variants to ensure uniqueness. |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "plutus_v3_script" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"distinct_bytes" Proxy era p instance Era era => HuddleRule "negative_int64" era where huddleRule :: Proxy era -> Rule huddleRule Proxy era p = Text "negative_int64" Text -> Ranged -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"min_int64" Proxy era p Rule -> Integer -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... (-Integer 1 :: Integer) instance Era era => HuddleRule "positive_int64" era where huddleRule :: Proxy era -> Rule huddleRule Proxy era p = Text "positive_int64" Text -> Ranged -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Integer 1 :: Integer) Integer -> Rule -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"max_int64" Proxy era p instance Era era => HuddleRule "nonzero_int64" era where huddleRule :: Proxy era -> Rule huddleRule Proxy era p = Text "nonzero_int64" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"negative_int64" Proxy era p Rule -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_int64" Proxy era p instance HuddleRule "policy_id" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "policy_id" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy ConwayEra p instance HuddleRule "policy_hash" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "script_hash" era => Proxy era -> Rule policyHashRule @ConwayEra instance HuddleGroup "script_pubkey" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptPubkeyGroup @ConwayEra instance HuddleGroup "script_all" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptAllGroup @ConwayEra instance HuddleGroup "script_any" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptAnyGroup @ConwayEra instance HuddleGroup "script_n_of_k" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptNOfKGroup @ConwayEra instance HuddleGroup "script_invalid_before" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptInvalidBeforeGroup @ConwayEra instance HuddleGroup "script_invalid_hereafter" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptInvalidHereafterGroup @ConwayEra instance HuddleRule "native_script" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleGroup "script_pubkey" era, HuddleGroup "script_all" era, HuddleGroup "script_any" era, HuddleGroup "script_n_of_k" era, HuddleGroup "script_invalid_before" era, HuddleGroup "script_invalid_hereafter" era) => Proxy era -> Rule nativeScriptRule @ConwayEra instance HuddleGroup "single_host_addr" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group singleHostAddrGroup @ConwayEra instance HuddleGroup "single_host_name" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleRule "dns_name" era => Proxy era -> Named Group singleHostNameGroup @ConwayEra instance HuddleGroup "multi_host_name" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleRule "dns_name" era => Proxy era -> Named Group multiHostNameGroup @ConwayEra instance HuddleRule "relay" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleGroup "single_host_addr" era, HuddleGroup "single_host_name" era, HuddleGroup "multi_host_name" era) => Proxy era -> Rule relayRule @ConwayEra instance HuddleRule "pool_metadata" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "url" era => Proxy era -> Rule poolMetadataRule @ConwayEra instance HuddleGroup "pool_params" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "relay" era, HuddleRule "pool_metadata" era) => Proxy era -> Named Group poolParamsGroup @ConwayEra instance HuddleGroup "account_registration_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group accountRegistrationCertGroup @ConwayEra instance HuddleGroup "account_unregistration_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group accountUnregistrationCertGroup @ConwayEra instance HuddleGroup "delegation_to_stake_pool_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group delegationToStakePoolCertGroup @ConwayEra instance HuddleGroup "pool_registration_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleGroup "pool_params" era => Proxy era -> Named Group poolRegistrationCertGroup @ConwayEra instance HuddleGroup "pool_retirement_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group poolRetirementCertGroup @ConwayEra instance HuddleGroup "account_registration_deposit_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDepositCertGroup @ConwayEra instance HuddleGroup "account_unregistration_deposit_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group accountUnregistrationDepositCertGroup @ConwayEra instance HuddleGroup "delegation_to_drep_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "drep" era) => Proxy era -> Named Group delegationToDrepCertGroup @ConwayEra instance HuddleGroup "delegation_to_stake_pool_and_drep_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "drep" era) => Proxy era -> Named Group delegationToStakePoolAndDrepCertGroup @ConwayEra instance HuddleGroup "account_registration_delegation_to_stake_pool_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToStakePoolCertGroup @ConwayEra instance HuddleGroup "account_registration_delegation_to_drep_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "drep" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToDrepCertGroup @ConwayEra instance HuddleGroup "account_registration_delegation_to_stake_pool_and_drep_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "stake_credential" era, HuddleRule "pool_keyhash" era, HuddleRule "drep" era, HuddleRule "coin" era) => Proxy era -> Named Group accountRegistrationDelegationToStakePoolAndDrepCertGroup @ConwayEra instance HuddleGroup "committee_authorization_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "committee_cold_credential" era, HuddleRule "committee_hot_credential" era) => Proxy era -> Named Group committeeAuthorizationCertGroup @ConwayEra instance HuddleGroup "committee_resignation_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "committee_cold_credential" era, HuddleRule "anchor" era) => Proxy era -> Named Group committeeResignationCertGroup @ConwayEra instance HuddleGroup "drep_registration_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "drep_credential" era, HuddleRule "coin" era, HuddleRule "anchor" era) => Proxy era -> Named Group drepRegistrationCertGroup @ConwayEra instance HuddleGroup "drep_unregistration_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "drep_credential" era, HuddleRule "coin" era) => Proxy era -> Named Group drepUnregistrationCertGroup @ConwayEra instance HuddleGroup "drep_update_cert" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "drep_credential" era, HuddleRule "anchor" era) => Proxy era -> Named Group drepUpdateCertGroup @ConwayEra instance HuddleRule "certificate" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleGroup "account_registration_cert" era, HuddleGroup "account_unregistration_cert" era, HuddleGroup "delegation_to_stake_pool_cert" era, HuddleGroup "pool_registration_cert" era, HuddleGroup "pool_retirement_cert" era, HuddleGroup "account_registration_deposit_cert" era, HuddleGroup "account_unregistration_deposit_cert" era, HuddleGroup "delegation_to_drep_cert" era, HuddleGroup "delegation_to_stake_pool_and_drep_cert" era, HuddleGroup "account_registration_delegation_to_stake_pool_cert" era, HuddleGroup "account_registration_delegation_to_drep_cert" era, HuddleGroup "account_registration_delegation_to_stake_pool_and_drep_cert" era, HuddleGroup "committee_authorization_cert" era, HuddleGroup "committee_resignation_cert" era, HuddleGroup "drep_registration_cert" era, HuddleGroup "drep_unregistration_cert" era, HuddleGroup "drep_update_cert" era) => Proxy era -> Rule conwayCertificateRule @ConwayEra instance HuddleRule "certificates" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "certificate" era => Proxy era -> Rule certificatesRule @ConwayEra instance HuddleRule "voting_procedure" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "vote" era, HuddleRule "anchor" era) => Proxy era -> Rule votingProcedureRule @ConwayEra instance HuddleRule "voting_procedures" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "voter" era, HuddleRule "gov_action_id" era, HuddleRule "voting_procedure" era) => Proxy era -> Rule votingProceduresRule @ConwayEra instance HuddleRule "constitution" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "anchor" era, HuddleRule "script_hash" era) => Proxy era -> Rule constitutionRule @ConwayEra instance HuddleGroup "parameter_change_action" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "gov_action_id" era, HuddleRule "protocol_param_update" era, HuddleRule "policy_hash" era) => Proxy era -> Named Group parameterChangeActionGroup @ConwayEra instance HuddleGroup "hard_fork_initiation_action" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "gov_action_id" era, HuddleRule "protocol_version" era) => Proxy era -> Named Group hardForkInitiationActionGroup @ConwayEra instance HuddleGroup "treasury_withdrawals_action" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "reward_account" era, HuddleRule "coin" era, HuddleRule "policy_hash" era) => Proxy era -> Named Group treasuryWithdrawalsActionGroup @ConwayEra instance HuddleGroup "no_confidence" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. HuddleRule "gov_action_id" era => Proxy era -> Named Group noConfidenceGroup @ConwayEra instance HuddleGroup "update_committee" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "gov_action_id" era, HuddleRule "committee_cold_credential" era, HuddleRule "epoch" era, HuddleRule "unit_interval" era) => Proxy era -> Named Group updateCommitteeGroup @ConwayEra instance HuddleGroup "new_constitution" ConwayEra where huddleGroup :: Proxy ConwayEra -> Named Group huddleGroup = forall era. (HuddleRule "gov_action_id" era, HuddleRule "constitution" era) => Proxy era -> Named Group newConstitutionGroup @ConwayEra instance HuddleRule "info_action" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Rule infoActionRule instance HuddleRule "gov_action" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleGroup "parameter_change_action" era, HuddleGroup "hard_fork_initiation_action" era, HuddleGroup "treasury_withdrawals_action" era, HuddleGroup "no_confidence" era, HuddleGroup "update_committee" era, HuddleGroup "new_constitution" era, HuddleRule "info_action" era) => Proxy era -> Rule govActionRule @ConwayEra instance HuddleRule "proposal_procedure" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "coin" era, HuddleRule "reward_account" era, HuddleRule "gov_action" era, HuddleRule "anchor" era) => Proxy era -> Rule proposalProcedureRule @ConwayEra instance HuddleRule "proposal_procedures" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "proposal_procedure" era => Proxy era -> Rule proposalProceduresRule @ConwayEra instance HuddleRule "transaction_input" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "transaction_input" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "transaction_id" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_id" Proxy ConwayEra p , Key "index" Key -> Constrained -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64)) ] instance HuddleRule "required_signers" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "required_signers" Text -> GRuleCall -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"addr_keyhash" Proxy ConwayEra p) instance HuddleRule "value" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, HuddleRule "positive_coin" era) => Proxy era -> Rule conwayValueRule @ConwayEra instance HuddleRule "mint" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, HuddleRule "nonzero_int64" era) => Proxy era -> Rule conwayMintRule @ConwayEra instance HuddleRule "withdrawals" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule conwayWithdrawalsRule @ConwayEra instance HuddleRule "data" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "data" Text -> Tagged Constrained -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> Constrained -> Tagged Constrained forall a. Word64 -> a -> Tagged a tag Word64 24 (Value ByteString VBytes Value ByteString -> Rule -> Constrained forall b c. (IsCborable b, IsConstrainable c b) => c -> Rule -> Constrained `cbor` forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy ConwayEra p) instance HuddleRule "datum_option" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "datum_option" Text -> Choice ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 0, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy ConwayEra p)] ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 1, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"data" Proxy ConwayEra p)] instance HuddleRule "alonzo_transaction_output" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "alonzo_transaction_output" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"address" Proxy ConwayEra p) , Key "amount" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"value" Proxy ConwayEra p , ArrayEntry -> ArrayEntry forall a. CanQuantify a => a -> a opt (Key "datum_hash" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy ConwayEra p) ] instance HuddleRule "transaction_output" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Both of the Alonzo and Babbage style TxOut formats are equally valid |and can be used interchangeably |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "transaction_output" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"alonzo_transaction_output" Proxy ConwayEra p Rule -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Proxy ConwayEra -> Rule -> Rule forall era. (HuddleRule "address" era, HuddleRule "value" era, HuddleRule "datum_option" era) => Proxy era -> Rule -> Rule babbageTransactionOutput Proxy ConwayEra p (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script" Proxy ConwayEra p) instance HuddleRule "script" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Conway supports four script types: | 0: Native scripts (timelock) - unchanged from Allegra | 1: Plutus V1 scripts | 2: Plutus V2 scripts | 3: Plutus V3 scripts |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "script" Text -> Choice ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 0, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"native_script" Proxy ConwayEra p)] ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 1, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v1_script" Proxy ConwayEra p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 2, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v2_script" Proxy ConwayEra p)] Choice ArrayChoice -> ArrayChoice -> Choice ArrayChoice forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> ArrayChoice arr [Item ArrayChoice ArrayEntry 3, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v3_script" Proxy ConwayEra p)] instance HuddleRule "language" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|0: Plutus v1 |1: Plutus v2 |2: Plutus v3 |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "language" Text -> Ranged -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Integer 0 :: Integer) Integer -> Integer -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... (Integer 2 :: Integer) instance HuddleRule "potential_languages" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = Proxy ConwayEra -> Rule forall era. Proxy era -> Rule potentialLanguagesRule instance HuddleRule "cost_models" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|The format for cost_models is flexible enough to allow adding |Plutus built-ins and language versions in the future. | |Plutus v1: only 166 integers are used, but more are accepted (and ignored) |Plutus v2: only 175 integers are used, but more are accepted (and ignored) |Plutus v3: only 223 integers are used, but more are accepted (and ignored) | |Any 8-bit unsigned number can be used as a key. |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "cost_models" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 0 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy ConwayEra p)] , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 1 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy ConwayEra p)] , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 2 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy ConwayEra p)] , Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Ranged -> Key forall r. IsType0 r => r -> Key asKey ((Integer 3 :: Integer) Integer -> Integer -> Ranged forall a b. (IsRangeBound a, IsRangeBound b) => a -> b -> Ranged ... (Integer 255 :: Integer)) Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy ConwayEra p)] ] instance HuddleRule "redeemer_tag" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra _ = Rule conwayRedeemerTag instance HuddleRule "redeemer" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "redeemer_tag" era, HuddleRule "plutus_data" era, HuddleRule "ex_units" era) => Proxy era -> Rule conwayRedeemer @ConwayEra instance HuddleRule "redeemers" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Flat Array support is included for backwards compatibility and |will be removed in the next era. It is recommended for tools to |adopt using a Map instead of Array going forward. |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "redeemers" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> Seal (Choice ArrayChoice) sarr [Word64 1 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemer" Proxy ConwayEra p)] Seal (Choice ArrayChoice) -> Seal Map -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / MapChoice -> Seal Map smp [ Word64 1 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ ArrayChoice -> Key forall r. IsType0 r => r -> Key asKey ( ArrayChoice -> ArrayChoice arr [ Key "tag" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemer_tag" Proxy ConwayEra p , Key "index" Key -> Constrained -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64)) ] ) Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [ Key "data" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy ConwayEra p , Key "ex_units" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy ConwayEra p ] ] instance HuddleRule "script_data_hash" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|This is a hash of data which may affect evaluation of a script. |This data consists of: | - The redeemers from the transaction_witness_set (the value of field 5). | - The datums from the transaction_witness_set (the value of field 4). | - The value in the cost_models map corresponding to the script's language | (in field 18 of protocol_param_update.) |(In the future it may contain additional protocol parameters.) | |Since this data does not exist in contiguous form inside a transaction, it needs |to be independently constructed by each recipient. | |The bytestring which is hashed is the concatenation of three things: | redeemers || datums || language views |The redeemers are exactly the data present in the transaction witness set. |Similarly for the datums, if present. If no datums are provided, the middle |field is omitted (i.e. it is the empty/null bytestring). | |language views CDDL: |{ * language => script_integrity_data } | |This must be encoded canonically, using the same scheme as in |RFC7049 section 3.9: | - Maps, strings, and bytestrings must use a definite-length encoding | - Integers must be as small as possible. | - The expressions for map length, string length, and bytestring length | must be as short as possible. | - The keys in the map must be sorted as follows: | - If two keys have different lengths, the shorter one sorts earlier. | - If two keys have the same length, the one with the lower value | in (byte-wise) lexical order sorts earlier. | |For PlutusV1 (language id 0), the language view is the following: | - the value of cost_models map at key 0 (in other words, the script_integrity_data) | is encoded as an indefinite length list and the result is encoded as a bytestring. | (our apologies) | For example, the script_integrity_data corresponding to the all zero costmodel for V1 | would be encoded as (in hex): | 58a89f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff | - the language ID tag is also encoded twice. first as a uint then as | a bytestring. (our apologies) | Concretely, this means that the language version for V1 is encoded as | 4100 in hex. |For PlutusV2 (language id 1), the language view is the following: | - the value of cost_models map at key 1 is encoded as an definite length list. | For example, the script_integrity_data corresponding to the all zero costmodel for V2 | would be encoded as (in hex): | 98af0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | - the language ID tag is encoded as expected. | Concretely, this means that the language version for V2 is encoded as | 01 in hex. |For PlutusV3 (language id 2), the language view is the following: | - the value of cost_models map at key 2 is encoded as a definite length list. | |Note that each Plutus language represented inside a transaction must have |a cost model in the cost_models protocol parameter in order to execute, |regardless of what the script integrity data is. | |Finally, note that in the case that a transaction includes datums but does not |include the redeemers field, the script data format becomes (in hex): |[ A0 | datums | A0 ] |corresponding to a CBOR empty map and an empty map for language view. |This empty redeeemer case has changed from the previous eras, since default |representation for redeemers has been changed to a map. Also whenever redeemers are |supplied either as a map or as an array they must contain at least one element, |therefore there is no way to override this behavior by providing a custom |representation for empty redeemers. |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Proxy ConwayEra -> Rule forall era. Era era => Proxy era -> Rule scriptDataHashRule Proxy ConwayEra p instance HuddleRule "transaction_body" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "transaction_body" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 -> Key idx Word64 0 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedSet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_input" Proxy ConwayEra p) , Word64 -> Key idx Word64 1 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_output" Proxy ConwayEra p)] , Word64 -> Key idx Word64 2 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "fee" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 3 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "time to live" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 4 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"certificates" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 5 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"withdrawals" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 7 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data_hash" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 8 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "validity interval start" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 9 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"mint" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 11 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_data_hash" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 13 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_input" Proxy ConwayEra p)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "collateral" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 14 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"required_signers" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 15 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"network_id" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 16 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_output" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "collateral return" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 17 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "total collateral" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 18 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_input" Proxy ConwayEra p)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "reference inputs" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 19 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"voting_procedures" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 20 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"proposal_procedures" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 21 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "current treasury value" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 22 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "donation" ] instance HuddleRule "transaction_witness_set" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "transaction_witness_set" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 0 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vkeywitness" Proxy ConwayEra p) , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 1 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"native_script" Proxy ConwayEra p) , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 2 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"bootstrap_witness" Proxy ConwayEra p) , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 3 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v1_script" Proxy ConwayEra p) , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 4 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy ConwayEra p) , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 5 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemers" Proxy ConwayEra p , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 6 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v2_script" Proxy ConwayEra p) , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 7 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v3_script" Proxy ConwayEra p) ] instance HuddleRule "transaction" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "transaction" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_body" Proxy ConwayEra p , Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_witness_set" Proxy ConwayEra p , Value Bool -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a Value Bool VBool , Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data" Proxy ConwayEra p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil) ] instance HuddleRule "ex_unit_prices" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "ex_unit_prices" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "mem_price" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonnegative_interval" Proxy ConwayEra p , Key "step_price" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonnegative_interval" Proxy ConwayEra p ] instance HuddleRule "pool_voting_thresholds" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "unit_interval" era => Proxy era -> Rule poolVotingThresholdsRule @ConwayEra instance HuddleRule "drep_voting_thresholds" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "unit_interval" era => Proxy era -> Rule drepVotingThresholdsRule @ConwayEra instance HuddleRule "protocol_param_update" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "protocol_param_update" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 0 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "minfeeA" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 1 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "minfeeB" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 2 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max block body size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 3 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max transaction size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 4 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max block header size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 5 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "key deposit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 6 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "pool deposit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 7 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "maximum epoch" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 8 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "n_opt: desired number of stake pools" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 9 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonnegative_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "pool pledge influence" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 10 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "expansion rate" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 11 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "treasury growth rate" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 16 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "min pool cost" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 17 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "ada per utxo byte" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 18 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"cost_models" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "cost models for script languages" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 19 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_unit_prices" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "execution costs" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 20 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max tx ex units" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 21 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max block ex units" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 22 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max value size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 23 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "collateral percentage" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 24 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max collateral inputs" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 25 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"pool_voting_thresholds" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "pool voting thresholds" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 26 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"drep_voting_thresholds" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "drep voting thresholds" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 27 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64))) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "min committee size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 28 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "committee term limit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 29 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "goveranance action validity period" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 30 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "governance action deposit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 31 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "drep deposit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 32 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "drep inactivity period" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 33 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonnegative_interval" Proxy ConwayEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "minfee refscriptcoinsperbyte" ] instance HuddleRule "proposed_protocol_parameter_updates" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. (HuddleRule "genesis_hash" era, HuddleRule "protocol_param_update" era) => Proxy era -> Rule proposedProtocolParameterUpdatesRule @ConwayEra instance HuddleRule "update" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "proposed_protocol_parameter_updates" era => Proxy era -> Rule updateRule @ConwayEra instance HuddleRule "header_body" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "header_body" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "block_number" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"block_number" Proxy ConwayEra p , Key "slot" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy ConwayEra p , Key "prev_hash" Key -> Choice Type2 -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy ConwayEra p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil) , Key "issuer_vkey" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vkey" Proxy ConwayEra p , Key "vrf_vkey" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vrf_vkey" Proxy ConwayEra p , Key "vrf_result" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vrf_cert" Proxy ConwayEra p , Key "block_body_size" Key -> Constrained -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64)) , Key "block_body_hash" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy ConwayEra p ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "merkle triple root" , Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"operational_cert" Proxy ConwayEra p , Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"protocol_version" Proxy ConwayEra p ] instance HuddleRule "header" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "header_body" era => Proxy era -> Rule headerRule @ConwayEra instance HuddleRule "block" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Valid blocks must also satisfy the following two constraints: | 1) the length of transaction_bodies and transaction_witness_sets must be | the same | 2) every transaction_index must be strictly smaller than the length of | transaction_bodies |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "block" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"header" Proxy ConwayEra p , Key "transaction_bodies" Key -> ArrayChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_body" Proxy ConwayEra p)] , Key "transaction_witness_sets" Key -> ArrayChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_witness_set" Proxy ConwayEra p)] , Key "auxiliary_data_set" Key -> MapChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> MapChoice -> MapChoice mp [ Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_index" Proxy ConwayEra p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data" Proxy ConwayEra p ] , Key "invalid_transactions" Key -> ArrayChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_index" Proxy ConwayEra p)] ] instance HuddleRule "auxiliary_scripts" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "native_script" era => Proxy era -> Rule auxiliaryScriptsRule @ConwayEra instance HuddleRule "auxiliary_data_map" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text "auxiliary_data_map" Text -> Tagged MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> MapChoice -> Tagged MapChoice forall a. Word64 -> a -> Tagged a tag Word64 259 ( MapChoice -> MapChoice mp [ MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 0 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"metadata" Proxy ConwayEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 1 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"native_script" Proxy ConwayEra p)]) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 2 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v1_script" Proxy ConwayEra p)]) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 3 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v2_script" Proxy ConwayEra p)]) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 4 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v3_script" Proxy ConwayEra p)]) ] ) instance HuddleRule "auxiliary_data_array" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule = forall era. HuddleRule "auxiliary_scripts" era => Proxy era -> Rule auxiliaryDataArrayRule @ConwayEra instance HuddleRule "auxiliary_data" ConwayEra where huddleRule :: Proxy ConwayEra -> Rule huddleRule Proxy ConwayEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|auxiliary_data supports three serialization formats: | 1. metadata (raw) - Supported since Shelley | 2. auxiliary_data_array - Array format, introduced in Allegra | 3. auxiliary_data_map - Tagged map format, introduced in Alonzo | Conway adds plutus_v3_script support at index 4 |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "auxiliary_data" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"metadata" Proxy ConwayEra p Rule -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data_array" Proxy ConwayEra p Choice Type2 -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data_map" Proxy ConwayEra p mkMaybeTaggedSet :: IsType0 a => T.Text -> Word64 -> a -> GRuleCall mkMaybeTaggedSet :: forall a. IsType0 a => Text -> Word64 -> a -> GRuleCall mkMaybeTaggedSet Text label Word64 n = (GRef -> Rule) -> a -> GRuleCall forall t0. IsType0 t0 => (GRef -> Rule) -> t0 -> GRuleCall binding ((GRef -> Rule) -> a -> GRuleCall) -> (GRef -> Rule) -> a -> GRuleCall forall a b. (a -> b) -> a -> b $ \GRef x -> Text label Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 258 (ArrayChoice -> ArrayChoice arr [Word64 n Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Tagged ArrayChoice -> Seal (Choice ArrayChoice) -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> Seal (Choice ArrayChoice) sarr [Word64 n Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x] maybeTaggedSet :: IsType0 a => a -> GRuleCall maybeTaggedSet :: forall a. IsType0 a => a -> GRuleCall maybeTaggedSet = Text -> Word64 -> a -> GRuleCall forall a. IsType0 a => Text -> Word64 -> a -> GRuleCall mkMaybeTaggedSet Text "set" Word64 0 maybeTaggedNonemptySet :: IsType0 a => a -> GRuleCall maybeTaggedNonemptySet :: forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptySet = Text -> Word64 -> a -> GRuleCall forall a. IsType0 a => Text -> Word64 -> a -> GRuleCall mkMaybeTaggedSet Text "nonempty_set" Word64 1 maybeTaggedNonemptyOset :: IsType0 a => a -> GRuleCall maybeTaggedNonemptyOset :: forall a. IsType0 a => a -> GRuleCall maybeTaggedNonemptyOset = Text -> Word64 -> a -> GRuleCall forall a. IsType0 a => Text -> Word64 -> a -> GRuleCall mkMaybeTaggedSet Text "nonempty_oset" Word64 1