From 0589b1f14ca78785ea33d2e3481775bcd3f47e6e Mon Sep 17 00:00:00 2001 From: Valentin Fernandez <33705477+valentinfernandez1@users.noreply.github.com> Date: Tue, 13 May 2025 09:59:19 -0300 Subject: [PATCH] Add XcmV5 to types-augment (#6142) --- .../types-augment/src/registry/interfaces.ts | 24 +- packages/types-create/src/util/xcm.ts | 2 +- .../types/src/interfaces/xcm/definitions.ts | 19 +- packages/types/src/interfaces/xcm/types.ts | 464 +++++++++++++++++- packages/types/src/interfaces/xcm/v5.ts | 314 ++++++++++++ 5 files changed, 799 insertions(+), 24 deletions(-) create mode 100644 packages/types/src/interfaces/xcm/v5.ts diff --git a/packages/types-augment/src/registry/interfaces.ts b/packages/types-augment/src/registry/interfaces.ts index e6f512ed5a..fe70f5fe6a 100644 --- a/packages/types-augment/src/registry/interfaces.ts +++ b/packages/types-augment/src/registry/interfaces.ts @@ -74,7 +74,7 @@ import type { TransactionSource, TransactionValidity, ValidTransaction } from '@ import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques'; import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; import type { VestingInfo } from '@polkadot/types/interfaces/vesting'; -import type { AssetIdV2, AssetIdV3, AssetIdV4, AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, AssetInstanceV3, AssetInstanceV4, BodyId, BodyIdV2, BodyIdV3, BodyPart, BodyPartV2, BodyPartV3, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, FungibilityV3, FungibilityV4, InboundStatus, InstructionV2, InstructionV3, InstructionV4, InteriorMultiLocation, InteriorMultiLocationV2, InteriorMultiLocationV3, Junction, JunctionV0, JunctionV1, JunctionV2, JunctionV3, JunctionV4, Junctions, JunctionsV1, JunctionsV2, JunctionsV3, JunctionsV4, MaxPalletNameLen, MaxPalletsInfo, MaybeErrorCodeV3, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetFilterV3, MultiAssetFilterV4, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssetV3, MultiAssetV4, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiAssetsV3, MultiAssetsV4, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, MultiLocationV3, MultiLocationV4, NetworkId, NetworkIdV2, NetworkIdV3, NetworkIdV4, OriginKindV0, OriginKindV1, OriginKindV2, OriginKindV3, OriginKindV4, OutboundStatus, Outcome, OutcomeV4, PalletInfoV3, PalletInfoV4, QueryId, QueryResponseInfoV3, QueryResponseInfoV4, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV3, ResponseV3Error, ResponseV3Result, ResponseV4, UncheckedFungibilityV4, VersionMigrationStage, VersionV3, VersionV4, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WeightLimitV3, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildFungibilityV3, WildFungibilityV4, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, WildMultiAssetV3, WildMultiAssetV4, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmErrorV3, XcmErrorV4, XcmOrderV0, XcmOrderV1, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmV3, XcmV4, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; +import type { AssetIdV2, AssetIdV3, AssetIdV4, AssetIdV5, AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, AssetInstanceV3, AssetInstanceV4, AssetInstanceV5, BodyId, BodyIdV2, BodyIdV3, BodyPart, BodyPartV2, BodyPartV3, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, FungibilityV3, FungibilityV4, FungibilityV5, HintV5, InboundStatus, InstructionV2, InstructionV3, InstructionV4, InstructionV5, InteriorMultiLocation, InteriorMultiLocationV2, InteriorMultiLocationV3, InteriorMultiLocationV5, Junction, JunctionV0, JunctionV1, JunctionV2, JunctionV3, JunctionV4, JunctionV5, Junctions, JunctionsV1, JunctionsV2, JunctionsV3, JunctionsV4, JunctionsV5, MaxPalletNameLen, MaxPalletsInfo, MaybeErrorCodeV3, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetFilterV3, MultiAssetFilterV4, MultiAssetFilterV5, MultiAssetTransferFilterV5, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssetV3, MultiAssetV4, MultiAssetV5, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiAssetsV3, MultiAssetsV4, MultiAssetsV5, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, MultiLocationV3, MultiLocationV4, MultiLocationV5, NetworkId, NetworkIdV2, NetworkIdV3, NetworkIdV4, NetworkIdV5, OriginKindV0, OriginKindV1, OriginKindV2, OriginKindV3, OriginKindV4, OutboundStatus, Outcome, OutcomeV4, PalletInfoV3, PalletInfoV4, PalletInfoV5, QueryId, QueryResponseInfoV3, QueryResponseInfoV4, QueryResponseInfoV5, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV3, ResponseV3Error, ResponseV3Result, ResponseV4, ResponseV5, UncheckedFungibilityV4, UncheckedFungibilityV5, VersionMigrationStage, VersionV3, VersionV4, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WeightLimitV3, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildFungibilityV3, WildFungibilityV4, WildFungibilityV5, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, WildMultiAssetV3, WildMultiAssetV4, WildMultiAssetV5, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmErrorV3, XcmErrorV4, XcmErrorV5, XcmOrderV0, XcmOrderV1, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmV3, XcmV4, XcmV5, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; import type { XcmPaymentApiError } from '@polkadot/types/interfaces/xcmPaymentApi'; import type { Error } from '@polkadot/types/interfaces/xcmRuntimeApi'; @@ -126,12 +126,14 @@ declare module '@polkadot/types/types/registry' { AssetIdV2: AssetIdV2; AssetIdV3: AssetIdV3; AssetIdV4: AssetIdV4; + AssetIdV5: AssetIdV5; AssetInstance: AssetInstance; AssetInstanceV0: AssetInstanceV0; AssetInstanceV1: AssetInstanceV1; AssetInstanceV2: AssetInstanceV2; AssetInstanceV3: AssetInstanceV3; AssetInstanceV4: AssetInstanceV4; + AssetInstanceV5: AssetInstanceV5; AssetMetadata: AssetMetadata; AssetOptions: AssetOptions; AssignmentId: AssignmentId; @@ -551,6 +553,7 @@ declare module '@polkadot/types/types/registry' { FungibilityV2: FungibilityV2; FungibilityV3: FungibilityV3; FungibilityV4: FungibilityV4; + FungibilityV5: FungibilityV5; FungiblesAccessError: FungiblesAccessError; Gas: Gas; GenesisBuildErr: GenesisBuildErr; @@ -582,6 +585,7 @@ declare module '@polkadot/types/types/registry' { Health: Health; Heartbeat: Heartbeat; HeartbeatTo244: HeartbeatTo244; + HintV5: HintV5; HostConfiguration: HostConfiguration; HostFnWeights: HostFnWeights; HostFnWeightsTo264: HostFnWeightsTo264; @@ -639,10 +643,12 @@ declare module '@polkadot/types/types/registry' { InstructionV2: InstructionV2; InstructionV3: InstructionV3; InstructionV4: InstructionV4; + InstructionV5: InstructionV5; InstructionWeights: InstructionWeights; InteriorMultiLocation: InteriorMultiLocation; InteriorMultiLocationV2: InteriorMultiLocationV2; InteriorMultiLocationV3: InteriorMultiLocationV3; + InteriorMultiLocationV5: InteriorMultiLocationV5; InvalidDisputeStatementKind: InvalidDisputeStatementKind; InvalidTransaction: InvalidTransaction; isize: isize; @@ -654,11 +660,13 @@ declare module '@polkadot/types/types/registry' { JunctionsV2: JunctionsV2; JunctionsV3: JunctionsV3; JunctionsV4: JunctionsV4; + JunctionsV5: JunctionsV5; JunctionV0: JunctionV0; JunctionV1: JunctionV1; JunctionV2: JunctionV2; JunctionV3: JunctionV3; JunctionV4: JunctionV4; + JunctionV5: JunctionV5; Justification: Justification; JustificationNotification: JustificationNotification; Justifications: Justifications; @@ -744,16 +752,20 @@ declare module '@polkadot/types/types/registry' { MultiAssetFilterV2: MultiAssetFilterV2; MultiAssetFilterV3: MultiAssetFilterV3; MultiAssetFilterV4: MultiAssetFilterV4; + MultiAssetFilterV5: MultiAssetFilterV5; MultiAssets: MultiAssets; MultiAssetsV1: MultiAssetsV1; MultiAssetsV2: MultiAssetsV2; MultiAssetsV3: MultiAssetsV3; MultiAssetsV4: MultiAssetsV4; + MultiAssetsV5: MultiAssetsV5; + MultiAssetTransferFilterV5: MultiAssetTransferFilterV5; MultiAssetV0: MultiAssetV0; MultiAssetV1: MultiAssetV1; MultiAssetV2: MultiAssetV2; MultiAssetV3: MultiAssetV3; MultiAssetV4: MultiAssetV4; + MultiAssetV5: MultiAssetV5; MultiDisputeStatementSet: MultiDisputeStatementSet; MultiLocation: MultiLocation; MultiLocationV0: MultiLocationV0; @@ -761,6 +773,7 @@ declare module '@polkadot/types/types/registry' { MultiLocationV2: MultiLocationV2; MultiLocationV3: MultiLocationV3; MultiLocationV4: MultiLocationV4; + MultiLocationV5: MultiLocationV5; Multiplier: Multiplier; Multisig: Multisig; MultiSignature: MultiSignature; @@ -769,6 +782,7 @@ declare module '@polkadot/types/types/registry' { NetworkIdV2: NetworkIdV2; NetworkIdV3: NetworkIdV3; NetworkIdV4: NetworkIdV4; + NetworkIdV5: NetworkIdV5; NetworkState: NetworkState; NetworkStatePeerset: NetworkStatePeerset; NetworkStatePeersetInfo: NetworkStatePeersetInfo; @@ -838,6 +852,7 @@ declare module '@polkadot/types/types/registry' { PalletId: PalletId; PalletInfoV3: PalletInfoV3; PalletInfoV4: PalletInfoV4; + PalletInfoV5: PalletInfoV5; PalletMetadataLatest: PalletMetadataLatest; PalletMetadataV14: PalletMetadataV14; PalletMetadataV15: PalletMetadataV15; @@ -913,6 +928,7 @@ declare module '@polkadot/types/types/registry' { QueryId: QueryId; QueryResponseInfoV3: QueryResponseInfoV3; QueryResponseInfoV4: QueryResponseInfoV4; + QueryResponseInfoV5: QueryResponseInfoV5; QueryStatus: QueryStatus; QueueConfigData: QueueConfigData; QueuedParathread: QueuedParathread; @@ -974,6 +990,7 @@ declare module '@polkadot/types/types/registry' { ResponseV3Error: ResponseV3Error; ResponseV3Result: ResponseV3Result; ResponseV4: ResponseV4; + ResponseV5: ResponseV5; Retriable: Retriable; RewardDestination: RewardDestination; RewardPoint: RewardPoint; @@ -1211,6 +1228,7 @@ declare module '@polkadot/types/types/registry' { UnappliedSlash: UnappliedSlash; UnappliedSlashOther: UnappliedSlashOther; UncheckedFungibilityV4: UncheckedFungibilityV4; + UncheckedFungibilityV5: UncheckedFungibilityV5; UncleEntryItem: UncleEntryItem; UnknownTransaction: UnknownTransaction; UnlockChunk: UnlockChunk; @@ -1284,11 +1302,13 @@ declare module '@polkadot/types/types/registry' { WildFungibilityV2: WildFungibilityV2; WildFungibilityV3: WildFungibilityV3; WildFungibilityV4: WildFungibilityV4; + WildFungibilityV5: WildFungibilityV5; WildMultiAsset: WildMultiAsset; WildMultiAssetV1: WildMultiAssetV1; WildMultiAssetV2: WildMultiAssetV2; WildMultiAssetV3: WildMultiAssetV3; WildMultiAssetV4: WildMultiAssetV4; + WildMultiAssetV5: WildMultiAssetV5; WinnersData: WinnersData; WinnersData10: WinnersData10; WinnersDataTuple: WinnersDataTuple; @@ -1307,6 +1327,7 @@ declare module '@polkadot/types/types/registry' { XcmErrorV2: XcmErrorV2; XcmErrorV3: XcmErrorV3; XcmErrorV4: XcmErrorV4; + XcmErrorV5: XcmErrorV5; XcmOrderV0: XcmOrderV0; XcmOrderV1: XcmOrderV1; XcmOrigin: XcmOrigin; @@ -1318,6 +1339,7 @@ declare module '@polkadot/types/types/registry' { XcmV2: XcmV2; XcmV3: XcmV3; XcmV4: XcmV4; + XcmV5: XcmV5; XcmVersion: XcmVersion; } // InterfaceTypes } // declare module diff --git a/packages/types-create/src/util/xcm.ts b/packages/types-create/src/util/xcm.ts index ed1371197c..e9a31dcf43 100644 --- a/packages/types-create/src/util/xcm.ts +++ b/packages/types-create/src/util/xcm.ts @@ -5,7 +5,7 @@ import { objectSpread } from '@polkadot/util'; export const XCM_MAPPINGS = ['AssetInstance', 'Fungibility', 'Junction', 'Junctions', 'MultiAsset', 'MultiAssetFilter', 'MultiLocation', 'Response', 'WildFungibility', 'WildMultiAsset', 'Xcm', 'XcmError']; -export function mapXcmTypes (version: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'): Record { +export function mapXcmTypes (version: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'): Record { return XCM_MAPPINGS.reduce>((all, key) => objectSpread(all, { [key]: `${key}${version}` }), {} ); diff --git a/packages/types/src/interfaces/xcm/definitions.ts b/packages/types/src/interfaces/xcm/definitions.ts index 0f58cd6c97..5d7681fa48 100644 --- a/packages/types/src/interfaces/xcm/definitions.ts +++ b/packages/types/src/interfaces/xcm/definitions.ts @@ -13,8 +13,9 @@ import { v1 } from './v1.js'; import { v2 } from './v2.js'; import { v3 } from './v3.js'; import { v4 } from './v4.js'; +import { v5 } from './v5.js'; -const XCM_LATEST = 'V4'; +const XCM_LATEST = 'V5'; const xcm = { XcmOrigin: { @@ -91,6 +92,7 @@ export default { ...v2, ...v3, ...v4, + ...v5, ...mapXcmTypes(XCM_LATEST), DoubleEncodedCall: { encoded: 'Bytes' @@ -140,7 +142,8 @@ export default { V1: 'MultiAssetV1', V2: 'MultiAssetV2', V3: 'MultiAssetV3', - V4: 'MultiAssetV4' + V4: 'MultiAssetV4', + V5: 'MultiAssetV5' } }, VersionedMultiAssets: { @@ -149,7 +152,8 @@ export default { V1: 'MultiAssetsV1', V2: 'MultiAssetsV2', V3: 'MultiAssetsV3', - V4: 'MultiAssetsV4' + V4: 'MultiAssetsV4', + V5: 'MultiAssetsV5' } }, VersionedMultiLocation: { @@ -158,7 +162,8 @@ export default { V1: 'MultiLocationV1', V2: 'MultiLocationV2', V3: 'MultiLocationV3', - V4: 'MultiLocationV4' + V4: 'MultiLocationV4', + v5: 'MultiLocationV5' } }, VersionedResponse: { @@ -166,7 +171,8 @@ export default { V1: 'ResponseV1', V2: 'ResponseV2', V3: 'ResponseV3', - V4: 'ResponseV4' + V4: 'ResponseV4', + V5: 'ResponseV5' }, VersionedXcm: { _enum: { @@ -174,7 +180,8 @@ export default { V1: 'XcmV1', V2: 'XcmV2', V3: 'XcmV3', - V4: 'XcmV4' + V4: 'XcmV4', + V5: 'XcmV5' } }, XcmVersion: 'u32' diff --git a/packages/types/src/interfaces/xcm/types.ts b/packages/types/src/interfaces/xcm/types.ts index 39146b5d31..2b31a79850 100644 --- a/packages/types/src/interfaces/xcm/types.ts +++ b/packages/types/src/interfaces/xcm/types.ts @@ -26,8 +26,11 @@ export interface AssetIdV3 extends Enum { /** @name AssetIdV4 */ export interface AssetIdV4 extends MultiLocationV4 {} +/** @name AssetIdV5 */ +export interface AssetIdV5 extends MultiLocationV5 {} + /** @name AssetInstance */ -export interface AssetInstance extends AssetInstanceV4 {} +export interface AssetInstance extends AssetInstanceV5 {} /** @name AssetInstanceV0 */ export interface AssetInstanceV0 extends Enum { @@ -123,6 +126,22 @@ export interface AssetInstanceV4 extends Enum { readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32'; } +/** @name AssetInstanceV5 */ +export interface AssetInstanceV5 extends Enum { + readonly isUndefined: boolean; + readonly isIndex: boolean; + readonly asIndex: Compact; + readonly isArray4: boolean; + readonly asArray4: U8aFixed; + readonly isArray8: boolean; + readonly asArray8: U8aFixed; + readonly isArray16: boolean; + readonly asArray16: U8aFixed; + readonly isArray32: boolean; + readonly asArray32: U8aFixed; + readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32'; +} + /** @name BodyId */ export interface BodyId extends Enum { readonly isUnit: boolean; @@ -250,7 +269,7 @@ export interface DoubleEncodedCall extends Struct { } /** @name Fungibility */ -export interface Fungibility extends FungibilityV4 {} +export interface Fungibility extends FungibilityV5 {} /** @name FungibilityV0 */ export interface FungibilityV0 extends FungibilityV1 {} @@ -291,6 +310,24 @@ export interface FungibilityV4 extends Enum { readonly type: 'Fungible' | 'NonFungible'; } +/** @name FungibilityV5 */ +export interface FungibilityV5 extends Enum { + readonly isFungible: boolean; + readonly asFungible: Compact; + readonly isNonFungible: boolean; + readonly asNonFungible: AssetInstanceV5; + readonly type: 'Fungible' | 'NonFungible'; +} + +/** @name HintV5 */ +export interface HintV5 extends Enum { + readonly isAssetClaimer: boolean; + readonly asAssetClaimer: { + readonly location: MultiLocationV5; + } & Struct; + readonly type: 'AssetClaimer'; +} + /** @name InboundStatus */ export interface InboundStatus extends Enum { readonly isOk: boolean; @@ -782,6 +819,209 @@ export interface InstructionV4 extends Enum { readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'ReportHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion' | 'BurnAsset' | 'ExpectAsset' | 'ExpectOrigin' | 'ExpectError' | 'ExpectTransactStatus' | 'QueryPallet' | 'ExpectPallet' | 'ReportTransactStatus' | 'ClearTransactStatus' | 'UniversalOrigin' | 'ExportMessage' | 'LockAsset' | 'UnlockAsset' | 'NoteUnlockable' | 'RequestUnlock' | 'SetFeesMode' | 'SetTopic' | 'ClearTopic' | 'AliasOrigin' | 'UnpaidExecution'; } +/** @name InstructionV5 */ +export interface InstructionV5 extends Enum { + readonly isWithdrawAsset: boolean; + readonly asWithdrawAsset: MultiAssetsV5; + readonly isReserveAssetDeposited: boolean; + readonly asReserveAssetDeposited: MultiAssetsV5; + readonly isReceiveTeleportedAsset: boolean; + readonly asReceiveTeleportedAsset: MultiAssetsV5; + readonly isQueryResponse: boolean; + readonly asQueryResponse: { + readonly queryId: Compact; + readonly response: ResponseV5; + readonly maxWeight: WeightV2; + readonly querier: Option; + } & Struct; + readonly isTransferAsset: boolean; + readonly asTransferAsset: { + readonly assets: MultiAssetsV5; + readonly beneficiary: MultiLocationV5; + } & Struct; + readonly isTransferReserveAsset: boolean; + readonly asTransferReserveAsset: { + readonly assets: MultiAssetsV5; + readonly dest: MultiLocationV5; + readonly xcm: XcmV5; + } & Struct; + readonly isTransact: boolean; + readonly asTransact: { + readonly originKind: OriginKindV4; + readonly requireWeightAtMost: WeightV2; + readonly call: DoubleEncodedCall; + } & Struct; + readonly isHrmpNewChannelOpenRequest: boolean; + readonly asHrmpNewChannelOpenRequest: { + readonly sender: Compact; + readonly maxMessageSize: Compact; + readonly maxCapacity: Compact; + } & Struct; + readonly isHrmpChannelAccepted: boolean; + readonly asHrmpChannelAccepted: { + readonly recipient: Compact; + } & Struct; + readonly isHrmpChannelClosing: boolean; + readonly asHrmpChannelClosing: { + readonly initiator: Compact; + readonly sender: Compact; + readonly recipient: Compact; + } & Struct; + readonly isClearOrigin: boolean; + readonly isDescendOrigin: boolean; + readonly asDescendOrigin: InteriorMultiLocationV5; + readonly isReportError: boolean; + readonly asReportError: QueryResponseInfoV4; + readonly isDepositAsset: boolean; + readonly asDepositAsset: { + readonly assets: MultiAssetFilterV5; + readonly beneficiary: MultiLocationV5; + } & Struct; + readonly isDepositReserveAsset: boolean; + readonly asDepositReserveAsset: { + readonly assets: MultiAssetFilterV5; + readonly dest: MultiLocationV5; + readonly xcm: XcmV5; + } & Struct; + readonly isExchangeAsset: boolean; + readonly asExchangeAsset: { + readonly give: MultiAssetFilterV5; + readonly want: MultiAssetsV5; + readonly maximal: bool; + } & Struct; + readonly isInitiateReserveWithdraw: boolean; + readonly asInitiateReserveWithdraw: { + readonly assets: MultiAssetFilterV5; + readonly reserve: MultiLocationV5; + readonly xcm: XcmV5; + } & Struct; + readonly isInitiateTeleport: boolean; + readonly asInitiateTeleport: { + readonly assets: MultiAssetFilterV5; + readonly dest: MultiLocationV5; + readonly xcm: XcmV5; + } & Struct; + readonly isReportHolding: boolean; + readonly asReportHolding: { + readonly responseInfo: QueryResponseInfoV4; + readonly assets: MultiAssetFilterV5; + } & Struct; + readonly isBuyExecution: boolean; + readonly asBuyExecution: { + readonly fees: MultiAssetV4; + readonly weightLimit: WeightLimitV3; + } & Struct; + readonly isRefundSurplus: boolean; + readonly isSetErrorHandler: boolean; + readonly asSetErrorHandler: XcmV5; + readonly isSetAppendix: boolean; + readonly asSetAppendix: XcmV5; + readonly isClearError: boolean; + readonly isClaimAsset: boolean; + readonly asClaimAsset: { + readonly assets: MultiAssetsV5; + readonly ticket: MultiLocationV5; + } & Struct; + readonly isTrap: boolean; + readonly asTrap: Compact; + readonly isSubscribeVersion: boolean; + readonly asSubscribeVersion: { + readonly queryId: Compact; + readonly maxResponseWeight: WeightV2; + } & Struct; + readonly isUnsubscribeVersion: boolean; + readonly isBurnAsset: boolean; + readonly asBurnAsset: MultiAssetsV5; + readonly isExpectAsset: boolean; + readonly asExpectAsset: MultiAssetsV5; + readonly isExpectOrigin: boolean; + readonly asExpectOrigin: Option; + readonly isExpectError: boolean; + readonly asExpectError: Option>; + readonly isExpectTransactStatus: boolean; + readonly asExpectTransactStatus: MaybeErrorCodeV3; + readonly isQueryPallet: boolean; + readonly asQueryPallet: { + readonly moduleName: Bytes; + readonly responseInfo: QueryResponseInfoV4; + } & Struct; + readonly isExpectPallet: boolean; + readonly asExpectPallet: { + readonly index: Compact; + readonly name: Bytes; + readonly moduleName: Bytes; + readonly crateMajor: Compact; + readonly minCrateMinor: Compact; + } & Struct; + readonly isReportTransactStatus: boolean; + readonly asReportTransactStatus: QueryResponseInfoV4; + readonly isClearTransactStatus: boolean; + readonly isUniversalOrigin: boolean; + readonly asUniversalOrigin: JunctionV5; + readonly isExportMessage: boolean; + readonly asExportMessage: { + readonly network: NetworkIdV5; + readonly destination: InteriorMultiLocationV5; + readonly xcm: XcmV5; + } & Struct; + readonly isLockAsset: boolean; + readonly asLockAsset: { + readonly asset: MultiAssetV5; + readonly unlocker: MultiLocationV5; + } & Struct; + readonly isUnlockAsset: boolean; + readonly asUnlockAsset: { + readonly asset: MultiAssetV5; + readonly target: MultiLocationV5; + } & Struct; + readonly isNoteUnlockable: boolean; + readonly asNoteUnlockable: { + readonly asset: MultiAssetV5; + readonly owner: MultiLocationV5; + } & Struct; + readonly isRequestUnlock: boolean; + readonly asRequestUnlock: { + readonly asset: MultiAssetV5; + readonly locker: MultiLocationV5; + } & Struct; + readonly isSetFeesMode: boolean; + readonly asSetFeesMode: { + readonly jitWithdraw: bool; + } & Struct; + readonly isSetTopic: boolean; + readonly asSetTopic: U8aFixed; + readonly isClearTopic: boolean; + readonly isAliasOrigin: boolean; + readonly asAliasOrigin: MultiLocationV5; + readonly isUnpaidExecution: boolean; + readonly asUnpaidExecution: { + readonly weightLimit: WeightLimitV3; + readonly checkOrigin: Option; + } & Struct; + readonly isPayFees: boolean; + readonly asPayFees: { + readonly asset: MultiAssetV5; + } & Struct; + readonly isInitiateTransfer: boolean; + readonly asInitiateTransfer: { + readonly destination: MultiLocationV5; + readonly remoteFees: Option; + readonly preserveOrigin: bool; + readonly assets: Vec; + readonly remoteXcm: XcmV5; + } & Struct; + readonly isExecuteWithOrigin: boolean; + readonly asExecuteWithOrigin: { + readonly descendant_origin: Option; + readonly xcm: XcmV5; + } & Struct; + readonly isSetHints: boolean; + readonly asSetHints: { + readonly hints: Vec; + } & Struct; + readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'ReportHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion' | 'BurnAsset' | 'ExpectAsset' | 'ExpectOrigin' | 'ExpectError' | 'ExpectTransactStatus' | 'QueryPallet' | 'ExpectPallet' | 'ReportTransactStatus' | 'ClearTransactStatus' | 'UniversalOrigin' | 'ExportMessage' | 'LockAsset' | 'UnlockAsset' | 'NoteUnlockable' | 'RequestUnlock' | 'SetFeesMode' | 'SetTopic' | 'ClearTopic' | 'AliasOrigin' | 'UnpaidExecution' | 'PayFees' | 'InitiateTransfer' | 'ExecuteWithOrigin' | 'SetHints'; +} + /** @name InteriorMultiLocation */ export interface InteriorMultiLocation extends Junctions {} @@ -791,11 +1031,14 @@ export interface InteriorMultiLocationV2 extends JunctionsV2 {} /** @name InteriorMultiLocationV3 */ export interface InteriorMultiLocationV3 extends JunctionsV3 {} +/** @name InteriorMultiLocationV5 */ +export interface InteriorMultiLocationV5 extends JunctionsV5 {} + /** @name Junction */ -export interface Junction extends JunctionV4 {} +export interface Junction extends JunctionV5 {} /** @name Junctions */ -export interface Junctions extends JunctionsV4 {} +export interface Junctions extends JunctionsV5 {} /** @name JunctionsV1 */ export interface JunctionsV1 extends Enum { @@ -885,6 +1128,28 @@ export interface JunctionsV4 extends Enum { readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8'; } +/** @name JunctionsV5 */ +export interface JunctionsV5 extends Enum { + readonly isHere: boolean; + readonly isX1: boolean; + readonly asX1: Vec; + readonly isX2: boolean; + readonly asX2: Vec; + readonly isX3: boolean; + readonly asX3: Vec; + readonly isX4: boolean; + readonly asX4: Vec; + readonly isX5: boolean; + readonly asX5: Vec; + readonly isX6: boolean; + readonly asX6: Vec; + readonly isX7: boolean; + readonly asX7: Vec; + readonly isX8: boolean; + readonly asX8: Vec; + readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8'; +} + /** @name JunctionV0 */ export interface JunctionV0 extends Enum { readonly isParent: boolean; @@ -1066,6 +1331,45 @@ export interface JunctionV4 extends Enum { readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality' | 'GlobalConsensus'; } +/** @name JunctionV5 */ +export interface JunctionV5 extends Enum { + readonly isParachain: boolean; + readonly asParachain: Compact; + readonly isAccountId32: boolean; + readonly asAccountId32: { + readonly network: Option; + readonly id: U8aFixed; + } & Struct; + readonly isAccountIndex64: boolean; + readonly asAccountIndex64: { + readonly network: Option; + readonly index: Compact; + } & Struct; + readonly isAccountKey20: boolean; + readonly asAccountKey20: { + readonly network: Option; + readonly key: U8aFixed; + } & Struct; + readonly isPalletInstance: boolean; + readonly asPalletInstance: u8; + readonly isGeneralIndex: boolean; + readonly asGeneralIndex: Compact; + readonly isGeneralKey: boolean; + readonly asGeneralKey: { + readonly length: u8; + readonly data: U8aFixed; + } & Struct; + readonly isOnlyChild: boolean; + readonly isPlurality: boolean; + readonly asPlurality: { + readonly id: BodyIdV3; + readonly part: BodyPartV3; + } & Struct; + readonly isGlobalConsensus: boolean; + readonly asGlobalConsensus: NetworkIdV5; + readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality' | 'GlobalConsensus'; +} + /** @name MaxPalletNameLen */ export interface MaxPalletNameLen extends u32 {} @@ -1083,10 +1387,10 @@ export interface MaybeErrorCodeV3 extends Enum { } /** @name MultiAsset */ -export interface MultiAsset extends MultiAssetV4 {} +export interface MultiAsset extends MultiAssetV5 {} /** @name MultiAssetFilter */ -export interface MultiAssetFilter extends MultiAssetFilterV4 {} +export interface MultiAssetFilter extends MultiAssetFilterV5 {} /** @name MultiAssetFilterV1 */ export interface MultiAssetFilterV1 extends Enum { @@ -1124,6 +1428,15 @@ export interface MultiAssetFilterV4 extends Enum { readonly type: 'Definite' | 'Wild'; } +/** @name MultiAssetFilterV5 */ +export interface MultiAssetFilterV5 extends Enum { + readonly isDefinite: boolean; + readonly asDefinite: MultiAssetsV5; + readonly isWild: boolean; + readonly asWild: WildMultiAssetV5; + readonly type: 'Definite' | 'Wild'; +} + /** @name MultiAssets */ export interface MultiAssets extends Vec {} @@ -1139,6 +1452,20 @@ export interface MultiAssetsV3 extends Vec {} /** @name MultiAssetsV4 */ export interface MultiAssetsV4 extends Vec {} +/** @name MultiAssetsV5 */ +export interface MultiAssetsV5 extends Vec {} + +/** @name MultiAssetTransferFilterV5 */ +export interface MultiAssetTransferFilterV5 extends Enum { + readonly isTeleport: boolean; + readonly asTeleport: MultiAssetFilterV5; + readonly isReserveDeposit: boolean; + readonly asReserveDeposit: MultiAssetFilterV5; + readonly isReserveWithdraw: boolean; + readonly asReserveWithdraw: MultiAssetFilterV5; + readonly type: 'Teleport' | 'ReserveDeposit' | 'ReserveWithdraw'; +} + /** @name MultiAssetV0 */ export interface MultiAssetV0 extends Enum { readonly isNone: boolean; @@ -1200,8 +1527,14 @@ export interface MultiAssetV4 extends Struct { readonly fun: FungibilityV4; } +/** @name MultiAssetV5 */ +export interface MultiAssetV5 extends Struct { + readonly id: AssetIdV5; + readonly fun: FungibilityV5; +} + /** @name MultiLocation */ -export interface MultiLocation extends MultiLocationV4 {} +export interface MultiLocation extends MultiLocationV5 {} /** @name MultiLocationV0 */ export interface MultiLocationV0 extends Enum { @@ -1249,6 +1582,12 @@ export interface MultiLocationV4 extends Struct { readonly interior: JunctionsV4; } +/** @name MultiLocationV5 */ +export interface MultiLocationV5 extends Struct { + readonly parents: u8; + readonly interior: JunctionsV5; +} + /** @name NetworkId */ export interface NetworkId extends Enum { readonly isAny: boolean; @@ -1296,6 +1635,27 @@ export interface NetworkIdV3 extends Enum { /** @name NetworkIdV4 */ export interface NetworkIdV4 extends NetworkIdV3 {} +/** @name NetworkIdV5 */ +export interface NetworkIdV5 extends Enum { + readonly isByGenesis: boolean; + readonly asByGenesis: U8aFixed; + readonly isByFork: boolean; + readonly asByFork: { + readonly blockNumber: u64; + readonly blockHash: U8aFixed; + } & Struct; + readonly isPolkadot: boolean; + readonly isKusama: boolean; + readonly isEthereum: boolean; + readonly asEthereum: { + readonly chainId: Compact; + } & Struct; + readonly isBitcoinCore: boolean; + readonly isBitcoinCash: boolean; + readonly isPolkadotBulletin: boolean; + readonly type: 'ByGenesis' | 'ByFork' | 'Polkadot' | 'Kusama' | 'Ethereum' | 'BitcoinCore' | 'BitcoinCash' | 'PolkadotBulletin'; +} + /** @name OriginKindV0 */ export interface OriginKindV0 extends Enum { readonly isNative: boolean; @@ -1372,6 +1732,9 @@ export interface PalletInfoV3 extends Struct { /** @name PalletInfoV4 */ export interface PalletInfoV4 extends PalletInfoV3 {} +/** @name PalletInfoV5 */ +export interface PalletInfoV5 extends PalletInfoV3 {} + /** @name QueryId */ export interface QueryId extends u64 {} @@ -1389,6 +1752,13 @@ export interface QueryResponseInfoV4 extends Struct { readonly maxWeight: WeightV2; } +/** @name QueryResponseInfoV5 */ +export interface QueryResponseInfoV5 extends Struct { + readonly destination: MultiLocationV5; + readonly queryId: Compact; + readonly maxWeight: WeightV2; +} + /** @name QueryStatus */ export interface QueryStatus extends Enum { readonly isPending: boolean; @@ -1415,7 +1785,7 @@ export interface QueueConfigData extends Struct { } /** @name Response */ -export interface Response extends ResponseV4 {} +export interface Response extends ResponseV5 {} /** @name ResponseV0 */ export interface ResponseV0 extends Enum { @@ -1484,6 +1854,22 @@ export interface ResponseV4 extends Enum { readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version' | 'PalletsInfo' | 'DispatchResult'; } +/** @name ResponseV5 */ +export interface ResponseV5 extends Enum { + readonly isNull: boolean; + readonly isAssets: boolean; + readonly asAssets: MultiAssetsV5; + readonly isExecutionResult: boolean; + readonly asExecutionResult: Option>; + readonly isVersion: boolean; + readonly asVersion: u32; + readonly isPalletsInfo: boolean; + readonly asPalletsInfo: Vec; + readonly isDispatchResult: boolean; + readonly asDispatchResult: MaybeErrorCodeV3; + readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version' | 'PalletsInfo' | 'DispatchResult'; +} + /** @name UncheckedFungibilityV4 */ export interface UncheckedFungibilityV4 extends Enum { readonly isFungible: boolean; @@ -1493,6 +1879,15 @@ export interface UncheckedFungibilityV4 extends Enum { readonly type: 'Fungible' | 'NonFungible'; } +/** @name UncheckedFungibilityV5 */ +export interface UncheckedFungibilityV5 extends Enum { + readonly isFungible: boolean; + readonly asFungible: Compact; + readonly isNonFungible: boolean; + readonly asNonFungible: AssetInstanceV5; + readonly type: 'Fungible' | 'NonFungible'; +} + /** @name VersionedMultiAsset */ export interface VersionedMultiAsset extends Enum { readonly isV0: boolean; @@ -1505,7 +1900,9 @@ export interface VersionedMultiAsset extends Enum { readonly asV3: MultiAssetV3; readonly isV4: boolean; readonly asV4: MultiAssetV4; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; + readonly isV5: boolean; + readonly asV5: MultiAssetV5; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } /** @name VersionedMultiAssets */ @@ -1520,7 +1917,9 @@ export interface VersionedMultiAssets extends Enum { readonly asV3: MultiAssetsV3; readonly isV4: boolean; readonly asV4: MultiAssetsV4; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; + readonly isV5: boolean; + readonly asV5: MultiAssetsV5; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } /** @name VersionedMultiLocation */ @@ -1535,7 +1934,9 @@ export interface VersionedMultiLocation extends Enum { readonly asV3: MultiLocationV3; readonly isV4: boolean; readonly asV4: MultiLocationV4; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; + readonly isV5: boolean; + readonly asV5: MultiLocationV5; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } /** @name VersionedResponse */ @@ -1545,6 +1946,7 @@ export interface VersionedResponse extends Struct { readonly V2: ResponseV2; readonly V3: ResponseV3; readonly V4: ResponseV4; + readonly V5: ResponseV5; } /** @name VersionedXcm */ @@ -1559,7 +1961,9 @@ export interface VersionedXcm extends Enum { readonly asV3: XcmV3; readonly isV4: boolean; readonly asV4: XcmV4; - readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4'; + readonly isV5: boolean; + readonly asV5: XcmV5; + readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5'; } /** @name VersionMigrationStage */ @@ -1595,7 +1999,7 @@ export interface WeightLimitV3 extends Enum { } /** @name WildFungibility */ -export interface WildFungibility extends WildFungibilityV4 {} +export interface WildFungibility extends WildFungibilityV5 {} /** @name WildFungibilityV0 */ export interface WildFungibilityV0 extends WildFungibilityV1 {} @@ -1620,8 +2024,11 @@ export interface WildFungibilityV3 extends WildFungibilityV2 {} /** @name WildFungibilityV4 */ export interface WildFungibilityV4 extends WildFungibilityV2 {} +/** @name WildFungibilityV5 */ +export interface WildFungibilityV5 extends WildFungibilityV2 {} + /** @name WildMultiAsset */ -export interface WildMultiAsset extends WildMultiAssetV4 {} +export interface WildMultiAsset extends WildMultiAssetV5 {} /** @name WildMultiAssetV1 */ export interface WildMultiAssetV1 extends Enum { @@ -1683,8 +2090,27 @@ export interface WildMultiAssetV4 extends Enum { readonly type: 'All' | 'AllOf' | 'AllCounted' | 'AllOfCounted'; } +/** @name WildMultiAssetV5 */ +export interface WildMultiAssetV5 extends Enum { + readonly isAll: boolean; + readonly isAllOf: boolean; + readonly asAllOf: { + readonly id: AssetIdV5; + readonly fun: WildFungibilityV5; + } & Struct; + readonly isAllCounted: boolean; + readonly asAllCounted: Compact; + readonly isAllOfCounted: boolean; + readonly asAllOfCounted: { + readonly id: AssetIdV5; + readonly fun: WildFungibilityV5; + readonly count: Compact; + } & Struct; + readonly type: 'All' | 'AllOf' | 'AllCounted' | 'AllOfCounted'; +} + /** @name Xcm */ -export interface Xcm extends XcmV4 {} +export interface Xcm extends XcmV5 {} /** @name XcmAssetId */ export interface XcmAssetId extends Enum { @@ -1696,7 +2122,7 @@ export interface XcmAssetId extends Enum { } /** @name XcmError */ -export interface XcmError extends XcmErrorV4 {} +export interface XcmError extends XcmErrorV5 {} /** @name XcmErrorV0 */ export interface XcmErrorV0 extends Enum { @@ -1851,6 +2277,9 @@ export interface XcmErrorV3 extends Enum { /** @name XcmErrorV4 */ export interface XcmErrorV4 extends XcmErrorV3 {} +/** @name XcmErrorV5 */ +export interface XcmErrorV5 extends XcmErrorV3 {} + /** @name XcmOrderV0 */ export interface XcmOrderV0 extends Enum { readonly isNull: boolean; @@ -2108,6 +2537,9 @@ export interface XcmV3 extends Vec {} /** @name XcmV4 */ export interface XcmV4 extends Vec {} +/** @name XcmV5 */ +export interface XcmV5 extends Vec {} + /** @name XcmVersion */ export interface XcmVersion extends u32 {} diff --git a/packages/types/src/interfaces/xcm/v5.ts b/packages/types/src/interfaces/xcm/v5.ts new file mode 100644 index 0000000000..598049327a --- /dev/null +++ b/packages/types/src/interfaces/xcm/v5.ts @@ -0,0 +1,314 @@ +// Copyright 2017-2025 @polkadot/types authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// order important in structs... :) +/* eslint-disable sort-keys */ + +import type { DefinitionsTypes } from '../../types/index.js'; + +export const v5: DefinitionsTypes = { + AssetIdV5: 'MultiLocationV5', + AssetInstanceV5: { + _enum: { + Undefined: 'Null', + Index: 'Compact', + Array4: '[u8;4]', + Array8: '[u8;8]', + Array16: '[u8;16]', + Array32: '[u8;32]' + } + }, + // Maps to xcmV5::Asset but we keep the prefix 'Multi' + // to keep consistency with the rest of the code base. + MultiAssetV5: { + id: 'AssetIdV5', + fun: 'FungibilityV5' + }, + MultiAssetsV5: 'Vec', + WildMultiAssetV5: { + _enum: { + All: 'Null', + AllOf: { + id: 'AssetIdV5', + fun: 'WildFungibilityV5' + }, + AllCounted: 'Compact', + AllOfCounted: { + id: 'AssetIdV5', + fun: 'WildFungibilityV5', + count: 'Compact' + } + } + }, + MultiAssetFilterV5: { + _enum: { + Definite: 'MultiAssetsV5', + Wild: 'WildMultiAssetV5' + } + }, + MultiAssetTransferFilterV5: { + _enum: { + Teleport: 'MultiAssetFilterV5', + ReserveDeposit: 'MultiAssetFilterV5', + ReserveWithdraw: 'MultiAssetFilterV5' + } + }, + FungibilityV5: { + _enum: { + Fungible: 'Compact', + NonFungible: 'AssetInstanceV5' + } + }, + UncheckedFungibilityV5: { + _enum: { + Fungible: 'Compact', + NonFungible: 'AssetInstanceV5' + } + }, + WildFungibilityV5: 'WildFungibilityV2', + JunctionV5: { + _enum: { + Parachain: 'Compact', + AccountId32: { + network: 'Option', + id: '[u8;32]' + }, + AccountIndex64: { + network: 'Option', + index: 'Compact' + }, + AccountKey20: { + network: 'Option', + key: '[u8;20]' + }, + PalletInstance: 'u8', + GeneralIndex: 'Compact', + GeneralKey: { + length: 'u8', + data: '[u8;32]' + }, + OnlyChild: 'Null', + Plurality: { + id: 'BodyIdV3', + part: 'BodyPartV3' + }, + GlobalConsensus: 'NetworkIdV5' + } + }, + NetworkIdV5: { + _enum: { + ByGenesis: '[u8;32]', + ByFork: { + blockNumber: 'u64', + blockHash: '[u8;32]' + }, + Polkadot: 'Null', + Kusama: 'Null', + Ethereum: { + chainId: 'Compact' + }, + BitcoinCore: 'Null', + BitcoinCash: 'Null', + PolkadotBulletin: 'Null' + } + }, + JunctionsV5: { + _enum: { + Here: 'Null', + X1: '[JunctionV5;1]', + X2: '[JunctionV5;2]', + X3: '[JunctionV5;3]', + X4: '[JunctionV5;4]', + X5: '[JunctionV5;5]', + X6: '[JunctionV5;6]', + X7: '[JunctionV5;7]', + X8: '[JunctionV5;8]' + } + }, + MultiLocationV5: { + parents: 'u8', + interior: 'JunctionsV5' + }, + InteriorMultiLocationV5: 'JunctionsV5', + XcmV5: 'Vec', + PalletInfoV5: 'PalletInfoV3', + ResponseV5: { + _enum: { + Null: 'Null', + Assets: 'MultiAssetsV5', + ExecutionResult: 'Option<(u32, XcmErrorV3)>', + Version: 'u32', + PalletsInfo: 'Vec', + DispatchResult: 'MaybeErrorCodeV3' + } + }, + QueryResponseInfoV5: { + destination: 'MultiLocationV5', + queryId: 'Compact', + maxWeight: 'WeightV2' + }, + InstructionV5: { + _enum: { + WithdrawAsset: 'MultiAssetsV5', + ReserveAssetDeposited: 'MultiAssetsV5', + ReceiveTeleportedAsset: 'MultiAssetsV5', + QueryResponse: { + queryId: 'Compact', + response: 'ResponseV5', + maxWeight: 'WeightV2', + querier: 'Option' + }, + TransferAsset: { + assets: 'MultiAssetsV5', + beneficiary: 'MultiLocationV5' + }, + TransferReserveAsset: { + assets: 'MultiAssetsV5', + dest: 'MultiLocationV5', + xcm: 'XcmV5' + }, + Transact: { + originKind: 'OriginKindV4', + requireWeightAtMost: 'WeightV2', + call: 'DoubleEncodedCall' + }, + HrmpNewChannelOpenRequest: { + sender: 'Compact', + maxMessageSize: 'Compact', + maxCapacity: 'Compact' + }, + HrmpChannelAccepted: { + recipient: 'Compact' + }, + HrmpChannelClosing: { + initiator: 'Compact', + sender: 'Compact', + recipient: 'Compact' + }, + ClearOrigin: 'Null', + DescendOrigin: 'InteriorMultiLocationV5', + ReportError: 'QueryResponseInfoV4', + DepositAsset: { + assets: 'MultiAssetFilterV5', + beneficiary: 'MultiLocationV5' + }, + DepositReserveAsset: { + assets: 'MultiAssetFilterV5', + dest: 'MultiLocationV5', + xcm: 'XcmV5' + }, + ExchangeAsset: { + give: 'MultiAssetFilterV5', + want: 'MultiAssetsV5', + maximal: 'bool' + }, + InitiateReserveWithdraw: { + assets: 'MultiAssetFilterV5', + reserve: 'MultiLocationV5', + xcm: 'XcmV5' + }, + InitiateTeleport: { + assets: 'MultiAssetFilterV5', + dest: 'MultiLocationV5', + xcm: 'XcmV5' + }, + ReportHolding: { + responseInfo: 'QueryResponseInfoV4', + assets: 'MultiAssetFilterV5' + }, + BuyExecution: { + fees: 'MultiAssetV4', + weightLimit: 'WeightLimitV3' + }, + RefundSurplus: 'Null', + SetErrorHandler: 'XcmV5', + SetAppendix: 'XcmV5', + ClearError: 'Null', + ClaimAsset: { + assets: 'MultiAssetsV5', + ticket: 'MultiLocationV5' + }, + Trap: 'Compact', + SubscribeVersion: { + queryId: 'Compact', + maxResponseWeight: 'WeightV2' + }, + UnsubscribeVersion: 'Null', + BurnAsset: 'MultiAssetsV5', + ExpectAsset: 'MultiAssetsV5', + ExpectOrigin: 'Option', + ExpectError: 'Option<(u32, XcmErrorV3)>', + ExpectTransactStatus: 'MaybeErrorCodeV3', + QueryPallet: { + moduleName: 'Vec', + responseInfo: 'QueryResponseInfoV4' + }, + ExpectPallet: { + index: 'Compact', + name: 'Vec', + moduleName: 'Vec', + crateMajor: 'Compact', + minCrateMinor: 'Compact' + }, + ReportTransactStatus: 'QueryResponseInfoV4', + ClearTransactStatus: 'Null', + UniversalOrigin: 'JunctionV5', + ExportMessage: { + network: 'NetworkIdV5', + destination: 'InteriorMultiLocationV5', + xcm: 'XcmV5' + }, + LockAsset: { + asset: 'MultiAssetV5', + unlocker: 'MultiLocationV5' + }, + UnlockAsset: { + asset: 'MultiAssetV5', + target: 'MultiLocationV5' + }, + NoteUnlockable: { + asset: 'MultiAssetV5', + owner: 'MultiLocationV5' + }, + RequestUnlock: { + asset: 'MultiAssetV5', + locker: 'MultiLocationV5' + }, + SetFeesMode: { + jitWithdraw: 'bool' + }, + SetTopic: '[u8;32]', + ClearTopic: 'Null', + AliasOrigin: 'MultiLocationV5', + UnpaidExecution: { + weightLimit: 'WeightLimitV3', + checkOrigin: 'Option' + }, + PayFees: { + asset: 'MultiAssetV5' + }, + InitiateTransfer: { + destination: 'MultiLocationV5', + remoteFees: 'Option', + preserveOrigin: 'bool', + assets: 'Vec', + remoteXcm: 'XcmV5' + }, + ExecuteWithOrigin: { + descendant_origin: 'Option', + xcm: 'XcmV5' + }, + SetHints: { + hints: 'Vec' + } + } + }, + HintV5: { + _enum: { + AssetClaimer: { + location: 'MultiLocationV5' + } + } + }, + XcmErrorV5: 'XcmErrorV3' +};