{-# 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, AllegraEra, allegraCDDL, blockRule, transactionRule, auxiliaryScriptsRule, auxiliaryDataArrayRule, auxiliaryDataRule, nativeScriptRule, scriptNOfKGroup, scriptInvalidBeforeGroup, scriptInvalidHereafterGroup, ) where import Cardano.Ledger.Allegra (AllegraEra) import Cardano.Ledger.Shelley.HuddleSpec 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 "block" -> Proxy era -> Rule blockRule :: forall era. (HuddleRule "header" era, HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy "block" -> Proxy era -> Rule blockRule Proxy "block" pname Proxy era p = Proxy "block" pname Proxy "block" -> ArrayChoice -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> 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 "transaction" -> Proxy era -> Rule transactionRule :: forall era. (HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy "transaction" -> Proxy era -> Rule transactionRule Proxy "transaction" pname Proxy era p = Proxy "transaction" pname Proxy "transaction" -> ArrayChoice -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> 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 -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Choice Type2 -> Item ArrayChoice) -> Choice Type2 -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ 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 "auxiliary_scripts" -> Proxy era -> Rule auxiliaryScriptsRule :: forall era. HuddleRule "native_script" era => Proxy "auxiliary_scripts" -> Proxy era -> Rule auxiliaryScriptsRule Proxy "auxiliary_scripts" pname Proxy era p = Proxy "auxiliary_scripts" pname Proxy "auxiliary_scripts" -> ArrayChoice -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> 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 "auxiliary_data_array" -> Proxy era -> Rule auxiliaryDataArrayRule :: forall era. HuddleRule "auxiliary_scripts" era => Proxy "auxiliary_data_array" -> Proxy era -> Rule auxiliaryDataArrayRule Proxy "auxiliary_data_array" pname Proxy era p = Proxy "auxiliary_data_array" pname Proxy "auxiliary_data_array" -> ArrayChoice -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> 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 "auxiliary_data" -> Proxy era -> Rule auxiliaryDataRule :: forall era. HuddleRule "auxiliary_data_array" era => Proxy "auxiliary_data" -> Proxy era -> Rule auxiliaryDataRule Proxy "auxiliary_data" pname Proxy era p = Proxy "auxiliary_data" pname Proxy "auxiliary_data" -> Choice Type2 -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> 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 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 "native_script" -> 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 "native_script" -> Proxy era -> Rule nativeScriptRule Proxy "native_script" pname Proxy era p = Comment -> Rule -> Rule forall a. HasComment a => Comment -> a -> a comment Comment [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 $ Proxy "native_script" pname Proxy "native_script" -> Choice ArrayChoice -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> Rule =.= ArrayChoice -> ArrayChoice arr [GroupDef -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GroupDef -> Item ArrayChoice) -> GroupDef -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> GroupDef 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 [GroupDef -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GroupDef -> Item ArrayChoice) -> GroupDef -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> GroupDef 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 [GroupDef -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GroupDef -> Item ArrayChoice) -> GroupDef -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> GroupDef 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 [GroupDef -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GroupDef -> Item ArrayChoice) -> GroupDef -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> GroupDef 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 [GroupDef -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GroupDef -> Item ArrayChoice) -> GroupDef -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> GroupDef 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 [GroupDef -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GroupDef -> Item ArrayChoice) -> GroupDef -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> GroupDef huddleGroup @"script_invalid_hereafter" Proxy era p] scriptNOfKGroup :: forall era. HuddleRule "native_script" era => Proxy "script_n_of_k" -> Proxy era -> GroupDef scriptNOfKGroup :: forall era. HuddleRule "native_script" era => Proxy "script_n_of_k" -> Proxy era -> GroupDef scriptNOfKGroup Proxy "script_n_of_k" pname Proxy era p = Proxy "script_n_of_k" pname Proxy "script_n_of_k" -> Group -> GroupDef forall (name :: Symbol). KnownSymbol name => Proxy name -> Group -> GroupDef =.~ 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 "script_invalid_before" -> Proxy era -> GroupDef scriptInvalidBeforeGroup :: forall era. Era era => Proxy "script_invalid_before" -> Proxy era -> GroupDef scriptInvalidBeforeGroup Proxy "script_invalid_before" pname Proxy era p = Comment -> GroupDef -> GroupDef forall a. HasComment a => Comment -> a -> a comment Comment [str|Timelock validity intervals are half-open intervals [a, b). |This field specifies the left (included) endpoint a. |] (GroupDef -> GroupDef) -> GroupDef -> GroupDef forall a b. (a -> b) -> a -> b $ Proxy "script_invalid_before" pname Proxy "script_invalid_before" -> Group -> GroupDef forall (name :: Symbol). KnownSymbol name => Proxy name -> Group -> GroupDef =.~ 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 "script_invalid_hereafter" -> Proxy era -> GroupDef scriptInvalidHereafterGroup :: forall era. Era era => Proxy "script_invalid_hereafter" -> Proxy era -> GroupDef scriptInvalidHereafterGroup Proxy "script_invalid_hereafter" pname Proxy era p = Comment -> GroupDef -> GroupDef forall a. HasComment a => Comment -> a -> a comment Comment [str|Timelock validity intervals are half-open intervals [a, b). |This field specifies the right (excluded) endpoint b. |] (GroupDef -> GroupDef) -> GroupDef -> GroupDef forall a b. (a -> b) -> a -> b $ Proxy "script_invalid_hereafter" pname Proxy "script_invalid_hereafter" -> Group -> GroupDef forall (name :: Symbol). KnownSymbol name => Proxy name -> Group -> GroupDef =.~ 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 huddleRuleNamed :: Proxy "major_protocol_version" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "major_protocol_version" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "major_protocol_version" -> Proxy era -> Rule majorProtocolVersionRule instance HuddleGroup "protocol_version" AllegraEra where huddleGroupNamed :: Proxy "protocol_version" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "protocol_version" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "major_protocol_version" era => Proxy "protocol_version" -> Proxy era -> GroupDef shelleyProtocolVersionGroup instance HuddleRule "protocol_param_update" AllegraEra where huddleRuleNamed :: Proxy "protocol_param_update" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "protocol_param_update" -> Proxy AllegraEra -> Rule forall era. HuddleGroup "protocol_version" era => Proxy "protocol_param_update" -> Proxy era -> Rule protocolParamUpdateRule instance HuddleRule "proposed_protocol_parameter_updates" AllegraEra where huddleRuleNamed :: Proxy "proposed_protocol_parameter_updates" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "proposed_protocol_parameter_updates" -> Proxy AllegraEra -> Rule forall era. (HuddleRule "genesis_hash" era, HuddleRule "protocol_param_update" era) => Proxy "proposed_protocol_parameter_updates" -> Proxy era -> Rule proposedProtocolParameterUpdatesRule instance HuddleRule "update" AllegraEra where huddleRuleNamed :: Proxy "update" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "update" -> Proxy AllegraEra -> Rule forall era. HuddleRule "proposed_protocol_parameter_updates" era => Proxy "update" -> Proxy era -> Rule updateRule instance HuddleRule "genesis_hash" AllegraEra where huddleRuleNamed :: Proxy "genesis_hash" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "genesis_hash" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "genesis_hash" -> Proxy era -> Rule genesisHashRule instance HuddleGroup "operational_cert" AllegraEra where huddleGroupNamed :: Proxy "operational_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "operational_cert" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "operational_cert" -> Proxy era -> GroupDef shelleyOperationalCertGroup instance HuddleRule "header_body" AllegraEra where huddleRuleNamed :: Proxy "header_body" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "header_body" -> Proxy AllegraEra -> Rule forall era. (HuddleGroup "operational_cert" era, HuddleGroup "protocol_version" era) => Proxy "header_body" -> Proxy era -> Rule headerBodyRule instance HuddleRule "header" AllegraEra where huddleRuleNamed :: Proxy "header" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "header" -> Proxy AllegraEra -> Rule forall era. HuddleRule "header_body" era => Proxy "header" -> Proxy era -> Rule headerRule instance Era era => HuddleRule "min_int64" era where huddleRuleNamed :: Proxy "min_int64" -> Proxy era -> Rule huddleRuleNamed Proxy "min_int64" pname Proxy era _ = Proxy "min_int64" pname Proxy "min_int64" -> Integer -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> Rule =.= (-Integer 9223372036854775808 :: Integer) instance Era era => HuddleRule "max_int64" era where huddleRuleNamed :: Proxy "max_int64" -> Proxy era -> Rule huddleRuleNamed Proxy "max_int64" pname Proxy era _ = Proxy "max_int64" pname Proxy "max_int64" -> Integer -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> Rule =.= (Integer 9223372036854775807 :: Integer) instance Era era => HuddleRule "int64" era where huddleRuleNamed :: Proxy "int64" -> Proxy era -> Rule huddleRuleNamed Proxy "int64" pname Proxy era p = Proxy "int64" pname Proxy "int64" -> Ranged -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> 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 instance HuddleGroup "script_all" AllegraEra where huddleGroupNamed :: Proxy "script_all" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "script_all" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "native_script" era => Proxy "script_all" -> Proxy era -> GroupDef scriptAllGroup instance HuddleGroup "script_any" AllegraEra where huddleGroupNamed :: Proxy "script_any" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "script_any" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "native_script" era => Proxy "script_any" -> Proxy era -> GroupDef scriptAnyGroup instance HuddleGroup "script_n_of_k" AllegraEra where huddleGroupNamed :: Proxy "script_n_of_k" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "script_n_of_k" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "native_script" era => Proxy "script_n_of_k" -> Proxy era -> GroupDef scriptNOfKGroup instance HuddleGroup "script_invalid_before" AllegraEra where huddleGroupNamed :: Proxy "script_invalid_before" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "script_invalid_before" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "script_invalid_before" -> Proxy era -> GroupDef scriptInvalidBeforeGroup instance HuddleGroup "script_invalid_hereafter" AllegraEra where huddleGroupNamed :: Proxy "script_invalid_hereafter" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "script_invalid_hereafter" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "script_invalid_hereafter" -> Proxy era -> GroupDef scriptInvalidHereafterGroup instance HuddleRule "native_script" AllegraEra where huddleRuleNamed :: Proxy "native_script" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "native_script" -> Proxy AllegraEra -> Rule 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 "native_script" -> Proxy era -> Rule nativeScriptRule instance HuddleRule "vkeywitness" AllegraEra where huddleRuleNamed :: Proxy "vkeywitness" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "vkeywitness" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "vkeywitness" -> Proxy era -> Rule vkeywitnessRule instance HuddleRule "bootstrap_witness" AllegraEra where huddleRuleNamed :: Proxy "bootstrap_witness" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "bootstrap_witness" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "bootstrap_witness" -> Proxy era -> Rule bootstrapWitnessRule instance HuddleRule "transaction_witness_set" AllegraEra where huddleRuleNamed :: Proxy "transaction_witness_set" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "transaction_witness_set" -> Proxy AllegraEra -> Rule forall era. (HuddleRule "vkeywitness" era, HuddleRule "native_script" era, HuddleRule "bootstrap_witness" era) => Proxy "transaction_witness_set" -> Proxy era -> Rule transactionWitnessSetRule instance HuddleGroup "script_pubkey" AllegraEra where huddleGroupNamed :: Proxy "script_pubkey" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "script_pubkey" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "script_pubkey" -> Proxy era -> GroupDef scriptPubkeyGroup instance HuddleRule "transaction_id" AllegraEra where huddleRuleNamed :: Proxy "transaction_id" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "transaction_id" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "transaction_id" -> Proxy era -> Rule transactionIdRule instance HuddleRule "transaction_input" AllegraEra where huddleRuleNamed :: Proxy "transaction_input" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "transaction_input" -> Proxy AllegraEra -> Rule forall era. HuddleRule "transaction_id" era => Proxy "transaction_input" -> Proxy era -> Rule transactionInputRule instance HuddleRule "transaction_output" AllegraEra where huddleRuleNamed :: Proxy "transaction_output" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "transaction_output" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "transaction_output" -> Proxy era -> Rule transactionOutputRule instance HuddleRule "dns_name" AllegraEra where huddleRuleNamed :: Proxy "dns_name" -> Proxy AllegraEra -> Rule huddleRuleNamed Proxy "dns_name" pname Proxy AllegraEra _ = Proxy "dns_name" -> Rule dnsNameRule Proxy "dns_name" pname instance HuddleRule "url" AllegraEra where huddleRuleNamed :: Proxy "url" -> Proxy AllegraEra -> Rule huddleRuleNamed Proxy "url" pname Proxy AllegraEra _ = Proxy "url" -> Rule urlRule Proxy "url" pname instance HuddleRule "pool_metadata" AllegraEra where huddleRuleNamed :: Proxy "pool_metadata" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "pool_metadata" -> Proxy AllegraEra -> Rule forall era. HuddleRule "url" era => Proxy "pool_metadata" -> Proxy era -> Rule poolMetadataRule instance HuddleGroup "single_host_addr" AllegraEra where huddleGroupNamed :: Proxy "single_host_addr" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "single_host_addr" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "single_host_addr" -> Proxy era -> GroupDef singleHostAddrGroup instance HuddleGroup "single_host_name" AllegraEra where huddleGroupNamed :: Proxy "single_host_name" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "single_host_name" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "dns_name" era => Proxy "single_host_name" -> Proxy era -> GroupDef singleHostNameGroup instance HuddleGroup "multi_host_name" AllegraEra where huddleGroupNamed :: Proxy "multi_host_name" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "multi_host_name" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "dns_name" era => Proxy "multi_host_name" -> Proxy era -> GroupDef multiHostNameGroup instance HuddleRule "relay" AllegraEra where huddleRuleNamed :: Proxy "relay" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "relay" -> Proxy AllegraEra -> Rule forall era. (HuddleGroup "single_host_addr" era, HuddleGroup "single_host_name" era, HuddleGroup "multi_host_name" era) => Proxy "relay" -> Proxy era -> Rule relayRule instance HuddleGroup "pool_params" AllegraEra where huddleGroupNamed :: Proxy "pool_params" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "pool_params" -> Proxy AllegraEra -> GroupDef forall era. (HuddleRule "relay" era, HuddleRule "pool_metadata" era, HuddleRule1 "set" era) => Proxy "pool_params" -> Proxy era -> GroupDef poolParamsGroup instance HuddleGroup "pool_registration_cert" AllegraEra where huddleGroupNamed :: Proxy "pool_registration_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "pool_registration_cert" -> Proxy AllegraEra -> GroupDef forall era. HuddleGroup "pool_params" era => Proxy "pool_registration_cert" -> Proxy era -> GroupDef poolRegistrationCertGroup instance HuddleGroup "pool_retirement_cert" AllegraEra where huddleGroupNamed :: Proxy "pool_retirement_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "pool_retirement_cert" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "pool_retirement_cert" -> Proxy era -> GroupDef poolRetirementCertGroup instance HuddleRule "genesis_delegate_hash" AllegraEra where huddleRuleNamed :: Proxy "genesis_delegate_hash" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "genesis_delegate_hash" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "genesis_delegate_hash" -> Proxy era -> Rule genesisDelegateHashRule instance HuddleGroup "genesis_delegation_cert" AllegraEra where huddleGroupNamed :: Proxy "genesis_delegation_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "genesis_delegation_cert" -> Proxy AllegraEra -> GroupDef forall era. (HuddleRule "genesis_hash" era, HuddleRule "genesis_delegate_hash" era) => Proxy "genesis_delegation_cert" -> Proxy era -> GroupDef genesisDelegationCertGroup instance HuddleRule "delta_coin" AllegraEra where huddleRuleNamed :: Proxy "delta_coin" -> Proxy AllegraEra -> Rule huddleRuleNamed Proxy "delta_coin" pname Proxy AllegraEra _ = Proxy "delta_coin" -> Rule deltaCoinRule Proxy "delta_coin" pname instance HuddleRule "move_instantaneous_reward" AllegraEra where huddleRuleNamed :: Proxy "move_instantaneous_reward" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "move_instantaneous_reward" -> Proxy AllegraEra -> Rule forall era. HuddleRule "delta_coin" era => Proxy "move_instantaneous_reward" -> Proxy era -> Rule moveInstantaneousRewardRule instance HuddleGroup "move_instantaneous_rewards_cert" AllegraEra where huddleGroupNamed :: Proxy "move_instantaneous_rewards_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "move_instantaneous_rewards_cert" -> Proxy AllegraEra -> GroupDef forall era. HuddleRule "move_instantaneous_reward" era => Proxy "move_instantaneous_rewards_cert" -> Proxy era -> GroupDef moveInstantaneousRewardsCertGroup instance HuddleGroup "account_registration_cert" AllegraEra where huddleGroupNamed :: Proxy "account_registration_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "account_registration_cert" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "account_registration_cert" -> Proxy era -> GroupDef accountRegistrationCertGroup instance HuddleGroup "account_unregistration_cert" AllegraEra where huddleGroupNamed :: Proxy "account_unregistration_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "account_unregistration_cert" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "account_unregistration_cert" -> Proxy era -> GroupDef accountUnregistrationCertGroup instance HuddleGroup "delegation_to_stake_pool_cert" AllegraEra where huddleGroupNamed :: Proxy "delegation_to_stake_pool_cert" -> Proxy AllegraEra -> GroupDef huddleGroupNamed = Proxy "delegation_to_stake_pool_cert" -> Proxy AllegraEra -> GroupDef forall era. Era era => Proxy "delegation_to_stake_pool_cert" -> Proxy era -> GroupDef delegationToStakePoolCertGroup instance HuddleRule "certificate" AllegraEra where huddleRuleNamed :: Proxy "certificate" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "certificate" -> Proxy AllegraEra -> Rule 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 "certificate" -> Proxy era -> Rule certificateRule instance HuddleRule "withdrawals" AllegraEra where huddleRuleNamed :: Proxy "withdrawals" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "withdrawals" -> Proxy AllegraEra -> Rule forall era. Era era => Proxy "withdrawals" -> Proxy era -> Rule shelleyWithdrawalsRule instance HuddleRule "auxiliary_scripts" AllegraEra where huddleRuleNamed :: Proxy "auxiliary_scripts" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "auxiliary_scripts" -> Proxy AllegraEra -> Rule forall era. HuddleRule "native_script" era => Proxy "auxiliary_scripts" -> Proxy era -> Rule auxiliaryScriptsRule instance HuddleRule "auxiliary_data_array" AllegraEra where huddleRuleNamed :: Proxy "auxiliary_data_array" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "auxiliary_data_array" -> Proxy AllegraEra -> Rule forall era. HuddleRule "auxiliary_scripts" era => Proxy "auxiliary_data_array" -> Proxy era -> Rule auxiliaryDataArrayRule instance HuddleRule "auxiliary_data" AllegraEra where huddleRuleNamed :: Proxy "auxiliary_data" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "auxiliary_data" -> Proxy AllegraEra -> Rule forall era. HuddleRule "auxiliary_data_array" era => Proxy "auxiliary_data" -> Proxy era -> Rule auxiliaryDataRule instance HuddleRule "transaction_body" AllegraEra where huddleRuleNamed :: Proxy "transaction_body" -> Proxy AllegraEra -> Rule huddleRuleNamed Proxy "transaction_body" pname Proxy AllegraEra p = Comment -> Rule -> Rule forall a. HasComment a => Comment -> a -> a comment Comment [str|Allegra transaction body adds the validity interval start at index 8 |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Proxy "transaction_body" pname Proxy "transaction_body" -> MapChoice -> Rule forall (name :: Symbol) t. (KnownSymbol name, IsType0 t) => Proxy name -> t -> Rule =.= MapChoice -> MapChoice mp [ Word64 -> Key idx Word64 0 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era a. (HuddleRule1 name era, IsType0 a) => Proxy era -> a -> GRuleCall huddleRule1 @"set" Proxy AllegraEra p (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 huddleRuleNamed :: Proxy "transaction" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "transaction" -> Proxy AllegraEra -> Rule forall era. (HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy "transaction" -> Proxy era -> Rule transactionRule instance HuddleRule "block" AllegraEra where huddleRuleNamed :: Proxy "block" -> Proxy AllegraEra -> Rule huddleRuleNamed = Proxy "block" -> Proxy AllegraEra -> Rule forall era. (HuddleRule "header" era, HuddleRule "transaction_body" era, HuddleRule "transaction_witness_set" era, HuddleRule "auxiliary_data" era) => Proxy "block" -> Proxy era -> Rule blockRule instance HuddleRule1 "set" AllegraEra where huddleRule1Named :: forall a. IsType0 a => Proxy "set" -> Proxy AllegraEra -> a -> GRuleCall huddleRule1Named Proxy "set" pname Proxy AllegraEra _ = Proxy "set" -> a -> GRuleCall forall a. IsType0 a => Proxy "set" -> a -> GRuleCall untaggedSet Proxy "set" pname