{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Allegra.HuddleSpec ( module Cardano.Ledger.Shelley.HuddleSpec, allegraCDDL, blockRule, transactionRule, auxiliaryScriptsRule, auxiliaryDataArrayRule, auxiliaryDataRule, minInt64Rule, maxInt64Rule, int64Rule, nativeScriptRule, scriptNOfKGroup, scriptInvalidBeforeGroup, scriptInvalidHereafterGroup, ) where import Cardano.Ledger.Allegra (AllegraEra) import Cardano.Ledger.Shelley.HuddleSpec import Codec.CBOR.Cuddle.Huddle import Data.Proxy (Proxy (..)) import Text.Heredoc import Prelude hiding ((/)) allegraCDDL :: Huddle allegraCDDL :: Huddle allegraCDDL = [HuddleItem] -> Huddle collectFrom [ 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 @AllegraEra) , 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 @AllegraEra) ] blockRule :: forall era. ( HuddleRule "header" era , HuddleRule "transaction_body" era , HuddleRule "transaction_witness_set" era , HuddleRule "auxiliary_data" era ) => Proxy era -> Rule blockRule :: forall era. (HuddleRule "header" era, HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy era -> Rule blockRule Proxy era p = 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 era 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 era 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 era 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 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 @"auxiliary_data" Proxy era p ] ] transactionRule :: forall era. ( HuddleRule "transaction_body" era , HuddleRule "transaction_witness_set" era , HuddleRule "auxiliary_data" era ) => Proxy era -> Rule transactionRule :: forall era. (HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy era -> Rule transactionRule Proxy era 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 era 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 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 @"auxiliary_data" 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) ] auxiliaryScriptsRule :: forall era. HuddleRule "native_script" era => Proxy era -> Rule auxiliaryScriptsRule :: forall era. HuddleRule "native_script" era => Proxy era -> Rule auxiliaryScriptsRule Proxy era p = Text "auxiliary_scripts" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= 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 era p)] auxiliaryDataArrayRule :: forall era. HuddleRule "auxiliary_scripts" era => Proxy era -> Rule auxiliaryDataArrayRule :: forall era. HuddleRule "auxiliary_scripts" era => Proxy era -> Rule auxiliaryDataArrayRule Proxy era p = Text "auxiliary_data_array" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "transaction_metadata" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"metadata" Proxy era p , Key "auxiliary_scripts" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_scripts" Proxy era p ] auxiliaryDataRule :: forall era. HuddleRule "auxiliary_data_array" era => Proxy era -> Rule auxiliaryDataRule :: forall era. HuddleRule "auxiliary_data_array" era => Proxy era -> Rule auxiliaryDataRule Proxy era p = 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 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 @"auxiliary_data_array" Proxy era p minInt64Rule :: Rule minInt64Rule :: Rule minInt64Rule = Text "min_int64" Text -> Integer -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (-Integer 9223372036854775808 :: Integer) maxInt64Rule :: Rule maxInt64Rule :: Rule maxInt64Rule = Text "max_int64" Text -> Integer -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Integer 9223372036854775807 :: Integer) int64Rule :: forall era. (HuddleRule "min_int64" era, HuddleRule "max_int64" era) => Proxy era -> Rule int64Rule :: forall era. (HuddleRule "min_int64" era, HuddleRule "max_int64" era) => Proxy era -> Rule int64Rule Proxy era p = Text "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 -> 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 nativeScriptRule :: 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 :: 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 Proxy era p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Allegra introduces timelock support for native scripts. | |Timelock validity intervals are half-open intervals [a, b). | script_invalid_before: specifies the left (included) endpoint a. | script_invalid_hereafter: specifies the right (excluded) endpoint b. | |Note: Allegra switched to int64 for script_n_of_k thresholds. |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "native_script" 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 @"script_pubkey" 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 @"script_all" 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 @"script_any" 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 @"script_n_of_k" 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 @"script_invalid_before" 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 @"script_invalid_hereafter" Proxy era p] scriptNOfKGroup :: forall era. (HuddleRule "int64" era, HuddleRule "native_script" era) => Proxy era -> Named Group scriptNOfKGroup :: forall era. (HuddleRule "int64" era, HuddleRule "native_script" era) => Proxy era -> Named Group scriptNOfKGroup Proxy era p = Text "script_n_of_k" Text -> Group -> Named Group =:~ Group -> Group grp [ Item Group ArrayEntry 3 , Key "n" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy era p , ArrayChoice -> Item Group forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (ArrayChoice -> Item Group) -> ArrayChoice -> Item Group forall a b. (a -> b) -> a -> b $ 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 era p)] ] scriptInvalidBeforeGroup :: forall era. Era era => Proxy era -> Named Group scriptInvalidBeforeGroup :: forall era. Era era => Proxy era -> Named Group scriptInvalidBeforeGroup Proxy era p = Text -> Named Group -> Named Group forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Timelock validity intervals are half-open intervals [a, b). |This field specifies the left (included) endpoint a. |] (Named Group -> Named Group) -> Named Group -> Named Group forall a b. (a -> b) -> a -> b $ Text "script_invalid_before" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group 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 @"slot" Proxy era p)] scriptInvalidHereafterGroup :: forall era. Era era => Proxy era -> Named Group scriptInvalidHereafterGroup :: forall era. Era era => Proxy era -> Named Group scriptInvalidHereafterGroup Proxy era p = Text -> Named Group -> Named Group forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Timelock validity intervals are half-open intervals [a, b). |This field specifies the right (excluded) endpoint b. |] (Named Group -> Named Group) -> Named Group -> Named Group forall a b. (a -> b) -> a -> b $ Text "script_invalid_hereafter" Text -> Group -> Named Group =:~ Group -> Group grp [Item Group ArrayEntry 5, Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy era p)] instance HuddleRule "major_protocol_version" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule majorProtocolVersionRule @AllegraEra instance HuddleGroup "protocol_version" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleRule "major_protocol_version" era => Proxy era -> Named Group shelleyProtocolVersionGroup @AllegraEra instance HuddleRule "protocol_param_update" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleGroup "protocol_version" era => Proxy era -> Rule protocolParamUpdateRule @AllegraEra instance HuddleRule "proposed_protocol_parameter_updates" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleRule "genesis_hash" era, HuddleRule "protocol_param_update" era) => Proxy era -> Rule proposedProtocolParameterUpdatesRule @AllegraEra instance HuddleRule "update" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "proposed_protocol_parameter_updates" era => Proxy era -> Rule updateRule @AllegraEra instance HuddleRule "genesis_hash" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule genesisHashRule @AllegraEra instance HuddleGroup "operational_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group shelleyOperationalCertGroup @AllegraEra instance HuddleRule "header_body" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleGroup "operational_cert" era, HuddleGroup "protocol_version" era) => Proxy era -> Rule headerBodyRule @AllegraEra instance HuddleRule "header" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "header_body" era => Proxy era -> Rule headerRule @AllegraEra instance HuddleRule "min_int64" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule Proxy AllegraEra _ = Rule minInt64Rule instance HuddleRule "max_int64" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule Proxy AllegraEra _ = Rule maxInt64Rule instance HuddleRule "int64" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleRule "min_int64" era, HuddleRule "max_int64" era) => Proxy era -> Rule int64Rule @AllegraEra instance HuddleGroup "script_all" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptAllGroup @AllegraEra instance HuddleGroup "script_any" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptAnyGroup @AllegraEra instance HuddleGroup "script_n_of_k" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. (HuddleRule "int64" era, HuddleRule "native_script" era) => Proxy era -> Named Group scriptNOfKGroup @AllegraEra instance HuddleGroup "script_invalid_before" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptInvalidBeforeGroup @AllegraEra instance HuddleGroup "script_invalid_hereafter" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptInvalidHereafterGroup @AllegraEra instance HuddleRule "native_script" AllegraEra where huddleRule :: Proxy AllegraEra -> 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 @AllegraEra instance HuddleRule "vkeywitness" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule vkeywitnessRule @AllegraEra instance HuddleRule "bootstrap_witness" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule bootstrapWitnessRule @AllegraEra instance HuddleRule "transaction_witness_set" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleRule "vkeywitness" era, HuddleRule "native_script" era, HuddleRule "bootstrap_witness" era) => Proxy era -> Rule transactionWitnessSetRule @AllegraEra instance HuddleGroup "script_pubkey" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptPubkeyGroup @AllegraEra instance HuddleRule "transaction_id" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule transactionIdRule @AllegraEra instance HuddleRule "transaction_input" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "transaction_id" era => Proxy era -> Rule transactionInputRule @AllegraEra instance HuddleRule "transaction_output" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule transactionOutputRule @AllegraEra instance HuddleRule "dns_name" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule Proxy AllegraEra _ = Rule dnsNameRule instance HuddleRule "url" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule Proxy AllegraEra _ = Rule urlRule instance HuddleRule "pool_metadata" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "url" era => Proxy era -> Rule poolMetadataRule @AllegraEra instance HuddleGroup "single_host_addr" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group singleHostAddrGroup @AllegraEra instance HuddleGroup "single_host_name" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleRule "dns_name" era => Proxy era -> Named Group singleHostNameGroup @AllegraEra instance HuddleGroup "multi_host_name" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleRule "dns_name" era => Proxy era -> Named Group multiHostNameGroup @AllegraEra instance HuddleRule "relay" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleGroup "single_host_addr" era, HuddleGroup "single_host_name" era, HuddleGroup "multi_host_name" era) => Proxy era -> Rule relayRule @AllegraEra instance HuddleGroup "pool_params" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. (HuddleRule "relay" era, HuddleRule "pool_metadata" era) => Proxy era -> Named Group poolParamsGroup @AllegraEra instance HuddleGroup "pool_registration_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleGroup "pool_params" era => Proxy era -> Named Group poolRegistrationCertGroup @AllegraEra instance HuddleGroup "pool_retirement_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group poolRetirementCertGroup @AllegraEra instance HuddleRule "genesis_delegate_hash" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule genesisDelegateHashRule @AllegraEra instance HuddleGroup "genesis_delegation_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. (HuddleRule "genesis_hash" era, HuddleRule "genesis_delegate_hash" era) => Proxy era -> Named Group genesisDelegationCertGroup @AllegraEra instance HuddleRule "delta_coin" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule Proxy AllegraEra _ = Rule deltaCoinRule instance HuddleRule "move_instantaneous_reward" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "delta_coin" era => Proxy era -> Rule moveInstantaneousRewardRule @AllegraEra instance HuddleGroup "move_instantaneous_rewards_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. HuddleRule "move_instantaneous_reward" era => Proxy era -> Named Group moveInstantaneousRewardsCertGroup @AllegraEra instance HuddleGroup "account_registration_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group accountRegistrationCertGroup @AllegraEra instance HuddleGroup "account_unregistration_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group accountUnregistrationCertGroup @AllegraEra instance HuddleGroup "delegation_to_stake_pool_cert" AllegraEra where huddleGroup :: Proxy AllegraEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group delegationToStakePoolCertGroup @AllegraEra instance HuddleRule "certificate" AllegraEra where huddleRule :: Proxy AllegraEra -> 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 "genesis_delegation_cert" era, HuddleGroup "move_instantaneous_rewards_cert" era) => Proxy era -> Rule certificateRule @AllegraEra instance HuddleRule "withdrawals" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule withdrawalsRule @AllegraEra instance HuddleRule "auxiliary_scripts" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "native_script" era => Proxy era -> Rule auxiliaryScriptsRule @AllegraEra instance HuddleRule "auxiliary_data_array" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "auxiliary_scripts" era => Proxy era -> Rule auxiliaryDataArrayRule @AllegraEra instance HuddleRule "auxiliary_data" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. HuddleRule "auxiliary_data_array" era => Proxy era -> Rule auxiliaryDataRule @AllegraEra instance HuddleRule "transaction_body" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule Proxy AllegraEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Allegra transaction body adds the validity interval start at index 8 |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ 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 untaggedSet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_input" Proxy AllegraEra 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 AllegraEra 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 AllegraEra p , 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 AllegraEra 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 @"certificate" Proxy AllegraEra 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 AllegraEra p) , 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 @"update" Proxy AllegraEra 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 AllegraEra 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 AllegraEra p) ] instance HuddleRule "transaction" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy era -> Rule transactionRule @AllegraEra instance HuddleRule "block" AllegraEra where huddleRule :: Proxy AllegraEra -> Rule huddleRule = forall era. (HuddleRule "header" era, HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy era -> Rule blockRule @AllegraEra