// Auto-generated via `yarn polkadot-types-from-defs`, do not edit
/* eslint-disable */

import type { Bytes, Compact, Enum, Option, Struct, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@pezkuwi/types-codec';
import type { ITuple } from '@pezkuwi/types-codec/types';
import type { AccountId, BlockNumber, Weight, WeightV2 } from '@pezkuwi/types/interfaces/runtime';

/** @name AssetIdV2 */
export interface AssetIdV2 extends Enum {
  readonly isConcrete: boolean;
  readonly asConcrete: MultiLocationV2;
  readonly isAbstract: boolean;
  readonly asAbstract: Bytes;
  readonly type: 'Concrete' | 'Abstract';
}

/** @name AssetIdV3 */
export interface AssetIdV3 extends Enum {
  readonly isConcrete: boolean;
  readonly asConcrete: MultiLocationV3;
  readonly isAbstract: boolean;
  readonly asAbstract: Bytes;
  readonly type: 'Concrete' | 'Abstract';
}

/** @name AssetIdV4 */
export interface AssetIdV4 extends MultiLocationV4 {}

/** @name AssetIdV5 */
export interface AssetIdV5 extends MultiLocationV5 {}

/** @name AssetInstance */
export interface AssetInstance extends AssetInstanceV5 {}

/** @name AssetInstanceV0 */
export interface AssetInstanceV0 extends Enum {
  readonly isUndefined: boolean;
  readonly isIndex8: boolean;
  readonly asIndex8: u8;
  readonly isIndex16: boolean;
  readonly asIndex16: Compact<u16>;
  readonly isIndex32: boolean;
  readonly asIndex32: Compact<u32>;
  readonly isIndex64: boolean;
  readonly asIndex64: Compact<u64>;
  readonly isIndex128: boolean;
  readonly asIndex128: Compact<u128>;
  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 isBlob: boolean;
  readonly asBlob: Bytes;
  readonly type: 'Undefined' | 'Index8' | 'Index16' | 'Index32' | 'Index64' | 'Index128' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
}

/** @name AssetInstanceV1 */
export interface AssetInstanceV1 extends Enum {
  readonly isUndefined: boolean;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u128>;
  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 isBlob: boolean;
  readonly asBlob: Bytes;
  readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
}

/** @name AssetInstanceV2 */
export interface AssetInstanceV2 extends Enum {
  readonly isUndefined: boolean;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u128>;
  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 isBlob: boolean;
  readonly asBlob: Bytes;
  readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';
}

/** @name AssetInstanceV3 */
export interface AssetInstanceV3 extends Enum {
  readonly isUndefined: boolean;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u128>;
  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 AssetInstanceV4 */
export interface AssetInstanceV4 extends Enum {
  readonly isUndefined: boolean;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u128>;
  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 AssetInstanceV5 */
export interface AssetInstanceV5 extends Enum {
  readonly isUndefined: boolean;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u128>;
  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;
  readonly isNamed: boolean;
  readonly asNamed: Bytes;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u32>;
  readonly isExecutive: boolean;
  readonly isTechnical: boolean;
  readonly isLegislative: boolean;
  readonly isJudicial: boolean;
  readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';
}

/** @name BodyIdV2 */
export interface BodyIdV2 extends Enum {
  readonly isUnit: boolean;
  readonly isNamed: boolean;
  readonly asNamed: Bytes;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u32>;
  readonly isExecutive: boolean;
  readonly isTechnical: boolean;
  readonly isLegislative: boolean;
  readonly isJudicial: boolean;
  readonly isDefense: boolean;
  readonly isAdministration: boolean;
  readonly isTreasury: boolean;
  readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial' | 'Defense' | 'Administration' | 'Treasury';
}

/** @name BodyIdV3 */
export interface BodyIdV3 extends Enum {
  readonly isUnit: boolean;
  readonly isMoniker: boolean;
  readonly asMoniker: U8aFixed;
  readonly isIndex: boolean;
  readonly asIndex: Compact<u32>;
  readonly isExecutive: boolean;
  readonly isTechnical: boolean;
  readonly isLegislative: boolean;
  readonly isJudicial: boolean;
  readonly isDefense: boolean;
  readonly isAdministration: boolean;
  readonly isTreasury: boolean;
  readonly type: 'Unit' | 'Moniker' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial' | 'Defense' | 'Administration' | 'Treasury';
}

/** @name BodyPart */
export interface BodyPart extends Enum {
  readonly isVoice: boolean;
  readonly isMembers: boolean;
  readonly asMembers: Compact<u32>;
  readonly isFraction: boolean;
  readonly asFraction: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly isAtLeastProportion: boolean;
  readonly asAtLeastProportion: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly isMoreThanProportion: boolean;
  readonly asMoreThanProportion: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
}

/** @name BodyPartV2 */
export interface BodyPartV2 extends Enum {
  readonly isVoice: boolean;
  readonly isMembers: boolean;
  readonly asMembers: {
    readonly count: Compact<u32>;
  } & Struct;
  readonly isFraction: boolean;
  readonly asFraction: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly isAtLeastProportion: boolean;
  readonly asAtLeastProportion: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly isMoreThanProportion: boolean;
  readonly asMoreThanProportion: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
}

/** @name BodyPartV3 */
export interface BodyPartV3 extends Enum {
  readonly isVoice: boolean;
  readonly isMembers: boolean;
  readonly asMembers: {
    readonly count: Compact<u32>;
  } & Struct;
  readonly isFraction: boolean;
  readonly asFraction: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly isAtLeastProportion: boolean;
  readonly asAtLeastProportion: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly isMoreThanProportion: boolean;
  readonly asMoreThanProportion: {
    readonly nom: Compact<u32>;
    readonly denom: Compact<u32>;
  } & Struct;
  readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';
}

/** @name DoubleEncodedCall */
export interface DoubleEncodedCall extends Struct {
  readonly encoded: Bytes;
}

/** @name Fungibility */
export interface Fungibility extends FungibilityV5 {}

/** @name FungibilityV0 */
export interface FungibilityV0 extends FungibilityV1 {}

/** @name FungibilityV1 */
export interface FungibilityV1 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  readonly isNonFungible: boolean;
  readonly asNonFungible: AssetInstanceV1;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name FungibilityV2 */
export interface FungibilityV2 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  readonly isNonFungible: boolean;
  readonly asNonFungible: AssetInstanceV2;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name FungibilityV3 */
export interface FungibilityV3 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  readonly isNonFungible: boolean;
  readonly asNonFungible: AssetInstanceV3;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name FungibilityV4 */
export interface FungibilityV4 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  readonly isNonFungible: boolean;
  readonly asNonFungible: AssetInstanceV4;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name FungibilityV5 */
export interface FungibilityV5 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  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;
  readonly isSuspended: boolean;
  readonly type: 'Ok' | 'Suspended';
}

/** @name InstructionV2 */
export interface InstructionV2 extends Enum {
  readonly isWithdrawAsset: boolean;
  readonly asWithdrawAsset: MultiAssetsV2;
  readonly isReserveAssetDeposited: boolean;
  readonly asReserveAssetDeposited: MultiAssetsV2;
  readonly isReceiveTeleportedAsset: boolean;
  readonly asReceiveTeleportedAsset: MultiAssetsV2;
  readonly isQueryResponse: boolean;
  readonly asQueryResponse: {
    readonly queryId: Compact<u64>;
    readonly response: ResponseV2;
    readonly maxWeight: Compact<u64>;
  } & Struct;
  readonly isTransferAsset: boolean;
  readonly asTransferAsset: {
    readonly assets: MultiAssetsV2;
    readonly beneficiary: MultiLocationV2;
  } & Struct;
  readonly isTransferReserveAsset: boolean;
  readonly asTransferReserveAsset: {
    readonly assets: MultiAssetsV2;
    readonly dest: MultiLocationV2;
    readonly xcm: XcmV2;
  } & Struct;
  readonly isTransact: boolean;
  readonly asTransact: {
    readonly originType: XcmOriginKind;
    readonly requireWeightAtMost: Compact<u64>;
    readonly call: DoubleEncodedCall;
  } & Struct;
  readonly isHrmpNewChannelOpenRequest: boolean;
  readonly asHrmpNewChannelOpenRequest: {
    readonly sender: Compact<u32>;
    readonly maxMessageSize: Compact<u32>;
    readonly maxCapacity: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelAccepted: boolean;
  readonly asHrmpChannelAccepted: {
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelClosing: boolean;
  readonly asHrmpChannelClosing: {
    readonly initiator: Compact<u32>;
    readonly sender: Compact<u32>;
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isClearOrigin: boolean;
  readonly isDescendOrigin: boolean;
  readonly asDescendOrigin: InteriorMultiLocationV2;
  readonly isReportError: boolean;
  readonly asReportError: {
    readonly queryId: Compact<u64>;
    readonly dest: MultiLocationV2;
    readonly maxResponseWeight: Compact<u64>;
  } & Struct;
  readonly isDepositAsset: boolean;
  readonly asDepositAsset: {
    readonly assets: MultiAssetFilterV2;
    readonly maxAssets: Compact<u32>;
    readonly beneficiary: MultiLocationV2;
  } & Struct;
  readonly isDepositReserveAsset: boolean;
  readonly asDepositReserveAsset: {
    readonly assets: MultiAssetFilterV2;
    readonly maxAssets: Compact<u32>;
    readonly dest: MultiLocationV2;
    readonly xcm: XcmV2;
  } & Struct;
  readonly isExchangeAsset: boolean;
  readonly asExchangeAsset: {
    readonly give: MultiAssetFilterV2;
    readonly receive: MultiAssetsV2;
  } & Struct;
  readonly isInitiateReserveWithdraw: boolean;
  readonly asInitiateReserveWithdraw: {
    readonly assets: MultiAssetFilterV2;
    readonly reserve: MultiLocationV2;
    readonly xcm: XcmV2;
  } & Struct;
  readonly isInitiateTeleport: boolean;
  readonly asInitiateTeleport: {
    readonly assets: MultiAssetFilterV2;
    readonly dest: MultiLocationV2;
    readonly xcm: XcmV2;
  } & Struct;
  readonly isQueryHolding: boolean;
  readonly asQueryHolding: {
    readonly queryId: Compact<u64>;
    readonly dest: MultiLocationV2;
    readonly assets: MultiAssetFilterV2;
    readonly maxResponseWeight: Compact<u64>;
  } & Struct;
  readonly isBuyExecution: boolean;
  readonly asBuyExecution: {
    readonly fees: MultiAssetV2;
    readonly weightLimit: WeightLimitV2;
  } & Struct;
  readonly isRefundSurplus: boolean;
  readonly isSetErrorHandler: boolean;
  readonly asSetErrorHandler: XcmV2;
  readonly isSetAppendix: boolean;
  readonly asSetAppendix: XcmV2;
  readonly isClearError: boolean;
  readonly isClaimAsset: boolean;
  readonly asClaimAsset: {
    readonly assets: MultiAssetsV2;
    readonly ticket: MultiLocationV2;
  } & Struct;
  readonly isTrap: boolean;
  readonly asTrap: Compact<u64>;
  readonly isSubscribeVersion: boolean;
  readonly asSubscribeVersion: {
    readonly queryId: Compact<u64>;
    readonly maxResponseWeight: Compact<u64>;
  } & Struct;
  readonly isUnsubscribeVersion: boolean;
  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';
}

/** @name InstructionV3 */
export interface InstructionV3 extends Enum {
  readonly isWithdrawAsset: boolean;
  readonly asWithdrawAsset: MultiAssetsV3;
  readonly isReserveAssetDeposited: boolean;
  readonly asReserveAssetDeposited: MultiAssetsV3;
  readonly isReceiveTeleportedAsset: boolean;
  readonly asReceiveTeleportedAsset: MultiAssetsV3;
  readonly isQueryResponse: boolean;
  readonly asQueryResponse: {
    readonly queryId: Compact<u64>;
    readonly response: ResponseV3;
    readonly maxWeight: WeightV2;
    readonly querier: Option<MultiLocationV3>;
  } & Struct;
  readonly isTransferAsset: boolean;
  readonly asTransferAsset: {
    readonly assets: MultiAssetsV3;
    readonly beneficiary: MultiLocationV3;
  } & Struct;
  readonly isTransferReserveAsset: boolean;
  readonly asTransferReserveAsset: {
    readonly assets: MultiAssetsV3;
    readonly dest: MultiLocationV3;
    readonly xcm: XcmV3;
  } & Struct;
  readonly isTransact: boolean;
  readonly asTransact: {
    readonly originKind: XcmOriginKind;
    readonly requireWeightAtMost: WeightV2;
    readonly call: DoubleEncodedCall;
  } & Struct;
  readonly isHrmpNewChannelOpenRequest: boolean;
  readonly asHrmpNewChannelOpenRequest: {
    readonly sender: Compact<u32>;
    readonly maxMessageSize: Compact<u32>;
    readonly maxCapacity: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelAccepted: boolean;
  readonly asHrmpChannelAccepted: {
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelClosing: boolean;
  readonly asHrmpChannelClosing: {
    readonly initiator: Compact<u32>;
    readonly sender: Compact<u32>;
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isClearOrigin: boolean;
  readonly isDescendOrigin: boolean;
  readonly asDescendOrigin: JunctionsV3;
  readonly isReportError: boolean;
  readonly asReportError: QueryResponseInfoV3;
  readonly isDepositAsset: boolean;
  readonly asDepositAsset: {
    readonly assets: MultiAssetFilterV3;
    readonly beneficiary: MultiLocationV3;
  } & Struct;
  readonly isDepositReserveAsset: boolean;
  readonly asDepositReserveAsset: {
    readonly assets: MultiAssetFilterV3;
    readonly dest: MultiLocationV3;
    readonly xcm: XcmV3;
  } & Struct;
  readonly isExchangeAsset: boolean;
  readonly asExchangeAsset: {
    readonly give: MultiAssetFilterV3;
    readonly want: MultiAssetsV3;
    readonly maximal: bool;
  } & Struct;
  readonly isInitiateReserveWithdraw: boolean;
  readonly asInitiateReserveWithdraw: {
    readonly assets: MultiAssetFilterV3;
    readonly reserve: MultiLocationV3;
    readonly xcm: XcmV3;
  } & Struct;
  readonly isInitiateTeleport: boolean;
  readonly asInitiateTeleport: {
    readonly assets: MultiAssetFilterV3;
    readonly dest: MultiLocationV3;
    readonly xcm: XcmV3;
  } & Struct;
  readonly isReportHolding: boolean;
  readonly asReportHolding: {
    readonly responseInfo: QueryResponseInfoV3;
    readonly assets: MultiAssetFilterV3;
  } & Struct;
  readonly isBuyExecution: boolean;
  readonly asBuyExecution: {
    readonly fees: MultiAssetV3;
    readonly weightLimit: WeightLimitV3;
  } & Struct;
  readonly isRefundSurplus: boolean;
  readonly isSetErrorHandler: boolean;
  readonly asSetErrorHandler: XcmV3;
  readonly isSetAppendix: boolean;
  readonly asSetAppendix: XcmV3;
  readonly isClearError: boolean;
  readonly isClaimAsset: boolean;
  readonly asClaimAsset: {
    readonly assets: MultiAssetsV3;
    readonly ticket: MultiLocationV3;
  } & Struct;
  readonly isTrap: boolean;
  readonly asTrap: Compact<u64>;
  readonly isSubscribeVersion: boolean;
  readonly asSubscribeVersion: {
    readonly queryId: Compact<u64>;
    readonly maxResponseWeight: WeightV2;
  } & Struct;
  readonly isUnsubscribeVersion: boolean;
  readonly isBurnAsset: boolean;
  readonly asBurnAsset: MultiAssetsV3;
  readonly isExpectAsset: boolean;
  readonly asExpectAsset: MultiAssetsV3;
  readonly isExpectOrigin: boolean;
  readonly asExpectOrigin: Option<MultiLocationV3>;
  readonly isExpectError: boolean;
  readonly asExpectError: Option<ITuple<[u32, XcmErrorV3]>>;
  readonly isExpectTransactStatus: boolean;
  readonly asExpectTransactStatus: MaybeErrorCodeV3;
  readonly isQueryPezpallet: boolean;
  readonly asQueryPezpallet: {
    readonly moduleName: Bytes;
    readonly responseInfo: QueryResponseInfoV3;
  } & Struct;
  readonly isExpectPezpallet: boolean;
  readonly asExpectPezpallet: {
    readonly index: Compact<u32>;
    readonly name: Bytes;
    readonly moduleName: Bytes;
    readonly crateMajor: Compact<u32>;
    readonly minCrateMinor: Compact<u32>;
  } & Struct;
  readonly isReportTransactStatus: boolean;
  readonly asReportTransactStatus: QueryResponseInfoV3;
  readonly isClearTransactStatus: boolean;
  readonly isUniversalOrigin: boolean;
  readonly asUniversalOrigin: JunctionV3;
  readonly isExportMessage: boolean;
  readonly asExportMessage: {
    readonly network: NetworkIdV3;
    readonly destination: JunctionsV3;
    readonly xcm: XcmV3;
  } & Struct;
  readonly isLockAsset: boolean;
  readonly asLockAsset: {
    readonly asset: MultiAssetV3;
    readonly unlocker: MultiLocationV3;
  } & Struct;
  readonly isUnlockAsset: boolean;
  readonly asUnlockAsset: {
    readonly asset: MultiAssetV3;
    readonly target: MultiLocationV3;
  } & Struct;
  readonly isNoteUnlockable: boolean;
  readonly asNoteUnlockable: {
    readonly asset: MultiAssetV3;
    readonly owner: MultiLocationV3;
  } & Struct;
  readonly isRequestUnlock: boolean;
  readonly asRequestUnlock: {
    readonly asset: MultiAssetV3;
    readonly locker: MultiLocationV3;
  } & Struct;
  readonly isSetFeesMode: boolean;
  readonly asSetFeesMode: {
    readonly jitWithdraw: bool;
  } & Struct;
  readonly isSetTopic: boolean;
  readonly asSetTopic: U8aFixed;
  readonly isClearTopic: boolean;
  readonly isAliasOrigin: boolean;
  readonly asAliasOrigin: MultiLocationV3;
  readonly isUnpaidExecution: boolean;
  readonly asUnpaidExecution: {
    readonly weightLimit: WeightLimitV3;
    readonly checkOrigin: Option<MultiLocationV3>;
  } & 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' | 'QueryPezpallet' | 'ExpectPezpallet' | 'ReportTransactStatus' | 'ClearTransactStatus' | 'UniversalOrigin' | 'ExportMessage' | 'LockAsset' | 'UnlockAsset' | 'NoteUnlockable' | 'RequestUnlock' | 'SetFeesMode' | 'SetTopic' | 'ClearTopic' | 'AliasOrigin' | 'UnpaidExecution';
}

/** @name InstructionV4 */
export interface InstructionV4 extends Enum {
  readonly isWithdrawAsset: boolean;
  readonly asWithdrawAsset: MultiAssetsV4;
  readonly isReserveAssetDeposited: boolean;
  readonly asReserveAssetDeposited: MultiAssetsV4;
  readonly isReceiveTeleportedAsset: boolean;
  readonly asReceiveTeleportedAsset: MultiAssetsV4;
  readonly isQueryResponse: boolean;
  readonly asQueryResponse: {
    readonly queryId: Compact<u64>;
    readonly response: ResponseV4;
    readonly maxWeight: WeightV2;
    readonly querier: Option<MultiLocationV4>;
  } & Struct;
  readonly isTransferAsset: boolean;
  readonly asTransferAsset: {
    readonly assets: MultiAssetsV4;
    readonly beneficiary: MultiLocationV4;
  } & Struct;
  readonly isTransferReserveAsset: boolean;
  readonly asTransferReserveAsset: {
    readonly assets: MultiAssetsV4;
    readonly dest: MultiLocationV4;
    readonly xcm: XcmV4;
  } & Struct;
  readonly isTransact: boolean;
  readonly asTransact: {
    readonly originKind: OriginKindV4;
    readonly requireWeightAtMost: WeightV2;
    readonly call: DoubleEncodedCall;
  } & Struct;
  readonly isHrmpNewChannelOpenRequest: boolean;
  readonly asHrmpNewChannelOpenRequest: {
    readonly sender: Compact<u32>;
    readonly maxMessageSize: Compact<u32>;
    readonly maxCapacity: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelAccepted: boolean;
  readonly asHrmpChannelAccepted: {
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelClosing: boolean;
  readonly asHrmpChannelClosing: {
    readonly initiator: Compact<u32>;
    readonly sender: Compact<u32>;
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isClearOrigin: boolean;
  readonly isDescendOrigin: boolean;
  readonly asDescendOrigin: JunctionsV4;
  readonly isReportError: boolean;
  readonly asReportError: QueryResponseInfoV4;
  readonly isDepositAsset: boolean;
  readonly asDepositAsset: {
    readonly assets: MultiAssetFilterV4;
    readonly beneficiary: MultiLocationV4;
  } & Struct;
  readonly isDepositReserveAsset: boolean;
  readonly asDepositReserveAsset: {
    readonly assets: MultiAssetFilterV4;
    readonly dest: MultiLocationV4;
    readonly xcm: XcmV4;
  } & Struct;
  readonly isExchangeAsset: boolean;
  readonly asExchangeAsset: {
    readonly give: MultiAssetFilterV4;
    readonly want: MultiAssetsV4;
    readonly maximal: bool;
  } & Struct;
  readonly isInitiateReserveWithdraw: boolean;
  readonly asInitiateReserveWithdraw: {
    readonly assets: MultiAssetFilterV4;
    readonly reserve: MultiLocationV4;
    readonly xcm: XcmV4;
  } & Struct;
  readonly isInitiateTeleport: boolean;
  readonly asInitiateTeleport: {
    readonly assets: MultiAssetFilterV4;
    readonly dest: MultiLocationV4;
    readonly xcm: XcmV4;
  } & Struct;
  readonly isReportHolding: boolean;
  readonly asReportHolding: {
    readonly responseInfo: QueryResponseInfoV4;
    readonly assets: MultiAssetFilterV4;
  } & Struct;
  readonly isBuyExecution: boolean;
  readonly asBuyExecution: {
    readonly fees: MultiAssetV4;
    readonly weightLimit: WeightLimitV3;
  } & Struct;
  readonly isRefundSurplus: boolean;
  readonly isSetErrorHandler: boolean;
  readonly asSetErrorHandler: XcmV4;
  readonly isSetAppendix: boolean;
  readonly asSetAppendix: XcmV4;
  readonly isClearError: boolean;
  readonly isClaimAsset: boolean;
  readonly asClaimAsset: {
    readonly assets: MultiAssetsV4;
    readonly ticket: MultiLocationV4;
  } & Struct;
  readonly isTrap: boolean;
  readonly asTrap: Compact<u64>;
  readonly isSubscribeVersion: boolean;
  readonly asSubscribeVersion: {
    readonly queryId: Compact<u64>;
    readonly maxResponseWeight: WeightV2;
  } & Struct;
  readonly isUnsubscribeVersion: boolean;
  readonly isBurnAsset: boolean;
  readonly asBurnAsset: MultiAssetsV4;
  readonly isExpectAsset: boolean;
  readonly asExpectAsset: MultiAssetsV4;
  readonly isExpectOrigin: boolean;
  readonly asExpectOrigin: Option<MultiLocationV4>;
  readonly isExpectError: boolean;
  readonly asExpectError: Option<ITuple<[u32, XcmErrorV3]>>;
  readonly isExpectTransactStatus: boolean;
  readonly asExpectTransactStatus: MaybeErrorCodeV3;
  readonly isQueryPezpallet: boolean;
  readonly asQueryPezpallet: {
    readonly moduleName: Bytes;
    readonly responseInfo: QueryResponseInfoV4;
  } & Struct;
  readonly isExpectPezpallet: boolean;
  readonly asExpectPezpallet: {
    readonly index: Compact<u32>;
    readonly name: Bytes;
    readonly moduleName: Bytes;
    readonly crateMajor: Compact<u32>;
    readonly minCrateMinor: Compact<u32>;
  } & Struct;
  readonly isReportTransactStatus: boolean;
  readonly asReportTransactStatus: QueryResponseInfoV4;
  readonly isClearTransactStatus: boolean;
  readonly isUniversalOrigin: boolean;
  readonly asUniversalOrigin: JunctionV4;
  readonly isExportMessage: boolean;
  readonly asExportMessage: {
    readonly network: NetworkIdV4;
    readonly destination: JunctionsV4;
    readonly xcm: XcmV4;
  } & Struct;
  readonly isLockAsset: boolean;
  readonly asLockAsset: {
    readonly asset: MultiAssetV4;
    readonly unlocker: MultiLocationV4;
  } & Struct;
  readonly isUnlockAsset: boolean;
  readonly asUnlockAsset: {
    readonly asset: MultiAssetV4;
    readonly target: MultiLocationV4;
  } & Struct;
  readonly isNoteUnlockable: boolean;
  readonly asNoteUnlockable: {
    readonly asset: MultiAssetV4;
    readonly owner: MultiLocationV4;
  } & Struct;
  readonly isRequestUnlock: boolean;
  readonly asRequestUnlock: {
    readonly asset: MultiAssetV4;
    readonly locker: MultiLocationV4;
  } & Struct;
  readonly isSetFeesMode: boolean;
  readonly asSetFeesMode: {
    readonly jitWithdraw: bool;
  } & Struct;
  readonly isSetTopic: boolean;
  readonly asSetTopic: U8aFixed;
  readonly isClearTopic: boolean;
  readonly isAliasOrigin: boolean;
  readonly asAliasOrigin: MultiLocationV4;
  readonly isUnpaidExecution: boolean;
  readonly asUnpaidExecution: {
    readonly weightLimit: WeightLimitV3;
    readonly checkOrigin: Option<MultiLocationV4>;
  } & 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' | 'QueryPezpallet' | 'ExpectPezpallet' | '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<u64>;
    readonly response: ResponseV5;
    readonly maxWeight: WeightV2;
    readonly querier: Option<MultiLocationV5>;
  } & 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<u32>;
    readonly maxMessageSize: Compact<u32>;
    readonly maxCapacity: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelAccepted: boolean;
  readonly asHrmpChannelAccepted: {
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelClosing: boolean;
  readonly asHrmpChannelClosing: {
    readonly initiator: Compact<u32>;
    readonly sender: Compact<u32>;
    readonly recipient: Compact<u32>;
  } & 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<u64>;
  readonly isSubscribeVersion: boolean;
  readonly asSubscribeVersion: {
    readonly queryId: Compact<u64>;
    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<MultiLocationV5>;
  readonly isExpectError: boolean;
  readonly asExpectError: Option<ITuple<[u32, XcmErrorV3]>>;
  readonly isExpectTransactStatus: boolean;
  readonly asExpectTransactStatus: MaybeErrorCodeV3;
  readonly isQueryPezpallet: boolean;
  readonly asQueryPezpallet: {
    readonly moduleName: Bytes;
    readonly responseInfo: QueryResponseInfoV4;
  } & Struct;
  readonly isExpectPezpallet: boolean;
  readonly asExpectPezpallet: {
    readonly index: Compact<u32>;
    readonly name: Bytes;
    readonly moduleName: Bytes;
    readonly crateMajor: Compact<u32>;
    readonly minCrateMinor: Compact<u32>;
  } & 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<MultiLocationV5>;
  } & Struct;
  readonly isPayFees: boolean;
  readonly asPayFees: {
    readonly asset: MultiAssetV5;
  } & Struct;
  readonly isInitiateTransfer: boolean;
  readonly asInitiateTransfer: {
    readonly destination: MultiLocationV5;
    readonly remoteFees: Option<MultiAssetTransferFilterV5>;
    readonly preserveOrigin: bool;
    readonly assets: Vec<MultiAssetTransferFilterV5>;
    readonly remoteXcm: XcmV5;
  } & Struct;
  readonly isExecuteWithOrigin: boolean;
  readonly asExecuteWithOrigin: {
    readonly descendant_origin: Option<InteriorMultiLocationV5>;
    readonly xcm: XcmV5;
  } & Struct;
  readonly isSetHints: boolean;
  readonly asSetHints: {
    readonly hints: Vec<HintV5>;
  } & 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' | 'QueryPezpallet' | 'ExpectPezpallet' | 'ReportTransactStatus' | 'ClearTransactStatus' | 'UniversalOrigin' | 'ExportMessage' | 'LockAsset' | 'UnlockAsset' | 'NoteUnlockable' | 'RequestUnlock' | 'SetFeesMode' | 'SetTopic' | 'ClearTopic' | 'AliasOrigin' | 'UnpaidExecution' | 'PayFees' | 'InitiateTransfer' | 'ExecuteWithOrigin' | 'SetHints';
}

/** @name InteriorMultiLocation */
export interface InteriorMultiLocation extends Junctions {}

/** @name InteriorMultiLocationV2 */
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 JunctionV5 {}

/** @name Junctions */
export interface Junctions extends JunctionsV5 {}

/** @name JunctionsV1 */
export interface JunctionsV1 extends Enum {
  readonly isHere: boolean;
  readonly isX1: boolean;
  readonly asX1: JunctionV1;
  readonly isX2: boolean;
  readonly asX2: ITuple<[JunctionV1, JunctionV1]>;
  readonly isX3: boolean;
  readonly asX3: ITuple<[JunctionV1, JunctionV1, JunctionV1]>;
  readonly isX4: boolean;
  readonly asX4: ITuple<[JunctionV1, JunctionV1, JunctionV1, JunctionV1]>;
  readonly isX5: boolean;
  readonly asX5: ITuple<[JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1]>;
  readonly isX6: boolean;
  readonly asX6: ITuple<[JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1]>;
  readonly isX7: boolean;
  readonly asX7: ITuple<[JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1]>;
  readonly isX8: boolean;
  readonly asX8: ITuple<[JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1, JunctionV1]>;
  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}

/** @name JunctionsV2 */
export interface JunctionsV2 extends Enum {
  readonly isHere: boolean;
  readonly isX1: boolean;
  readonly asX1: JunctionV2;
  readonly isX2: boolean;
  readonly asX2: ITuple<[JunctionV2, JunctionV2]>;
  readonly isX3: boolean;
  readonly asX3: ITuple<[JunctionV2, JunctionV2, JunctionV2]>;
  readonly isX4: boolean;
  readonly asX4: ITuple<[JunctionV2, JunctionV2, JunctionV2, JunctionV2]>;
  readonly isX5: boolean;
  readonly asX5: ITuple<[JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2]>;
  readonly isX6: boolean;
  readonly asX6: ITuple<[JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2]>;
  readonly isX7: boolean;
  readonly asX7: ITuple<[JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2]>;
  readonly isX8: boolean;
  readonly asX8: ITuple<[JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2, JunctionV2]>;
  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}

/** @name JunctionsV3 */
export interface JunctionsV3 extends Enum {
  readonly isHere: boolean;
  readonly isX1: boolean;
  readonly asX1: JunctionV3;
  readonly isX2: boolean;
  readonly asX2: ITuple<[JunctionV3, JunctionV3]>;
  readonly isX3: boolean;
  readonly asX3: ITuple<[JunctionV3, JunctionV3, JunctionV3]>;
  readonly isX4: boolean;
  readonly asX4: ITuple<[JunctionV3, JunctionV3, JunctionV3, JunctionV3]>;
  readonly isX5: boolean;
  readonly asX5: ITuple<[JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3]>;
  readonly isX6: boolean;
  readonly asX6: ITuple<[JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3]>;
  readonly isX7: boolean;
  readonly asX7: ITuple<[JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3]>;
  readonly isX8: boolean;
  readonly asX8: ITuple<[JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3, JunctionV3]>;
  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}

/** @name JunctionsV4 */
export interface JunctionsV4 extends Enum {
  readonly isHere: boolean;
  readonly isX1: boolean;
  readonly asX1: Vec<JunctionV4>;
  readonly isX2: boolean;
  readonly asX2: Vec<JunctionV4>;
  readonly isX3: boolean;
  readonly asX3: Vec<JunctionV4>;
  readonly isX4: boolean;
  readonly asX4: Vec<JunctionV4>;
  readonly isX5: boolean;
  readonly asX5: Vec<JunctionV4>;
  readonly isX6: boolean;
  readonly asX6: Vec<JunctionV4>;
  readonly isX7: boolean;
  readonly asX7: Vec<JunctionV4>;
  readonly isX8: boolean;
  readonly asX8: Vec<JunctionV4>;
  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<JunctionV5>;
  readonly isX2: boolean;
  readonly asX2: Vec<JunctionV5>;
  readonly isX3: boolean;
  readonly asX3: Vec<JunctionV5>;
  readonly isX4: boolean;
  readonly asX4: Vec<JunctionV5>;
  readonly isX5: boolean;
  readonly asX5: Vec<JunctionV5>;
  readonly isX6: boolean;
  readonly asX6: Vec<JunctionV5>;
  readonly isX7: boolean;
  readonly asX7: Vec<JunctionV5>;
  readonly isX8: boolean;
  readonly asX8: Vec<JunctionV5>;
  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}

/** @name JunctionV0 */
export interface JunctionV0 extends Enum {
  readonly isParent: boolean;
  readonly isTeyrchain: boolean;
  readonly asTeyrchain: Compact<u32>;
  readonly isAccountId32: boolean;
  readonly asAccountId32: {
    readonly network: NetworkId;
    readonly id: AccountId;
  } & Struct;
  readonly isAccountIndex64: boolean;
  readonly asAccountIndex64: {
    readonly network: NetworkId;
    readonly index: Compact<u64>;
  } & Struct;
  readonly isAccountKey20: boolean;
  readonly asAccountKey20: {
    readonly network: NetworkId;
    readonly key: U8aFixed;
  } & Struct;
  readonly isPezpalletInstance: boolean;
  readonly asPezpalletInstance: u8;
  readonly isGeneralIndex: boolean;
  readonly asGeneralIndex: Compact<u128>;
  readonly isGeneralKey: boolean;
  readonly asGeneralKey: Bytes;
  readonly isOnlyChild: boolean;
  readonly isPlurality: boolean;
  readonly asPlurality: {
    readonly id: BodyId;
    readonly part: BodyPart;
  } & Struct;
  readonly type: 'Parent' | 'Teyrchain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PezpalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
}

/** @name JunctionV1 */
export interface JunctionV1 extends Enum {
  readonly isTeyrchain: boolean;
  readonly asTeyrchain: Compact<u32>;
  readonly isAccountId32: boolean;
  readonly asAccountId32: {
    readonly network: NetworkId;
    readonly id: AccountId;
  } & Struct;
  readonly isAccountIndex64: boolean;
  readonly asAccountIndex64: {
    readonly network: NetworkId;
    readonly index: Compact<u64>;
  } & Struct;
  readonly isAccountKey20: boolean;
  readonly asAccountKey20: {
    readonly network: NetworkId;
    readonly key: U8aFixed;
  } & Struct;
  readonly isPezpalletInstance: boolean;
  readonly asPezpalletInstance: u8;
  readonly isGeneralIndex: boolean;
  readonly asGeneralIndex: Compact<u128>;
  readonly isGeneralKey: boolean;
  readonly asGeneralKey: Bytes;
  readonly isOnlyChild: boolean;
  readonly isPlurality: boolean;
  readonly asPlurality: {
    readonly id: BodyId;
    readonly part: BodyPart;
  } & Struct;
  readonly type: 'Teyrchain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PezpalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
}

/** @name JunctionV2 */
export interface JunctionV2 extends Enum {
  readonly isTeyrchain: boolean;
  readonly asTeyrchain: Compact<u32>;
  readonly isAccountId32: boolean;
  readonly asAccountId32: {
    readonly network: NetworkIdV2;
    readonly id: U8aFixed;
  } & Struct;
  readonly isAccountIndex64: boolean;
  readonly asAccountIndex64: {
    readonly network: NetworkIdV2;
    readonly index: Compact<u64>;
  } & Struct;
  readonly isAccountKey20: boolean;
  readonly asAccountKey20: {
    readonly network: NetworkIdV2;
    readonly key: U8aFixed;
  } & Struct;
  readonly isPezpalletInstance: boolean;
  readonly asPezpalletInstance: u8;
  readonly isGeneralIndex: boolean;
  readonly asGeneralIndex: Compact<u128>;
  readonly isGeneralKey: boolean;
  readonly asGeneralKey: Bytes;
  readonly isOnlyChild: boolean;
  readonly isPlurality: boolean;
  readonly asPlurality: {
    readonly id: BodyIdV2;
    readonly part: BodyPartV2;
  } & Struct;
  readonly type: 'Teyrchain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PezpalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';
}

/** @name JunctionV3 */
export interface JunctionV3 extends Enum {
  readonly isTeyrchain: boolean;
  readonly asTeyrchain: Compact<u32>;
  readonly isAccountId32: boolean;
  readonly asAccountId32: {
    readonly network: Option<NetworkIdV3>;
    readonly id: U8aFixed;
  } & Struct;
  readonly isAccountIndex64: boolean;
  readonly asAccountIndex64: {
    readonly network: Option<NetworkIdV3>;
    readonly index: Compact<u64>;
  } & Struct;
  readonly isAccountKey20: boolean;
  readonly asAccountKey20: {
    readonly network: Option<NetworkIdV3>;
    readonly key: U8aFixed;
  } & Struct;
  readonly isPezpalletInstance: boolean;
  readonly asPezpalletInstance: u8;
  readonly isGeneralIndex: boolean;
  readonly asGeneralIndex: Compact<u128>;
  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: NetworkIdV3;
  readonly type: 'Teyrchain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PezpalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality' | 'GlobalConsensus';
}

/** @name JunctionV4 */
export interface JunctionV4 extends Enum {
  readonly isTeyrchain: boolean;
  readonly asTeyrchain: Compact<u32>;
  readonly isAccountId32: boolean;
  readonly asAccountId32: {
    readonly network: Option<NetworkIdV4>;
    readonly id: U8aFixed;
  } & Struct;
  readonly isAccountIndex64: boolean;
  readonly asAccountIndex64: {
    readonly network: Option<NetworkIdV4>;
    readonly index: Compact<u64>;
  } & Struct;
  readonly isAccountKey20: boolean;
  readonly asAccountKey20: {
    readonly network: Option<NetworkIdV4>;
    readonly key: U8aFixed;
  } & Struct;
  readonly isPezpalletInstance: boolean;
  readonly asPezpalletInstance: u8;
  readonly isGeneralIndex: boolean;
  readonly asGeneralIndex: Compact<u128>;
  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: NetworkIdV4;
  readonly type: 'Teyrchain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PezpalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality' | 'GlobalConsensus';
}

/** @name JunctionV5 */
export interface JunctionV5 extends Enum {
  readonly isTeyrchain: boolean;
  readonly asTeyrchain: Compact<u32>;
  readonly isAccountId32: boolean;
  readonly asAccountId32: {
    readonly network: Option<NetworkIdV5>;
    readonly id: U8aFixed;
  } & Struct;
  readonly isAccountIndex64: boolean;
  readonly asAccountIndex64: {
    readonly network: Option<NetworkIdV5>;
    readonly index: Compact<u64>;
  } & Struct;
  readonly isAccountKey20: boolean;
  readonly asAccountKey20: {
    readonly network: Option<NetworkIdV5>;
    readonly key: U8aFixed;
  } & Struct;
  readonly isPezpalletInstance: boolean;
  readonly asPezpalletInstance: u8;
  readonly isGeneralIndex: boolean;
  readonly asGeneralIndex: Compact<u128>;
  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: 'Teyrchain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PezpalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality' | 'GlobalConsensus';
}

/** @name MaxPezpalletNameLen */
export interface MaxPezpalletNameLen extends u32 {}

/** @name MaxPezpalletsInfo */
export interface MaxPezpalletsInfo extends u32 {}

/** @name MaybeErrorCodeV3 */
export interface MaybeErrorCodeV3 extends Enum {
  readonly isSuccess: boolean;
  readonly isError: boolean;
  readonly asError: Bytes;
  readonly isTruncatedError: boolean;
  readonly asTruncatedError: Bytes;
  readonly type: 'Success' | 'Error' | 'TruncatedError';
}

/** @name MultiAsset */
export interface MultiAsset extends MultiAssetV5 {}

/** @name MultiAssetFilter */
export interface MultiAssetFilter extends MultiAssetFilterV5 {}

/** @name MultiAssetFilterV1 */
export interface MultiAssetFilterV1 extends Enum {
  readonly isDefinite: boolean;
  readonly asDefinite: MultiAssetsV1;
  readonly isWild: boolean;
  readonly asWild: WildMultiAssetV1;
  readonly type: 'Definite' | 'Wild';
}

/** @name MultiAssetFilterV2 */
export interface MultiAssetFilterV2 extends Enum {
  readonly isDefinite: boolean;
  readonly asDefinite: MultiAssetsV2;
  readonly isWild: boolean;
  readonly asWild: WildMultiAssetV2;
  readonly type: 'Definite' | 'Wild';
}

/** @name MultiAssetFilterV3 */
export interface MultiAssetFilterV3 extends Enum {
  readonly isDefinite: boolean;
  readonly asDefinite: MultiAssetsV3;
  readonly isWild: boolean;
  readonly asWild: WildMultiAssetV3;
  readonly type: 'Definite' | 'Wild';
}

/** @name MultiAssetFilterV4 */
export interface MultiAssetFilterV4 extends Enum {
  readonly isDefinite: boolean;
  readonly asDefinite: MultiAssetsV4;
  readonly isWild: boolean;
  readonly asWild: WildMultiAssetV4;
  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<MultiAsset> {}

/** @name MultiAssetsV1 */
export interface MultiAssetsV1 extends Vec<MultiAssetV1> {}

/** @name MultiAssetsV2 */
export interface MultiAssetsV2 extends Vec<MultiAssetV2> {}

/** @name MultiAssetsV3 */
export interface MultiAssetsV3 extends Vec<MultiAssetV3> {}

/** @name MultiAssetsV4 */
export interface MultiAssetsV4 extends Vec<MultiAssetV4> {}

/** @name MultiAssetsV5 */
export interface MultiAssetsV5 extends Vec<MultiAssetV5> {}

/** @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;
  readonly isAll: boolean;
  readonly isAllFungible: boolean;
  readonly isAllNonFungible: boolean;
  readonly isAllAbstractFungible: boolean;
  readonly asAllAbstractFungible: Bytes;
  readonly isAllAbstractNonFungible: boolean;
  readonly asAllAbstractNonFungible: Bytes;
  readonly isAllConcreteFungible: boolean;
  readonly asAllConcreteFungible: MultiLocationV0;
  readonly isAllConcreteNonFungible: boolean;
  readonly asAllConcreteNonFungible: MultiLocationV0;
  readonly isAbstractFungible: boolean;
  readonly asAbstractFungible: {
    readonly id: Bytes;
    readonly instance: Compact<u128>;
  } & Struct;
  readonly isAbstractNonFungible: boolean;
  readonly asAbstractNonFungible: {
    readonly class: Bytes;
    readonly instance: AssetInstanceV0;
  } & Struct;
  readonly isConcreteFungible: boolean;
  readonly asConcreteFungible: {
    readonly id: MultiLocationV0;
    readonly amount: Compact<u128>;
  } & Struct;
  readonly isConcreteNonFungible: boolean;
  readonly asConcreteNonFungible: {
    readonly class: MultiLocationV0;
    readonly instance: AssetInstanceV0;
  } & Struct;
  readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';
}

/** @name MultiAssetV1 */
export interface MultiAssetV1 extends Struct {
  readonly id: XcmAssetId;
  readonly fungibility: FungibilityV1;
}

/** @name MultiAssetV2 */
export interface MultiAssetV2 extends Struct {
  readonly id: AssetIdV2;
  readonly fun: FungibilityV2;
}

/** @name MultiAssetV3 */
export interface MultiAssetV3 extends Struct {
  readonly id: AssetIdV3;
  readonly fun: FungibilityV3;
}

/** @name MultiAssetV4 */
export interface MultiAssetV4 extends Struct {
  readonly id: AssetIdV4;
  readonly fun: FungibilityV4;
}

/** @name MultiAssetV5 */
export interface MultiAssetV5 extends Struct {
  readonly id: AssetIdV5;
  readonly fun: FungibilityV5;
}

/** @name MultiLocation */
export interface MultiLocation extends MultiLocationV5 {}

/** @name MultiLocationV0 */
export interface MultiLocationV0 extends Enum {
  readonly isHere: boolean;
  readonly isX1: boolean;
  readonly asX1: JunctionV0;
  readonly isX2: boolean;
  readonly asX2: ITuple<[JunctionV0, JunctionV0]>;
  readonly isX3: boolean;
  readonly asX3: ITuple<[JunctionV0, JunctionV0, JunctionV0]>;
  readonly isX4: boolean;
  readonly asX4: ITuple<[JunctionV0, JunctionV0, JunctionV0, JunctionV0]>;
  readonly isX5: boolean;
  readonly asX5: ITuple<[JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0]>;
  readonly isX6: boolean;
  readonly asX6: ITuple<[JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0]>;
  readonly isX7: boolean;
  readonly asX7: ITuple<[JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0]>;
  readonly isX8: boolean;
  readonly asX8: ITuple<[JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0, JunctionV0]>;
  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';
}

/** @name MultiLocationV1 */
export interface MultiLocationV1 extends Struct {
  readonly parents: u8;
  readonly interior: JunctionsV1;
}

/** @name MultiLocationV2 */
export interface MultiLocationV2 extends Struct {
  readonly parents: u8;
  readonly interior: JunctionsV2;
}

/** @name MultiLocationV3 */
export interface MultiLocationV3 extends Struct {
  readonly parents: u8;
  readonly interior: JunctionsV3;
}

/** @name MultiLocationV4 */
export interface MultiLocationV4 extends Struct {
  readonly parents: u8;
  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;
  readonly isNamed: boolean;
  readonly asNamed: Bytes;
  readonly isPezkuwi: boolean;
  readonly isZagros: boolean;
  readonly type: 'Any' | 'Named' | 'Pezkuwi' | 'Zagros';
}

/** @name NetworkIdV2 */
export interface NetworkIdV2 extends Enum {
  readonly isAny: boolean;
  readonly isNamed: boolean;
  readonly asNamed: Bytes;
  readonly isPezkuwi: boolean;
  readonly isDicle: boolean;
  readonly isZagros: boolean;
  readonly type: 'Any' | 'Named' | 'Pezkuwi' | 'Dicle' | 'Zagros';
}

/** @name NetworkIdV3 */
export interface NetworkIdV3 extends Enum {
  readonly isByGenesis: boolean;
  readonly asByGenesis: U8aFixed;
  readonly isByFork: boolean;
  readonly asByFork: {
    readonly blockNumber: u64;
    readonly blockHash: U8aFixed;
  } & Struct;
  readonly isPezkuwi: boolean;
  readonly isDicle: boolean;
  readonly isZagros: boolean;
  readonly isPezkuwichain: boolean;
  readonly isWococo: boolean;
  readonly isEthereum: boolean;
  readonly asEthereum: {
    readonly chainId: Compact<u64>;
  } & Struct;
  readonly isBitcoinCore: boolean;
  readonly isBitcoinCash: boolean;
  readonly isPezkuwiBulletin: boolean;
  readonly type: 'ByGenesis' | 'ByFork' | 'Pezkuwi' | 'Dicle' | 'Zagros' | 'Pezkuwichain' | 'Wococo' | 'Ethereum' | 'BitcoinCore' | 'BitcoinCash' | 'PezkuwiBulletin';
}

/** @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 isPezkuwi: boolean;
  readonly isDicle: boolean;
  readonly isZagros: boolean;
  readonly isEthereum: boolean;
  readonly asEthereum: {
    readonly chainId: Compact<u64>;
  } & Struct;
  readonly isBitcoinCore: boolean;
  readonly isBitcoinCash: boolean;
  readonly isPezkuwiBulletin: boolean;
  readonly type: 'ByGenesis' | 'ByFork' | 'Pezkuwi' | 'Dicle' | 'Zagros' | 'Ethereum' | 'BitcoinCore' | 'BitcoinCash' | 'PezkuwiBulletin';
}

/** @name OriginKindV0 */
export interface OriginKindV0 extends Enum {
  readonly isNative: boolean;
  readonly isSovereignAccount: boolean;
  readonly isSuperuser: boolean;
  readonly isXcm: boolean;
  readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
}

/** @name OriginKindV1 */
export interface OriginKindV1 extends OriginKindV0 {}

/** @name OriginKindV2 */
export interface OriginKindV2 extends Enum {
  readonly isNative: boolean;
  readonly isSovereignAccount: boolean;
  readonly isSuperuser: boolean;
  readonly isXcm: boolean;
  readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
}

/** @name OriginKindV3 */
export interface OriginKindV3 extends OriginKindV2 {}

/** @name OriginKindV4 */
export interface OriginKindV4 extends XcmOriginKind {}

/** @name OutboundStatus */
export interface OutboundStatus extends Enum {
  readonly isOk: boolean;
  readonly isSuspended: boolean;
  readonly type: 'Ok' | 'Suspended';
}

/** @name Outcome */
export interface Outcome extends Enum {
  readonly isComplete: boolean;
  readonly asComplete: Weight;
  readonly isIncomplete: boolean;
  readonly asIncomplete: ITuple<[Weight, XcmErrorV0]>;
  readonly isError: boolean;
  readonly asError: XcmErrorV0;
  readonly type: 'Complete' | 'Incomplete' | 'Error';
}

/** @name OutcomeV4 */
export interface OutcomeV4 extends Enum {
  readonly isComplete: boolean;
  readonly asComplete: {
    readonly used: WeightV2;
  } & Struct;
  readonly isIncomplete: boolean;
  readonly asIncomplete: {
    readonly used: WeightV2;
    readonly error: XcmErrorV3;
  } & Struct;
  readonly isError: boolean;
  readonly asError: {
    readonly error: XcmErrorV3;
  } & Struct;
  readonly type: 'Complete' | 'Incomplete' | 'Error';
}

/** @name PezpalletInfoV3 */
export interface PezpalletInfoV3 extends Struct {
  readonly index: Compact<u32>;
  readonly name: Bytes;
  readonly moduleName: Bytes;
  readonly major: Compact<u32>;
  readonly minor: Compact<u32>;
  readonly patch: Compact<u32>;
}

/** @name PezpalletInfoV4 */
export interface PezpalletInfoV4 extends PezpalletInfoV3 {}

/** @name PezpalletInfoV5 */
export interface PezpalletInfoV5 extends PezpalletInfoV3 {}

/** @name QueryId */
export interface QueryId extends u64 {}

/** @name QueryResponseInfoV3 */
export interface QueryResponseInfoV3 extends Struct {
  readonly destination: MultiLocationV3;
  readonly queryId: Compact<u64>;
  readonly maxWeight: WeightV2;
}

/** @name QueryResponseInfoV4 */
export interface QueryResponseInfoV4 extends Struct {
  readonly destination: MultiLocationV4;
  readonly queryId: Compact<u64>;
  readonly maxWeight: WeightV2;
}

/** @name QueryResponseInfoV5 */
export interface QueryResponseInfoV5 extends Struct {
  readonly destination: MultiLocationV5;
  readonly queryId: Compact<u64>;
  readonly maxWeight: WeightV2;
}

/** @name QueryStatus */
export interface QueryStatus extends Enum {
  readonly isPending: boolean;
  readonly asPending: {
    readonly responder: VersionedMultiLocation;
    readonly maybeNotify: Option<ITuple<[u8, u8]>>;
    readonly timeout: BlockNumber;
  } & Struct;
  readonly isReady: boolean;
  readonly asReady: {
    readonly response: VersionedResponse;
    readonly at: BlockNumber;
  } & Struct;
  readonly type: 'Pending' | 'Ready';
}

/** @name QueueConfigData */
export interface QueueConfigData extends Struct {
  readonly suspendThreshold: u32;
  readonly dropThreshold: u32;
  readonly resumeThreshold: u32;
  readonly thresholdWeight: Weight;
  readonly weightRestrictDecay: Weight;
}

/** @name Response */
export interface Response extends ResponseV5 {}

/** @name ResponseV0 */
export interface ResponseV0 extends Enum {
  readonly isAssets: boolean;
  readonly asAssets: Vec<MultiAssetV0>;
  readonly type: 'Assets';
}

/** @name ResponseV1 */
export interface ResponseV1 extends Enum {
  readonly isAssets: boolean;
  readonly asAssets: MultiAssetsV1;
  readonly type: 'Assets';
}

/** @name ResponseV2 */
export interface ResponseV2 extends Enum {
  readonly isNull: boolean;
  readonly isAssets: boolean;
  readonly asAssets: MultiAssetsV2;
  readonly isExecutionResult: boolean;
  readonly asExecutionResult: Option<ITuple<[u32, XcmErrorV2]>>;
  readonly isVersion: boolean;
  readonly asVersion: u32;
  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';
}

/** @name ResponseV2Error */
export interface ResponseV2Error extends ITuple<[u32, XcmErrorV2]> {}

/** @name ResponseV3 */
export interface ResponseV3 extends Enum {
  readonly isNull: boolean;
  readonly isAssets: boolean;
  readonly asAssets: MultiAssetsV3;
  readonly isExecutionResult: boolean;
  readonly asExecutionResult: Option<ITuple<[u32, XcmErrorV3]>>;
  readonly isVersion: boolean;
  readonly asVersion: u32;
  readonly isPezpalletsInfo: boolean;
  readonly asPezpalletsInfo: Vec<PezpalletInfoV3>;
  readonly isDispatchResult: boolean;
  readonly asDispatchResult: MaybeErrorCodeV3;
  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version' | 'PezpalletsInfo' | 'DispatchResult';
}

/** @name ResponseV3Error */
export interface ResponseV3Error extends ITuple<[u32, XcmErrorV3]> {}

/** @name ResponseV3Result */
export interface ResponseV3Result extends Option<ITuple<[u32, ResponseV3Error]>> {}

/** @name ResponseV4 */
export interface ResponseV4 extends Enum {
  readonly isNull: boolean;
  readonly isAssets: boolean;
  readonly asAssets: MultiAssetsV4;
  readonly isExecutionResult: boolean;
  readonly asExecutionResult: Option<ITuple<[u32, XcmErrorV3]>>;
  readonly isVersion: boolean;
  readonly asVersion: u32;
  readonly isPezpalletsInfo: boolean;
  readonly asPezpalletsInfo: Vec<PezpalletInfoV4>;
  readonly isDispatchResult: boolean;
  readonly asDispatchResult: MaybeErrorCodeV3;
  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version' | 'PezpalletsInfo' | 'DispatchResult';
}

/** @name ResponseV5 */
export interface ResponseV5 extends Enum {
  readonly isNull: boolean;
  readonly isAssets: boolean;
  readonly asAssets: MultiAssetsV5;
  readonly isExecutionResult: boolean;
  readonly asExecutionResult: Option<ITuple<[u32, XcmErrorV3]>>;
  readonly isVersion: boolean;
  readonly asVersion: u32;
  readonly isPezpalletsInfo: boolean;
  readonly asPezpalletsInfo: Vec<PezpalletInfoV5>;
  readonly isDispatchResult: boolean;
  readonly asDispatchResult: MaybeErrorCodeV3;
  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version' | 'PezpalletsInfo' | 'DispatchResult';
}

/** @name UncheckedFungibilityV4 */
export interface UncheckedFungibilityV4 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  readonly isNonFungible: boolean;
  readonly asNonFungible: AssetInstanceV4;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name UncheckedFungibilityV5 */
export interface UncheckedFungibilityV5 extends Enum {
  readonly isFungible: boolean;
  readonly asFungible: Compact<u128>;
  readonly isNonFungible: boolean;
  readonly asNonFungible: AssetInstanceV5;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name VersionedMultiAsset */
export interface VersionedMultiAsset extends Enum {
  readonly isV0: boolean;
  readonly asV0: MultiAssetV0;
  readonly isV1: boolean;
  readonly asV1: MultiAssetV1;
  readonly isV2: boolean;
  readonly asV2: MultiAssetV2;
  readonly isV3: boolean;
  readonly asV3: MultiAssetV3;
  readonly isV4: boolean;
  readonly asV4: MultiAssetV4;
  readonly isV5: boolean;
  readonly asV5: MultiAssetV5;
  readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5';
}

/** @name VersionedMultiAssets */
export interface VersionedMultiAssets extends Enum {
  readonly isV0: boolean;
  readonly asV0: Vec<MultiAssetV0>;
  readonly isV1: boolean;
  readonly asV1: MultiAssetsV1;
  readonly isV2: boolean;
  readonly asV2: MultiAssetsV2;
  readonly isV3: boolean;
  readonly asV3: MultiAssetsV3;
  readonly isV4: boolean;
  readonly asV4: MultiAssetsV4;
  readonly isV5: boolean;
  readonly asV5: MultiAssetsV5;
  readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5';
}

/** @name VersionedMultiLocation */
export interface VersionedMultiLocation extends Enum {
  readonly isV0: boolean;
  readonly asV0: MultiLocationV0;
  readonly isV1: boolean;
  readonly asV1: MultiLocationV1;
  readonly isV2: boolean;
  readonly asV2: MultiLocationV2;
  readonly isV3: boolean;
  readonly asV3: MultiLocationV3;
  readonly isV4: boolean;
  readonly asV4: MultiLocationV4;
  readonly isV5: boolean;
  readonly asV5: MultiLocationV5;
  readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5';
}

/** @name VersionedResponse */
export interface VersionedResponse extends Struct {
  readonly V0: ResponseV0;
  readonly V1: ResponseV1;
  readonly V2: ResponseV2;
  readonly V3: ResponseV3;
  readonly V4: ResponseV4;
  readonly V5: ResponseV5;
}

/** @name VersionedXcm */
export interface VersionedXcm extends Enum {
  readonly isV0: boolean;
  readonly asV0: XcmV0;
  readonly isV1: boolean;
  readonly asV1: XcmV1;
  readonly isV2: boolean;
  readonly asV2: XcmV2;
  readonly isV3: boolean;
  readonly asV3: XcmV3;
  readonly isV4: boolean;
  readonly asV4: XcmV4;
  readonly isV5: boolean;
  readonly asV5: XcmV5;
  readonly type: 'V0' | 'V1' | 'V2' | 'V3' | 'V4' | 'V5';
}

/** @name VersionMigrationStage */
export interface VersionMigrationStage extends Enum {
  readonly isMigrateSupportedVersion: boolean;
  readonly isMigrateVersionNotifiers: boolean;
  readonly isNotifyCurrentTargets: boolean;
  readonly asNotifyCurrentTargets: Option<Bytes>;
  readonly isMigrateAndNotifyOldTargets: boolean;
  readonly type: 'MigrateSupportedVersion' | 'MigrateVersionNotifiers' | 'NotifyCurrentTargets' | 'MigrateAndNotifyOldTargets';
}

/** @name VersionV3 */
export interface VersionV3 extends u32 {}

/** @name VersionV4 */
export interface VersionV4 extends u32 {}

/** @name WeightLimitV2 */
export interface WeightLimitV2 extends Enum {
  readonly isUnlimited: boolean;
  readonly isLimited: boolean;
  readonly asLimited: Compact<u64>;
  readonly type: 'Unlimited' | 'Limited';
}

/** @name WeightLimitV3 */
export interface WeightLimitV3 extends Enum {
  readonly isUnlimited: boolean;
  readonly isLimited: boolean;
  readonly asLimited: WeightV2;
  readonly type: 'Unlimited' | 'Limited';
}

/** @name WildFungibility */
export interface WildFungibility extends WildFungibilityV5 {}

/** @name WildFungibilityV0 */
export interface WildFungibilityV0 extends WildFungibilityV1 {}

/** @name WildFungibilityV1 */
export interface WildFungibilityV1 extends Enum {
  readonly isFungible: boolean;
  readonly isNonFungible: boolean;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name WildFungibilityV2 */
export interface WildFungibilityV2 extends Enum {
  readonly isFungible: boolean;
  readonly isNonFungible: boolean;
  readonly type: 'Fungible' | 'NonFungible';
}

/** @name WildFungibilityV3 */
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 WildMultiAssetV5 {}

/** @name WildMultiAssetV1 */
export interface WildMultiAssetV1 extends Enum {
  readonly isAll: boolean;
  readonly isAllOf: boolean;
  readonly asAllOf: {
    readonly id: XcmAssetId;
    readonly fungibility: WildFungibilityV1;
  } & Struct;
  readonly type: 'All' | 'AllOf';
}

/** @name WildMultiAssetV2 */
export interface WildMultiAssetV2 extends Enum {
  readonly isAll: boolean;
  readonly isAllOf: boolean;
  readonly asAllOf: {
    readonly id: AssetIdV2;
    readonly fun: WildFungibilityV2;
  } & Struct;
  readonly type: 'All' | 'AllOf';
}

/** @name WildMultiAssetV3 */
export interface WildMultiAssetV3 extends Enum {
  readonly isAll: boolean;
  readonly isAllOf: boolean;
  readonly asAllOf: {
    readonly id: AssetIdV3;
    readonly fun: WildFungibilityV2;
  } & Struct;
  readonly isAllCounted: boolean;
  readonly asAllCounted: Compact<u32>;
  readonly isAllOfCounted: boolean;
  readonly asAllOfCounted: {
    readonly id: AssetIdV3;
    readonly fun: WildFungibilityV2;
    readonly count: Compact<u32>;
  } & Struct;
  readonly type: 'All' | 'AllOf' | 'AllCounted' | 'AllOfCounted';
}

/** @name WildMultiAssetV4 */
export interface WildMultiAssetV4 extends Enum {
  readonly isAll: boolean;
  readonly isAllOf: boolean;
  readonly asAllOf: {
    readonly id: AssetIdV4;
    readonly fun: WildFungibilityV4;
  } & Struct;
  readonly isAllCounted: boolean;
  readonly asAllCounted: Compact<u32>;
  readonly isAllOfCounted: boolean;
  readonly asAllOfCounted: {
    readonly id: AssetIdV4;
    readonly fun: WildFungibilityV4;
    readonly count: Compact<u32>;
  } & Struct;
  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<u32>;
  readonly isAllOfCounted: boolean;
  readonly asAllOfCounted: {
    readonly id: AssetIdV5;
    readonly fun: WildFungibilityV5;
    readonly count: Compact<u32>;
  } & Struct;
  readonly type: 'All' | 'AllOf' | 'AllCounted' | 'AllOfCounted';
}

/** @name Xcm */
export interface Xcm extends XcmV5 {}

/** @name XcmAssetId */
export interface XcmAssetId extends Enum {
  readonly isConcrete: boolean;
  readonly asConcrete: MultiLocation;
  readonly isAbstract: boolean;
  readonly asAbstract: Bytes;
  readonly type: 'Concrete' | 'Abstract';
}

/** @name XcmError */
export interface XcmError extends XcmErrorV5 {}

/** @name XcmErrorV0 */
export interface XcmErrorV0 extends Enum {
  readonly isUndefined: boolean;
  readonly isOverflow: boolean;
  readonly isUnimplemented: boolean;
  readonly isUnhandledXcmVersion: boolean;
  readonly isUnhandledXcmMessage: boolean;
  readonly isUnhandledEffect: boolean;
  readonly isEscalationOfPrivilege: boolean;
  readonly isUntrustedReserveLocation: boolean;
  readonly isUntrustedTeleportLocation: boolean;
  readonly isDestinationBufferOverflow: boolean;
  readonly isSendFailed: boolean;
  readonly isCannotReachDestination: boolean;
  readonly asCannotReachDestination: ITuple<[MultiLocation, Xcm]>;
  readonly isMultiLocationFull: boolean;
  readonly isFailedToDecode: boolean;
  readonly isBadOrigin: boolean;
  readonly isExceedsMaxMessageSize: boolean;
  readonly isFailedToTransactAsset: boolean;
  readonly isWeightLimitReached: boolean;
  readonly asWeightLimitReached: Weight;
  readonly isWildcard: boolean;
  readonly isTooMuchWeightRequired: boolean;
  readonly isNotHoldingFees: boolean;
  readonly isWeightNotComputable: boolean;
  readonly isBarrier: boolean;
  readonly isNotWithdrawable: boolean;
  readonly isLocationCannotHold: boolean;
  readonly isTooExpensive: boolean;
  readonly isAssetNotFound: boolean;
  readonly isRecursionLimitReached: boolean;
  readonly type: 'Undefined' | 'Overflow' | 'Unimplemented' | 'UnhandledXcmVersion' | 'UnhandledXcmMessage' | 'UnhandledEffect' | 'EscalationOfPrivilege' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'DestinationBufferOverflow' | 'SendFailed' | 'CannotReachDestination' | 'MultiLocationFull' | 'FailedToDecode' | 'BadOrigin' | 'ExceedsMaxMessageSize' | 'FailedToTransactAsset' | 'WeightLimitReached' | 'Wildcard' | 'TooMuchWeightRequired' | 'NotHoldingFees' | 'WeightNotComputable' | 'Barrier' | 'NotWithdrawable' | 'LocationCannotHold' | 'TooExpensive' | 'AssetNotFound' | 'RecursionLimitReached';
}

/** @name XcmErrorV1 */
export interface XcmErrorV1 extends Enum {
  readonly isUndefined: boolean;
  readonly isOverflow: boolean;
  readonly isUnimplemented: boolean;
  readonly isUnhandledXcmVersion: boolean;
  readonly isUnhandledXcmMessage: boolean;
  readonly isUnhandledEffect: boolean;
  readonly isEscalationOfPrivilege: boolean;
  readonly isUntrustedReserveLocation: boolean;
  readonly isUntrustedTeleportLocation: boolean;
  readonly isDestinationBufferOverflow: boolean;
  readonly isSendFailed: boolean;
  readonly isCannotReachDestination: boolean;
  readonly asCannotReachDestination: ITuple<[MultiLocationV1, XcmV1]>;
  readonly isMultiLocationFull: boolean;
  readonly isFailedToDecode: boolean;
  readonly isBadOrigin: boolean;
  readonly isExceedsMaxMessageSize: boolean;
  readonly isFailedToTransactAsset: boolean;
  readonly isWeightLimitReached: boolean;
  readonly asWeightLimitReached: Weight;
  readonly isWildcard: boolean;
  readonly isTooMuchWeightRequired: boolean;
  readonly isNotHoldingFees: boolean;
  readonly isWeightNotComputable: boolean;
  readonly isBarrier: boolean;
  readonly isNotWithdrawable: boolean;
  readonly isLocationCannotHold: boolean;
  readonly isTooExpensive: boolean;
  readonly isAssetNotFound: boolean;
  readonly isDestinationUnsupported: boolean;
  readonly isRecursionLimitReached: boolean;
  readonly type: 'Undefined' | 'Overflow' | 'Unimplemented' | 'UnhandledXcmVersion' | 'UnhandledXcmMessage' | 'UnhandledEffect' | 'EscalationOfPrivilege' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'DestinationBufferOverflow' | 'SendFailed' | 'CannotReachDestination' | 'MultiLocationFull' | 'FailedToDecode' | 'BadOrigin' | 'ExceedsMaxMessageSize' | 'FailedToTransactAsset' | 'WeightLimitReached' | 'Wildcard' | 'TooMuchWeightRequired' | 'NotHoldingFees' | 'WeightNotComputable' | 'Barrier' | 'NotWithdrawable' | 'LocationCannotHold' | 'TooExpensive' | 'AssetNotFound' | 'DestinationUnsupported' | 'RecursionLimitReached';
}

/** @name XcmErrorV2 */
export interface XcmErrorV2 extends Enum {
  readonly isOverflow: boolean;
  readonly isUnimplemented: boolean;
  readonly isUntrustedReserveLocation: boolean;
  readonly isUntrustedTeleportLocation: boolean;
  readonly isMultiLocationFull: boolean;
  readonly isMultiLocationNotInvertible: boolean;
  readonly isBadOrigin: boolean;
  readonly isInvalidLocation: boolean;
  readonly isAssetNotFound: boolean;
  readonly isFailedToTransactAsset: boolean;
  readonly isNotWithdrawable: boolean;
  readonly isLocationCannotHold: boolean;
  readonly isExceedsMaxMessageSize: boolean;
  readonly isDestinationUnsupported: boolean;
  readonly isTransport: boolean;
  readonly isUnroutable: boolean;
  readonly isUnknownClaim: boolean;
  readonly isFailedToDecode: boolean;
  readonly isMaxWeightInvalid: boolean;
  readonly isNotHoldingFees: boolean;
  readonly isTooExpensive: boolean;
  readonly isTrap: boolean;
  readonly asTrap: u64;
  readonly isUnhandledXcmVersion: boolean;
  readonly isWeightLimitReached: boolean;
  readonly asWeightLimitReached: Weight;
  readonly isBarrier: boolean;
  readonly isWeightNotComputable: boolean;
  readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';
}

/** @name XcmErrorV3 */
export interface XcmErrorV3 extends Enum {
  readonly isOverflow: boolean;
  readonly isUnimplemented: boolean;
  readonly isUntrustedReserveLocation: boolean;
  readonly isUntrustedTeleportLocation: boolean;
  readonly isLocationFull: boolean;
  readonly isLocationNotInvertible: boolean;
  readonly isBadOrigin: boolean;
  readonly isInvalidLocation: boolean;
  readonly isAssetNotFound: boolean;
  readonly isFailedToTransactAsset: boolean;
  readonly isNotWithdrawable: boolean;
  readonly isLocationCannotHold: boolean;
  readonly isExceedsMaxMessageSize: boolean;
  readonly isDestinationUnsupported: boolean;
  readonly isTransport: boolean;
  readonly isUnroutable: boolean;
  readonly isUnknownClaim: boolean;
  readonly isFailedToDecode: boolean;
  readonly isMaxWeightInvalid: boolean;
  readonly isNotHoldingFees: boolean;
  readonly isTooExpensive: boolean;
  readonly isTrap: boolean;
  readonly asTrap: u64;
  readonly isExpectationFalse: boolean;
  readonly isPezpalletNotFound: boolean;
  readonly isNameMismatch: boolean;
  readonly isVersionIncompatible: boolean;
  readonly isHoldingWouldOverflow: boolean;
  readonly isExportError: boolean;
  readonly isReanchorFailed: boolean;
  readonly isNoDeal: boolean;
  readonly isFeesNotMet: boolean;
  readonly isLockError: boolean;
  readonly isNoPermission: boolean;
  readonly isUnanchored: boolean;
  readonly isNotDepositable: boolean;
  readonly isUnhandledXcmVersion: boolean;
  readonly isWeightLimitReached: boolean;
  readonly asWeightLimitReached: WeightV2;
  readonly isBarrier: boolean;
  readonly isExceedsStackLimit: boolean;
  readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'LocationFull' | 'LocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'ExpectationFalse' | 'PezpalletNotFound' | 'NameMismatch' | 'VersionIncompatible' | 'HoldingWouldOverflow' | 'ExportError' | 'ReanchorFailed' | 'NoDeal' | 'FeesNotMet' | 'LockError' | 'NoPermission' | 'Unanchored' | 'NotDepositable' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'ExceedsStackLimit';
}

/** @name XcmErrorV4 */
export interface XcmErrorV4 extends XcmErrorV3 {}

/** @name XcmErrorV5 */
export interface XcmErrorV5 extends XcmErrorV3 {}

/** @name XcmOrderV0 */
export interface XcmOrderV0 extends Enum {
  readonly isNull: boolean;
  readonly isDepositAsset: boolean;
  readonly asDepositAsset: {
    readonly assets: Vec<MultiAssetV0>;
    readonly dest: MultiLocationV0;
  } & Struct;
  readonly isDepositReserveAsset: boolean;
  readonly asDepositReserveAsset: {
    readonly assets: Vec<MultiAssetV0>;
    readonly dest: MultiLocationV0;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isExchangeAsset: boolean;
  readonly asExchangeAsset: {
    readonly give: Vec<MultiAssetV0>;
    readonly receive: Vec<MultiAssetV0>;
  } & Struct;
  readonly isInitiateReserveWithdraw: boolean;
  readonly asInitiateReserveWithdraw: {
    readonly assets: Vec<MultiAssetV0>;
    readonly reserve: MultiLocationV0;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isInitiateTeleport: boolean;
  readonly asInitiateTeleport: {
    readonly assets: Vec<MultiAssetV0>;
    readonly dest: MultiLocationV0;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isQueryHolding: boolean;
  readonly asQueryHolding: {
    readonly queryId: Compact<u64>;
    readonly dest: MultiLocationV0;
    readonly assets: Vec<MultiAssetV0>;
  } & Struct;
  readonly isBuyExecution: boolean;
  readonly asBuyExecution: {
    readonly fees: MultiAssetV0;
    readonly weight: u64;
    readonly debt: u64;
    readonly haltOnError: bool;
    readonly xcm: Vec<XcmV0>;
  } & Struct;
  readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}

/** @name XcmOrderV1 */
export interface XcmOrderV1 extends Enum {
  readonly isNoop: boolean;
  readonly isDepositAsset: boolean;
  readonly asDepositAsset: {
    readonly assets: MultiAssetFilterV1;
    readonly maxAssets: u32;
    readonly beneficiary: MultiLocationV1;
  } & Struct;
  readonly isDepositReserveAsset: boolean;
  readonly asDepositReserveAsset: {
    readonly assets: MultiAssetFilterV1;
    readonly maxAssets: u32;
    readonly dest: MultiLocationV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isExchangeAsset: boolean;
  readonly asExchangeAsset: {
    readonly give: MultiAssetFilterV1;
    readonly receive: MultiAssetsV1;
  } & Struct;
  readonly isInitiateReserveWithdraw: boolean;
  readonly asInitiateReserveWithdraw: {
    readonly assets: MultiAssetFilterV1;
    readonly reserve: MultiLocationV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isInitiateTeleport: boolean;
  readonly asInitiateTeleport: {
    readonly assets: MultiAssetFilterV1;
    readonly dest: MultiLocationV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isQueryHolding: boolean;
  readonly asQueryHolding: {
    readonly queryId: Compact<u64>;
    readonly dest: MultiLocationV1;
    readonly assets: MultiAssetFilterV1;
  } & Struct;
  readonly isBuyExecution: boolean;
  readonly asBuyExecution: {
    readonly fees: MultiAssetV1;
    readonly weight: u64;
    readonly debt: u64;
    readonly haltOnError: bool;
    readonly instructions: Vec<XcmV1>;
  } & Struct;
  readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';
}

/** @name XcmOrigin */
export interface XcmOrigin extends Enum {
  readonly isXcm: boolean;
  readonly asXcm: MultiLocation;
  readonly type: 'Xcm';
}

/** @name XcmOriginKind */
export interface XcmOriginKind extends Enum {
  readonly isNative: boolean;
  readonly isSovereignAccount: boolean;
  readonly isSuperuser: boolean;
  readonly isXcm: boolean;
  readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';
}

/** @name XcmpMessageFormat */
export interface XcmpMessageFormat extends Enum {
  readonly isConcatenatedVersionedXcm: boolean;
  readonly isConcatenatedEncodedBlob: boolean;
  readonly isSignals: boolean;
  readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
}

/** @name XcmV0 */
export interface XcmV0 extends Enum {
  readonly isWithdrawAsset: boolean;
  readonly asWithdrawAsset: {
    readonly assets: Vec<MultiAssetV0>;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isReserveAssetDeposit: boolean;
  readonly asReserveAssetDeposit: {
    readonly assets: Vec<MultiAssetV0>;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isReceiveTeleportedAsset: boolean;
  readonly asReceiveTeleportedAsset: {
    readonly assets: Vec<MultiAssetV0>;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isQueryResponse: boolean;
  readonly asQueryResponse: {
    readonly queryId: Compact<u64>;
    readonly response: ResponseV0;
  } & Struct;
  readonly isTransferAsset: boolean;
  readonly asTransferAsset: {
    readonly assets: Vec<MultiAssetV0>;
    readonly dest: MultiLocationV0;
  } & Struct;
  readonly isTransferReserveAsset: boolean;
  readonly asTransferReserveAsset: {
    readonly assets: Vec<MultiAssetV0>;
    readonly dest: MultiLocationV0;
    readonly effects: Vec<XcmOrderV0>;
  } & Struct;
  readonly isTransact: boolean;
  readonly asTransact: {
    readonly originType: XcmOriginKind;
    readonly requireWeightAtMost: u64;
    readonly call: DoubleEncodedCall;
  } & Struct;
  readonly isHrmpNewChannelOpenRequest: boolean;
  readonly asHrmpNewChannelOpenRequest: {
    readonly sender: Compact<u32>;
    readonly maxMessageSize: Compact<u32>;
    readonly maxCapacity: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelAccepted: boolean;
  readonly asHrmpChannelAccepted: {
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelClosing: boolean;
  readonly asHrmpChannelClosing: {
    readonly initiator: Compact<u32>;
    readonly sender: Compact<u32>;
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isRelayedFrom: boolean;
  readonly asRelayedFrom: {
    readonly who: MultiLocationV0;
    readonly message: XcmV0;
  } & Struct;
  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
}

/** @name XcmV1 */
export interface XcmV1 extends Enum {
  readonly isWithdrawAsset: boolean;
  readonly asWithdrawAsset: {
    readonly assets: MultiAssetsV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isReserveAssetDeposit: boolean;
  readonly asReserveAssetDeposit: {
    readonly assets: MultiAssetsV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isReceiveTeleportedAsset: boolean;
  readonly asReceiveTeleportedAsset: {
    readonly assets: MultiAssetsV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isQueryResponse: boolean;
  readonly asQueryResponse: {
    readonly queryId: Compact<u64>;
    readonly response: ResponseV1;
  } & Struct;
  readonly isTransferAsset: boolean;
  readonly asTransferAsset: {
    readonly assets: MultiAssetsV1;
    readonly dest: MultiLocationV1;
  } & Struct;
  readonly isTransferReserveAsset: boolean;
  readonly asTransferReserveAsset: {
    readonly assets: MultiAssetsV1;
    readonly dest: MultiLocationV1;
    readonly effects: Vec<XcmOrderV1>;
  } & Struct;
  readonly isTransact: boolean;
  readonly asTransact: {
    readonly originType: XcmOriginKind;
    readonly requireWeightAtMost: u64;
    readonly call: DoubleEncodedCall;
  } & Struct;
  readonly isHrmpNewChannelOpenRequest: boolean;
  readonly asHrmpNewChannelOpenRequest: {
    readonly sender: Compact<u32>;
    readonly maxMessageSize: Compact<u32>;
    readonly maxCapacity: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelAccepted: boolean;
  readonly asHrmpChannelAccepted: {
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isHrmpChannelClosing: boolean;
  readonly asHrmpChannelClosing: {
    readonly initiator: Compact<u32>;
    readonly sender: Compact<u32>;
    readonly recipient: Compact<u32>;
  } & Struct;
  readonly isRelayedFrom: boolean;
  readonly asRelayedFrom: {
    readonly who: MultiLocationV1;
    readonly message: XcmV1;
  } & Struct;
  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';
}

/** @name XcmV2 */
export interface XcmV2 extends Vec<InstructionV2> {}

/** @name XcmV3 */
export interface XcmV3 extends Vec<InstructionV3> {}

/** @name XcmV4 */
export interface XcmV4 extends Vec<InstructionV4> {}

/** @name XcmV5 */
export interface XcmV5 extends Vec<InstructionV5> {}

/** @name XcmVersion */
export interface XcmVersion extends u32 {}

export type PHANTOM_XCM = 'xcm';
