{-# 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.Mary.HuddleSpec (
  module Cardano.Ledger.Allegra.HuddleSpec,
  MaryEra,
  maryCDDL,
  maryMultiasset,
  maryValueRule,
  maryMintRule,
  assetNameRule,
) where

import Cardano.Ledger.Allegra.HuddleSpec
import Cardano.Ledger.Mary (MaryEra)
import Data.Proxy (Proxy (..))
import Data.Word (Word64)
import Prelude hiding ((/))

maryCDDL :: Huddle
maryCDDL :: Huddle
maryCDDL =
  [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 @MaryEra)
    , 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 @MaryEra)
    , 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 @MaryEra)
    , 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 @MaryEra)
    ]

maryMultiasset ::
  forall era a.
  (HuddleRule "policy_id" era, HuddleRule "asset_name" era, IsType0 a) =>
  Proxy "multiasset" ->
  Proxy era ->
  a ->
  GRuleCall
maryMultiasset :: forall era a.
(HuddleRule "policy_id" era, HuddleRule "asset_name" era,
 IsType0 a) =>
Proxy "multiasset" -> Proxy era -> a -> GRuleCall
maryMultiasset Proxy "multiasset"
pname 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 ->
    Proxy "multiasset"
pname
      Proxy "multiasset" -> MapChoice -> Rule
forall (name :: Symbol) t.
(KnownSymbol name, IsType0 t) =>
Proxy name -> t -> 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]
        ]

maryValueRule ::
  forall era.
  HuddleRule1 "multiasset" era =>
  Proxy "value" ->
  Proxy era ->
  Rule
maryValueRule :: forall era.
HuddleRule1 "multiasset" era =>
Proxy "value" -> Proxy era -> Rule
maryValueRule Proxy "value"
pname Proxy era
p =
  Proxy "value"
pname
    Proxy "value" -> 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 @"coin" Proxy era
p
    Rule -> Seal Array -> Choice Type2
forall a c b.
(IsChoosable a c, IsChoosable b c) =>
a -> b -> Choice c
/ ArrayChoice -> Seal Array
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
$ forall (name :: Symbol) era a.
(HuddleRule1 name era, IsType0 a) =>
Proxy era -> a -> GRuleCall
huddleRule1 @"multiasset" Proxy era
p Value Int
VUInt]

maryMintRule ::
  forall era.
  HuddleRule1 "multiasset" era =>
  Proxy "mint" ->
  Proxy era ->
  Rule
maryMintRule :: forall era.
HuddleRule1 "multiasset" era =>
Proxy "mint" -> Proxy era -> Rule
maryMintRule Proxy "mint"
pname Proxy era
p = Proxy "mint"
pname Proxy "mint" -> GRuleCall -> Rule
forall (name :: Symbol) t.
(KnownSymbol name, IsType0 t) =>
Proxy name -> t -> Rule
=.= forall (name :: Symbol) era a.
(HuddleRule1 name era, IsType0 a) =>
Proxy era -> a -> GRuleCall
huddleRule1 @"multiasset" Proxy era
p (forall (name :: Symbol) era.
HuddleRule name era =>
Proxy era -> Rule
huddleRule @"int64" Proxy era
p)

assetNameRule :: Proxy "asset_name" -> Rule
assetNameRule :: Proxy "asset_name" -> Rule
assetNameRule Proxy "asset_name"
pname = Proxy "asset_name"
pname Proxy "asset_name" -> Constrained -> Rule
forall (name :: Symbol) t.
(KnownSymbol name, IsType0 t) =>
Proxy name -> t -> Rule
=.= Value ByteString
VBytes Value ByteString -> (Word64, Word64) -> Constrained
forall c a s.
(IsSizeable a, IsSize s, IsConstrainable c a) =>
c -> s -> Constrained
`sized` (Word64
0 :: Word64, Word64
32 :: Word64)

instance HuddleRule "block" MaryEra where
  huddleRuleNamed :: Proxy "block" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "block" -> Proxy MaryEra -> 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 HuddleRule "transaction" MaryEra where
  huddleRuleNamed :: Proxy "transaction" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "transaction" -> Proxy MaryEra -> Rule
forall era.
(HuddleRule "transaction_body" era,
 HuddleRule "transaction_witness_set" era,
 HuddleRule "auxiliary_data" era) =>
Proxy "transaction" -> Proxy era -> Rule
transactionRule

instance HuddleRule "header" MaryEra where
  huddleRuleNamed :: Proxy "header" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "header" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "header_body" era =>
Proxy "header" -> Proxy era -> Rule
headerRule

instance HuddleRule "header_body" MaryEra where
  huddleRuleNamed :: Proxy "header_body" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "header_body" -> Proxy MaryEra -> Rule
forall era.
(HuddleGroup "operational_cert" era,
 HuddleGroup "protocol_version" era) =>
Proxy "header_body" -> Proxy era -> Rule
headerBodyRule

instance HuddleGroup "protocol_version" MaryEra where
  huddleGroupNamed :: Proxy "protocol_version" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "protocol_version" -> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "major_protocol_version" era =>
Proxy "protocol_version" -> Proxy era -> GroupDef
shelleyProtocolVersionGroup

instance HuddleRule "major_protocol_version" MaryEra where
  huddleRuleNamed :: Proxy "major_protocol_version" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "major_protocol_version" -> Proxy MaryEra -> Rule
forall era.
Era era =>
Proxy "major_protocol_version" -> Proxy era -> Rule
majorProtocolVersionRule

instance HuddleRule "transaction_id" MaryEra where
  huddleRuleNamed :: Proxy "transaction_id" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "transaction_id" -> Proxy MaryEra -> Rule
forall era. Era era => Proxy "transaction_id" -> Proxy era -> Rule
transactionIdRule

instance HuddleRule "transaction_input" MaryEra where
  huddleRuleNamed :: Proxy "transaction_input" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "transaction_input" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "transaction_id" era =>
Proxy "transaction_input" -> Proxy era -> Rule
transactionInputRule

instance HuddleGroup "operational_cert" MaryEra where
  huddleGroupNamed :: Proxy "operational_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "operational_cert" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "operational_cert" -> Proxy era -> GroupDef
shelleyOperationalCertGroup

instance HuddleRule "vkeywitness" MaryEra where
  huddleRuleNamed :: Proxy "vkeywitness" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "vkeywitness" -> Proxy MaryEra -> Rule
forall era. Era era => Proxy "vkeywitness" -> Proxy era -> Rule
vkeywitnessRule

instance HuddleRule "bootstrap_witness" MaryEra where
  huddleRuleNamed :: Proxy "bootstrap_witness" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "bootstrap_witness" -> Proxy MaryEra -> Rule
forall era.
Era era =>
Proxy "bootstrap_witness" -> Proxy era -> Rule
bootstrapWitnessRule

instance HuddleRule "transaction_witness_set" MaryEra where
  huddleRuleNamed :: Proxy "transaction_witness_set" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "transaction_witness_set" -> Proxy MaryEra -> Rule
forall era.
(HuddleRule "vkeywitness" era, HuddleRule "native_script" era,
 HuddleRule "bootstrap_witness" era) =>
Proxy "transaction_witness_set" -> Proxy era -> Rule
transactionWitnessSetRule

instance HuddleRule "withdrawals" MaryEra where
  huddleRuleNamed :: Proxy "withdrawals" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "withdrawals" -> Proxy MaryEra -> Rule
forall era. Era era => Proxy "withdrawals" -> Proxy era -> Rule
shelleyWithdrawalsRule

instance HuddleRule "certificate" MaryEra where
  huddleRuleNamed :: Proxy "certificate" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "certificate" -> Proxy MaryEra -> 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 HuddleGroup "account_registration_cert" MaryEra where
  huddleGroupNamed :: Proxy "account_registration_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "account_registration_cert" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "account_registration_cert" -> Proxy era -> GroupDef
accountRegistrationCertGroup

instance HuddleGroup "account_unregistration_cert" MaryEra where
  huddleGroupNamed :: Proxy "account_unregistration_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "account_unregistration_cert" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "account_unregistration_cert" -> Proxy era -> GroupDef
accountUnregistrationCertGroup

instance HuddleGroup "delegation_to_stake_pool_cert" MaryEra where
  huddleGroupNamed :: Proxy "delegation_to_stake_pool_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "delegation_to_stake_pool_cert" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "delegation_to_stake_pool_cert" -> Proxy era -> GroupDef
delegationToStakePoolCertGroup

instance HuddleGroup "pool_registration_cert" MaryEra where
  huddleGroupNamed :: Proxy "pool_registration_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "pool_registration_cert" -> Proxy MaryEra -> GroupDef
forall era.
HuddleGroup "pool_params" era =>
Proxy "pool_registration_cert" -> Proxy era -> GroupDef
poolRegistrationCertGroup

instance HuddleGroup "pool_retirement_cert" MaryEra where
  huddleGroupNamed :: Proxy "pool_retirement_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "pool_retirement_cert" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "pool_retirement_cert" -> Proxy era -> GroupDef
poolRetirementCertGroup

instance HuddleGroup "genesis_delegation_cert" MaryEra where
  huddleGroupNamed :: Proxy "genesis_delegation_cert" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "genesis_delegation_cert" -> Proxy MaryEra -> GroupDef
forall era.
(HuddleRule "genesis_hash" era,
 HuddleRule "genesis_delegate_hash" era) =>
Proxy "genesis_delegation_cert" -> Proxy era -> GroupDef
genesisDelegationCertGroup

instance HuddleGroup "move_instantaneous_rewards_cert" MaryEra where
  huddleGroupNamed :: Proxy "move_instantaneous_rewards_cert"
-> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "move_instantaneous_rewards_cert"
-> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "move_instantaneous_reward" era =>
Proxy "move_instantaneous_rewards_cert" -> Proxy era -> GroupDef
moveInstantaneousRewardsCertGroup

instance HuddleRule "genesis_hash" MaryEra where
  huddleRuleNamed :: Proxy "genesis_hash" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "genesis_hash" -> Proxy MaryEra -> Rule
forall era. Era era => Proxy "genesis_hash" -> Proxy era -> Rule
genesisHashRule

instance HuddleRule "genesis_delegate_hash" MaryEra where
  huddleRuleNamed :: Proxy "genesis_delegate_hash" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "genesis_delegate_hash" -> Proxy MaryEra -> Rule
forall era.
Era era =>
Proxy "genesis_delegate_hash" -> Proxy era -> Rule
genesisDelegateHashRule

instance HuddleRule "delta_coin" MaryEra where
  huddleRuleNamed :: Proxy "delta_coin" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "delta_coin"
pname Proxy MaryEra
_ = Proxy "delta_coin" -> Rule
deltaCoinRule Proxy "delta_coin"
pname

instance HuddleRule "move_instantaneous_reward" MaryEra where
  huddleRuleNamed :: Proxy "move_instantaneous_reward" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "move_instantaneous_reward" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "delta_coin" era =>
Proxy "move_instantaneous_reward" -> Proxy era -> Rule
moveInstantaneousRewardRule

instance HuddleGroup "pool_params" MaryEra where
  huddleGroupNamed :: Proxy "pool_params" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "pool_params" -> Proxy MaryEra -> GroupDef
forall era.
(HuddleRule "relay" era, HuddleRule "pool_metadata" era,
 HuddleRule1 "set" era) =>
Proxy "pool_params" -> Proxy era -> GroupDef
poolParamsGroup

instance HuddleRule "pool_metadata" MaryEra where
  huddleRuleNamed :: Proxy "pool_metadata" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "pool_metadata" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "url" era =>
Proxy "pool_metadata" -> Proxy era -> Rule
poolMetadataRule

instance HuddleRule "dns_name" MaryEra where
  huddleRuleNamed :: Proxy "dns_name" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "dns_name"
pname Proxy MaryEra
_ = Proxy "dns_name" -> Rule
dnsNameRule Proxy "dns_name"
pname

instance HuddleRule "url" MaryEra where
  huddleRuleNamed :: Proxy "url" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "url"
pname Proxy MaryEra
_ = Proxy "url" -> Rule
urlRule Proxy "url"
pname

instance HuddleGroup "single_host_addr" MaryEra where
  huddleGroupNamed :: Proxy "single_host_addr" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "single_host_addr" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "single_host_addr" -> Proxy era -> GroupDef
singleHostAddrGroup

instance HuddleGroup "single_host_name" MaryEra where
  huddleGroupNamed :: Proxy "single_host_name" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "single_host_name" -> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "dns_name" era =>
Proxy "single_host_name" -> Proxy era -> GroupDef
singleHostNameGroup

instance HuddleGroup "multi_host_name" MaryEra where
  huddleGroupNamed :: Proxy "multi_host_name" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "multi_host_name" -> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "dns_name" era =>
Proxy "multi_host_name" -> Proxy era -> GroupDef
multiHostNameGroup

instance HuddleRule "relay" MaryEra where
  huddleRuleNamed :: Proxy "relay" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "relay" -> Proxy MaryEra -> 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 HuddleRule "protocol_param_update" MaryEra where
  huddleRuleNamed :: Proxy "protocol_param_update" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "protocol_param_update" -> Proxy MaryEra -> Rule
forall era.
HuddleGroup "protocol_version" era =>
Proxy "protocol_param_update" -> Proxy era -> Rule
protocolParamUpdateRule

instance HuddleRule "proposed_protocol_parameter_updates" MaryEra where
  huddleRuleNamed :: Proxy "proposed_protocol_parameter_updates"
-> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "proposed_protocol_parameter_updates"
-> Proxy MaryEra -> Rule
forall era.
(HuddleRule "genesis_hash" era,
 HuddleRule "protocol_param_update" era) =>
Proxy "proposed_protocol_parameter_updates" -> Proxy era -> Rule
proposedProtocolParameterUpdatesRule

instance HuddleRule "update" MaryEra where
  huddleRuleNamed :: Proxy "update" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "update" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "proposed_protocol_parameter_updates" era =>
Proxy "update" -> Proxy era -> Rule
updateRule

instance HuddleGroup "script_pubkey" MaryEra where
  huddleGroupNamed :: Proxy "script_pubkey" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "script_pubkey" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "script_pubkey" -> Proxy era -> GroupDef
scriptPubkeyGroup

instance HuddleGroup "script_all" MaryEra where
  huddleGroupNamed :: Proxy "script_all" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "script_all" -> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "native_script" era =>
Proxy "script_all" -> Proxy era -> GroupDef
scriptAllGroup

instance HuddleGroup "script_any" MaryEra where
  huddleGroupNamed :: Proxy "script_any" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "script_any" -> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "native_script" era =>
Proxy "script_any" -> Proxy era -> GroupDef
scriptAnyGroup

instance HuddleGroup "script_n_of_k" MaryEra where
  huddleGroupNamed :: Proxy "script_n_of_k" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "script_n_of_k" -> Proxy MaryEra -> GroupDef
forall era.
HuddleRule "native_script" era =>
Proxy "script_n_of_k" -> Proxy era -> GroupDef
scriptNOfKGroup

instance HuddleGroup "script_invalid_before" MaryEra where
  huddleGroupNamed :: Proxy "script_invalid_before" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "script_invalid_before" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "script_invalid_before" -> Proxy era -> GroupDef
scriptInvalidBeforeGroup

instance HuddleGroup "script_invalid_hereafter" MaryEra where
  huddleGroupNamed :: Proxy "script_invalid_hereafter" -> Proxy MaryEra -> GroupDef
huddleGroupNamed = Proxy "script_invalid_hereafter" -> Proxy MaryEra -> GroupDef
forall era.
Era era =>
Proxy "script_invalid_hereafter" -> Proxy era -> GroupDef
scriptInvalidHereafterGroup

instance HuddleRule "native_script" MaryEra where
  huddleRuleNamed :: Proxy "native_script" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "native_script" -> Proxy MaryEra -> 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 "transaction_body" MaryEra where
  huddleRuleNamed :: Proxy "transaction_body" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "transaction_body"
pname Proxy MaryEra
p =
    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 MaryEra
p (forall (name :: Symbol) era.
HuddleRule name era =>
Proxy era -> Rule
huddleRule @"transaction_input" Proxy MaryEra
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 MaryEra
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 MaryEra
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 MaryEra
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 MaryEra
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 MaryEra
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 MaryEra
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 MaryEra
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 MaryEra
p)
        , 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 MaryEra
p)
        ]

instance HuddleRule "transaction_output" MaryEra where
  huddleRuleNamed :: Proxy "transaction_output" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "transaction_output"
pname Proxy MaryEra
p =
    Proxy "transaction_output"
pname
      Proxy "transaction_output" -> 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 @"address" Proxy MaryEra
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 MaryEra
p
        ]

instance HuddleRule "value" MaryEra where
  huddleRuleNamed :: Proxy "value" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "value" -> Proxy MaryEra -> Rule
forall era.
HuddleRule1 "multiasset" era =>
Proxy "value" -> Proxy era -> Rule
maryValueRule

instance HuddleRule "policy_id" MaryEra where
  huddleRuleNamed :: Proxy "policy_id" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "policy_id"
pname Proxy MaryEra
p = Proxy "policy_id"
pname Proxy "policy_id" -> Rule -> Rule
forall (name :: Symbol) t.
(KnownSymbol name, IsType0 t) =>
Proxy name -> t -> Rule
=.= forall (name :: Symbol) era.
HuddleRule name era =>
Proxy era -> Rule
huddleRule @"script_hash" Proxy MaryEra
p

instance HuddleRule "asset_name" MaryEra where
  huddleRuleNamed :: Proxy "asset_name" -> Proxy MaryEra -> Rule
huddleRuleNamed Proxy "asset_name"
pname Proxy MaryEra
_ = Proxy "asset_name" -> Rule
assetNameRule Proxy "asset_name"
pname

instance HuddleRule "mint" MaryEra where
  huddleRuleNamed :: Proxy "mint" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "mint" -> Proxy MaryEra -> Rule
forall era.
HuddleRule1 "multiasset" era =>
Proxy "mint" -> Proxy era -> Rule
maryMintRule

instance HuddleRule "auxiliary_data" MaryEra where
  huddleRuleNamed :: Proxy "auxiliary_data" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "auxiliary_data" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "auxiliary_data_array" era =>
Proxy "auxiliary_data" -> Proxy era -> Rule
auxiliaryDataRule

instance HuddleRule "auxiliary_data_array" MaryEra where
  huddleRuleNamed :: Proxy "auxiliary_data_array" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "auxiliary_data_array" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "auxiliary_scripts" era =>
Proxy "auxiliary_data_array" -> Proxy era -> Rule
auxiliaryDataArrayRule

instance HuddleRule "auxiliary_scripts" MaryEra where
  huddleRuleNamed :: Proxy "auxiliary_scripts" -> Proxy MaryEra -> Rule
huddleRuleNamed = Proxy "auxiliary_scripts" -> Proxy MaryEra -> Rule
forall era.
HuddleRule "native_script" era =>
Proxy "auxiliary_scripts" -> Proxy era -> Rule
auxiliaryScriptsRule

instance HuddleRule1 "set" MaryEra where
  huddleRule1Named :: forall a.
IsType0 a =>
Proxy "set" -> Proxy MaryEra -> a -> GRuleCall
huddleRule1Named Proxy "set"
pname Proxy MaryEra
_ = Proxy "set" -> a -> GRuleCall
forall a. IsType0 a => Proxy "set" -> a -> GRuleCall
untaggedSet Proxy "set"
pname

instance HuddleRule1 "multiasset" MaryEra where
  huddleRule1Named :: forall a.
IsType0 a =>
Proxy "multiasset" -> Proxy MaryEra -> a -> GRuleCall
huddleRule1Named = Proxy "multiasset" -> Proxy MaryEra -> a -> GRuleCall
forall era a.
(HuddleRule "policy_id" era, HuddleRule "asset_name" era,
 IsType0 a) =>
Proxy "multiasset" -> Proxy era -> a -> GRuleCall
maryMultiasset