diff --git a/packages/api-augment/src/kusama/runtime.ts b/packages/api-augment/src/kusama/runtime.ts index e0fc94abbbed..a0944f9ddfaa 100644 --- a/packages/api-augment/src/kusama/runtime.ts +++ b/packages/api-augment/src/kusama/runtime.ts @@ -16,7 +16,7 @@ import type { AuthorityId } from '@polkadot/types/interfaces/consensus'; import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; import type { AuthorityList, GrandpaEquivocationProof, SetId } from '@polkadot/types/interfaces/grandpa'; import type { OpaqueMetadata } from '@polkadot/types/interfaces/metadata'; -import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError, MmrLeafIndex, MmrProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError } from '@polkadot/types/interfaces/mmr'; import type { NpPoolId } from '@polkadot/types/interfaces/nompools'; import type { CandidateCommitments, CandidateEvent, CommittedCandidateReceipt, CoreState, GroupRotationInfo, InboundDownwardMessage, InboundHrmpMessage, OccupiedCoreAssumption, ParaId, ParaValidatorIndex, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorSignature } from '@polkadot/types/interfaces/parachains'; import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; @@ -187,33 +187,21 @@ declare module '@polkadot/api-base/types/calls' { /** 0x91d5df18b0d2cf58/2 */ mmrApi: { /** - * Generate MMR proof for a series of leaves under given indices. + * Generate MMR proof for the given block numbers. **/ - generateBatchProof: AugmentedCall | (MmrLeafIndex | AnyNumber | Uint8Array)[]) => Observable, MmrBatchProof]>, MmrError>>>; - /** - * Generate MMR proof for a leaf under given index. - **/ - generateProof: AugmentedCall Observable, MmrError>>>; + generateProof: AugmentedCall | (BlockNumber | AnyNumber | Uint8Array)[], bestKnownBlockNumber: Option | null | Uint8Array | BlockNumber | AnyNumber) => Observable, MmrBatchProof]>, MmrError>>>; /** * Return the on-chain MMR root hash. **/ - mmrRoot: AugmentedCall Observable>>; - /** - * Verify MMR proof against on-chain MMR for a batch of leaves. - **/ - verifyBatchProof: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; - /** - * Verify MMR proof against given root hash or a batch of leaves. - **/ - verifyBatchProofStateless: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; + root: AugmentedCall Observable>>; /** * Verify MMR proof against on-chain MMR. **/ - verifyProof: AugmentedCall Observable, MmrError>>>; + verifyProof: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; /** * Verify MMR proof against given root hash. **/ - verifyProofStateless: AugmentedCall Observable, MmrError>>>; + verifyProofStateless: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; /** * Generic call **/ diff --git a/packages/api-augment/src/polkadot/runtime.ts b/packages/api-augment/src/polkadot/runtime.ts index e0fc94abbbed..a0944f9ddfaa 100644 --- a/packages/api-augment/src/polkadot/runtime.ts +++ b/packages/api-augment/src/polkadot/runtime.ts @@ -16,7 +16,7 @@ import type { AuthorityId } from '@polkadot/types/interfaces/consensus'; import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; import type { AuthorityList, GrandpaEquivocationProof, SetId } from '@polkadot/types/interfaces/grandpa'; import type { OpaqueMetadata } from '@polkadot/types/interfaces/metadata'; -import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError, MmrLeafIndex, MmrProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError } from '@polkadot/types/interfaces/mmr'; import type { NpPoolId } from '@polkadot/types/interfaces/nompools'; import type { CandidateCommitments, CandidateEvent, CommittedCandidateReceipt, CoreState, GroupRotationInfo, InboundDownwardMessage, InboundHrmpMessage, OccupiedCoreAssumption, ParaId, ParaValidatorIndex, PersistedValidationData, PvfCheckStatement, ScrapedOnChainVotes, SessionInfo, ValidationCode, ValidationCodeHash, ValidatorSignature } from '@polkadot/types/interfaces/parachains'; import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; @@ -187,33 +187,21 @@ declare module '@polkadot/api-base/types/calls' { /** 0x91d5df18b0d2cf58/2 */ mmrApi: { /** - * Generate MMR proof for a series of leaves under given indices. + * Generate MMR proof for the given block numbers. **/ - generateBatchProof: AugmentedCall | (MmrLeafIndex | AnyNumber | Uint8Array)[]) => Observable, MmrBatchProof]>, MmrError>>>; - /** - * Generate MMR proof for a leaf under given index. - **/ - generateProof: AugmentedCall Observable, MmrError>>>; + generateProof: AugmentedCall | (BlockNumber | AnyNumber | Uint8Array)[], bestKnownBlockNumber: Option | null | Uint8Array | BlockNumber | AnyNumber) => Observable, MmrBatchProof]>, MmrError>>>; /** * Return the on-chain MMR root hash. **/ - mmrRoot: AugmentedCall Observable>>; - /** - * Verify MMR proof against on-chain MMR for a batch of leaves. - **/ - verifyBatchProof: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; - /** - * Verify MMR proof against given root hash or a batch of leaves. - **/ - verifyBatchProofStateless: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; + root: AugmentedCall Observable>>; /** * Verify MMR proof against on-chain MMR. **/ - verifyProof: AugmentedCall Observable, MmrError>>>; + verifyProof: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; /** * Verify MMR proof against given root hash. **/ - verifyProofStateless: AugmentedCall Observable, MmrError>>>; + verifyProofStateless: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; /** * Generic call **/ diff --git a/packages/api-augment/src/substrate/runtime.ts b/packages/api-augment/src/substrate/runtime.ts index 889178616e02..cb998614a9d3 100644 --- a/packages/api-augment/src/substrate/runtime.ts +++ b/packages/api-augment/src/substrate/runtime.ts @@ -17,11 +17,11 @@ import type { CodeSource, CodeUploadResult, ContractExecResult, ContractInstanti import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; import type { AuthorityList, GrandpaEquivocationProof, SetId } from '@polkadot/types/interfaces/grandpa'; import type { OpaqueMetadata } from '@polkadot/types/interfaces/metadata'; -import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError, MmrLeafIndex, MmrProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError } from '@polkadot/types/interfaces/mmr'; import type { NftCollectionId, NftItemId } from '@polkadot/types/interfaces/nfts'; import type { NpPoolId } from '@polkadot/types/interfaces/nompools'; import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment'; -import type { AccountId, Balance, Block, Call, Hash, Header, Index, KeyTypeId, Slot, Weight, WeightV2 } from '@polkadot/types/interfaces/runtime'; +import type { AccountId, Balance, Block, BlockNumber, Call, Hash, Header, Index, KeyTypeId, Slot, Weight, WeightV2 } from '@polkadot/types/interfaces/runtime'; import type { RuntimeVersion } from '@polkadot/types/interfaces/state'; import type { ApplyExtrinsicResult } from '@polkadot/types/interfaces/system'; import type { TransactionSource, TransactionValidity } from '@polkadot/types/interfaces/txqueue'; @@ -198,33 +198,21 @@ declare module '@polkadot/api-base/types/calls' { /** 0x91d5df18b0d2cf58/2 */ mmrApi: { /** - * Generate MMR proof for a series of leaves under given indices. + * Generate MMR proof for the given block numbers. **/ - generateBatchProof: AugmentedCall | (MmrLeafIndex | AnyNumber | Uint8Array)[]) => Observable, MmrBatchProof]>, MmrError>>>; - /** - * Generate MMR proof for a leaf under given index. - **/ - generateProof: AugmentedCall Observable, MmrError>>>; + generateProof: AugmentedCall | (BlockNumber | AnyNumber | Uint8Array)[], bestKnownBlockNumber: Option | null | Uint8Array | BlockNumber | AnyNumber) => Observable, MmrBatchProof]>, MmrError>>>; /** * Return the on-chain MMR root hash. **/ - mmrRoot: AugmentedCall Observable>>; - /** - * Verify MMR proof against on-chain MMR for a batch of leaves. - **/ - verifyBatchProof: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; - /** - * Verify MMR proof against given root hash or a batch of leaves. - **/ - verifyBatchProofStateless: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; + root: AugmentedCall Observable>>; /** * Verify MMR proof against on-chain MMR. **/ - verifyProof: AugmentedCall Observable, MmrError>>>; + verifyProof: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; /** * Verify MMR proof against given root hash. **/ - verifyProofStateless: AugmentedCall Observable, MmrError>>>; + verifyProofStateless: AugmentedCall | (MmrEncodableOpaqueLeaf | string | Uint8Array)[], proof: MmrBatchProof | { leafIndices?: any; leafCount?: any; items?: any } | string | Uint8Array) => Observable, MmrError>>>; /** * Generic call **/ diff --git a/packages/rpc-augment/src/augment/jsonrpc.ts b/packages/rpc-augment/src/augment/jsonrpc.ts index f882746f3817..bd142eb07fd5 100644 --- a/packages/rpc-augment/src/augment/jsonrpc.ts +++ b/packages/rpc-augment/src/augment/jsonrpc.ts @@ -21,7 +21,7 @@ import type { CreatedBlock } from '@polkadot/types/interfaces/engine'; import type { EthAccount, EthCallRequest, EthFeeHistory, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth'; import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics'; import type { EncodedFinalityProofs, JustificationNotification, ReportedRoundStates } from '@polkadot/types/interfaces/grandpa'; -import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrHash, MmrLeafBatchProof } from '@polkadot/types/interfaces/mmr'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; import type { FeeDetails, RuntimeDispatchInfoV1 } from '@polkadot/types/interfaces/payment'; import type { RpcMethods } from '@polkadot/types/interfaces/rpc'; @@ -373,13 +373,21 @@ declare module '@polkadot/rpc-core/types/jsonrpc' { }; mmr: { /** - * Generate MMR proof for the given leaf indices. + * Generate MMR proof for the given block numbers. **/ - generateBatchProof: AugmentedRpc<(leafIndices: Vec | (u64 | AnyNumber | Uint8Array)[], at?: BlockHash | string | Uint8Array) => Observable>; + generateProof: AugmentedRpc<(blockNumbers: Vec | (u64 | AnyNumber | Uint8Array)[], bestKnownBlockNumber?: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; /** - * Generate MMR proof for given leaf index. + * Get the MMR root hash for the current best block. **/ - generateProof: AugmentedRpc<(leafIndex: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable>; + root: AugmentedRpc<(at?: BlockHash | string | Uint8Array) => Observable>; + /** + * Verify an MMR proof + **/ + verifyProof: AugmentedRpc<(proof: MmrLeafBatchProof | { blockHash?: any; leaves?: any; proof?: any } | string | Uint8Array) => Observable>; + /** + * Verify an MMR proof statelessly given an mmr_root + **/ + verifyProofStateless: AugmentedRpc<(root: MmrHash | string | Uint8Array, proof: MmrLeafBatchProof | { blockHash?: any; leaves?: any; proof?: any } | string | Uint8Array) => Observable>; }; net: { /** diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index 5ce509bfd660..e98587238566 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -41,7 +41,7 @@ import type { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityInfo import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline'; import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery'; import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, OpaqueMetadata, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata'; -import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError, MmrLeafBatchProof, MmrLeafIndex, MmrLeafProof, MmrNodeIndex, MmrProof } from '@polkadot/types/interfaces/mmr'; +import type { MmrBatchProof, MmrEncodableOpaqueLeaf, MmrError, MmrHash, MmrLeafBatchProof, MmrLeafIndex, MmrLeafProof, MmrNodeIndex, MmrProof } from '@polkadot/types/interfaces/mmr'; import type { NftCollectionId, NftItemId } from '@polkadot/types/interfaces/nfts'; import type { NpApiError, NpPoolId } from '@polkadot/types/interfaces/nompools'; import type { StorageKind } from '@polkadot/types/interfaces/offchain'; @@ -646,6 +646,7 @@ declare module '@polkadot/types/types/registry' { MmrBatchProof: MmrBatchProof; MmrEncodableOpaqueLeaf: MmrEncodableOpaqueLeaf; MmrError: MmrError; + MmrHash: MmrHash; MmrLeafBatchProof: MmrLeafBatchProof; MmrLeafIndex: MmrLeafIndex; MmrLeafProof: MmrLeafProof; diff --git a/packages/types/src/interfaces/mmr/definitions.ts b/packages/types/src/interfaces/mmr/definitions.ts index b4485ea1473d..0bfebe858c8e 100644 --- a/packages/types/src/interfaces/mmr/definitions.ts +++ b/packages/types/src/interfaces/mmr/definitions.ts @@ -22,6 +22,7 @@ export default { MmrError: { _enum: ['Push', 'GetRoot', 'Commit', 'GenerateProof', 'Verify', 'LeafNotFound', ' PalletNotIncluded', 'InvalidLeafIndex'] }, + MmrHash: 'Hash', MmrLeafBatchProof: { blockHash: 'BlockHash', leaves: 'Bytes', diff --git a/packages/types/src/interfaces/mmr/rpc.ts b/packages/types/src/interfaces/mmr/rpc.ts index 5a2dbdeae881..e494483f70b9 100644 --- a/packages/types/src/interfaces/mmr/rpc.ts +++ b/packages/types/src/interfaces/mmr/rpc.ts @@ -4,13 +4,18 @@ import type { DefinitionsRpc } from '../../types/index.js'; export const rpc: DefinitionsRpc = { - generateBatchProof: { - description: 'Generate MMR proof for the given leaf indices.', + generateProof: { + description: 'Generate MMR proof for the given block numbers.', params: [ { - name: 'leafIndices', + name: 'blockNumbers', type: 'Vec' }, + { + isOptional: true, + name: 'bestKnownBlockNumber', + type: 'u64' + }, { isHistoric: true, isOptional: true, @@ -18,15 +23,12 @@ export const rpc: DefinitionsRpc = { type: 'BlockHash' } ], - type: 'MmrLeafProof' + type: 'MmrLeafBatchProof' }, - generateProof: { - description: 'Generate MMR proof for given leaf index.', + + root: { + description: 'Get the MMR root hash for the current best block.', params: [ - { - name: 'leafIndex', - type: 'u64' - }, { isHistoric: true, isOptional: true, @@ -34,6 +36,32 @@ export const rpc: DefinitionsRpc = { type: 'BlockHash' } ], - type: 'MmrLeafBatchProof' + type: 'MmrHash' + }, + + verifyProof: { + description: 'Verify an MMR proof', + params: [ + { + name: 'proof', + type: 'MmrLeafBatchProof' + } + ], + type: 'bool' + }, + + verifyProofStateless: { + description: 'Verify an MMR proof statelessly given an mmr_root', + params: [ + { + name: 'root', + type: 'MmrHash' + }, + { + name: 'proof', + type: 'MmrLeafBatchProof' + } + ], + type: 'bool' } }; diff --git a/packages/types/src/interfaces/mmr/runtime.ts b/packages/types/src/interfaces/mmr/runtime.ts index 654f3aa2c5f1..248071c07d6a 100644 --- a/packages/types/src/interfaces/mmr/runtime.ts +++ b/packages/types/src/interfaces/mmr/runtime.ts @@ -3,7 +3,61 @@ import type { DefinitionCall, DefinitionsCall } from '../../types/index.js'; -const MMR_V1_V2: Record = { +const MMR_V2: Record = { + generate_proof: { + description: 'Generate MMR proof for the given block numbers.', + params: [ + { + name: 'blockNumbers', + type: 'Vec' + }, + { + name: 'bestKnownBlockNumber', + type: 'Option' + } + ], + type: 'Result<(Vec, MmrBatchProof), MmrError>' + }, + root: { + description: 'Return the on-chain MMR root hash.', + params: [], + type: 'Result' + }, + verify_proof: { + description: 'Verify MMR proof against on-chain MMR.', + params: [ + { + name: 'leaves', + type: 'Vec' + }, + { + name: 'proof', + type: 'MmrBatchProof' + } + ], + type: 'Result<(), MmrError>' + }, + verify_proof_stateless: { + description: 'Verify MMR proof against given root hash.', + params: [ + { + name: 'root', + type: 'Hash' + }, + { + name: 'leaves', + type: 'Vec' + }, + { + name: 'proof', + type: 'MmrBatchProof' + } + ], + type: 'Result<(), MmrError>' + } +}; + +const MMR_V1: Record = { generate_batch_proof: { description: 'Generate MMR proof for a series of leaves under given indices.', params: [ @@ -98,11 +152,11 @@ const MMR_V1_V2: Record = { export const runtime: DefinitionsCall = { MmrApi: [ { - methods: MMR_V1_V2, + methods: MMR_V2, version: 2 }, { - methods: MMR_V1_V2, + methods: MMR_V1, version: 1 } ] diff --git a/packages/types/src/interfaces/mmr/types.ts b/packages/types/src/interfaces/mmr/types.ts index 27dbec51d61f..219eddbdcabe 100644 --- a/packages/types/src/interfaces/mmr/types.ts +++ b/packages/types/src/interfaces/mmr/types.ts @@ -28,6 +28,9 @@ export interface MmrError extends Enum { readonly type: 'Push' | 'GetRoot' | 'Commit' | 'GenerateProof' | 'Verify' | 'LeafNotFound' | 'PalletNotIncluded' | 'InvalidLeafIndex'; } +/** @name MmrHash */ +export interface MmrHash extends Hash {} + /** @name MmrLeafBatchProof */ export interface MmrLeafBatchProof extends Struct { readonly blockHash: BlockHash;