From 0589d151da06cb83f382b19f33e13102e2df3559 Mon Sep 17 00:00:00 2001 From: Jaco Date: Tue, 20 Apr 2021 08:53:24 +0300 Subject: [PATCH] Add Xcm Plurality types (#3411) --- packages/types/src/augment/registry.ts | 20 +++- .../types/src/interfaces/xcm/definitions.ts | 98 ++++++++++++------- packages/types/src/interfaces/xcm/types.ts | 52 ++++++++++ 3 files changed, 136 insertions(+), 34 deletions(-) diff --git a/packages/types/src/augment/registry.ts b/packages/types/src/augment/registry.ts index 72f2be6191..285dc50275 100644 --- a/packages/types/src/augment/registry.ts +++ b/packages/types/src/augment/registry.ts @@ -54,7 +54,7 @@ import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatu import type { Multiplier } from '@polkadot/types/interfaces/txpayment'; import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; import type { VestingInfo } from '@polkadot/types/interfaces/vesting'; -import type { AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, DoubleEncodedCall, Junction, MultiAsset, MultiAssetAbstractFungible, MultiAssetAbstractNonFungible, MultiAssetConcreteFungible, MultiAssetConcreteNonFungible, MultiLocation, NetworkId, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, Xcm, XcmAssetEffects, XcmError, XcmHrmpChannelAccepted, XcmHrmpChannelClosing, XcmHrmpNewChannelOpenRequest, XcmOrder, XcmOrderBuyExecution, XcmOrderDepositAsset, XcmOrderDepositReserveAsset, XcmOrderExchangeAsset, XcmOrderInitiateReserveWithdraw, XcmOrderInitiateTeleport, XcmOrderQueryHolding, XcmOriginKind, XcmOutcome, XcmQueryResponse, XcmRelayedFrom, XcmReserveAssetDeposit, XcmResponse, XcmTeleportAsset, XcmTransact, XcmTransferAsset, XcmTransferReserveAsset, XcmWithdrawAsset } from '@polkadot/types/interfaces/xcm'; +import type { AccountId32Junction, AccountIndex64Junction, AccountKey20Junction, AssetInstance, BodyId, BodyPart, BodyPartAtLeastProportion, BodyPartFraction, BodyPartMoreThanProportion, DoubleEncodedCall, Junction, MultiAsset, MultiAssetAbstractFungible, MultiAssetAbstractNonFungible, MultiAssetConcreteFungible, MultiAssetConcreteNonFungible, MultiLocation, NetworkId, PluralityJunction, VersionedMultiAsset, VersionedMultiLocation, VersionedXcm, Xcm, XcmAssetEffects, XcmError, XcmHrmpChannelAccepted, XcmHrmpChannelClosing, XcmHrmpNewChannelOpenRequest, XcmOrder, XcmOrderBuyExecution, XcmOrderDepositAsset, XcmOrderDepositReserveAsset, XcmOrderExchangeAsset, XcmOrderInitiateReserveWithdraw, XcmOrderInitiateTeleport, XcmOrderQueryHolding, XcmOriginKind, XcmOutcome, XcmQueryResponse, XcmRelayedFrom, XcmReserveAssetDeposit, XcmResponse, XcmTeleportAsset, XcmTransact, XcmTransferAsset, XcmTransferReserveAsset, XcmWithdrawAsset } from '@polkadot/types/interfaces/xcm'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -226,6 +226,11 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; + 'Option': Option; + 'Option': Option; + 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -645,6 +650,7 @@ declare module '@polkadot/types/types/registry' { 'Option': Option; 'Option': Option; 'Option': Option; + 'Option': Option; 'Option': Option; 'Option': Option; 'Option': Option; @@ -1011,6 +1017,11 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; + 'Vec': Vec; + 'Vec': Vec; + 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -1430,6 +1441,7 @@ declare module '@polkadot/types/types/registry' { 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; + 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; 'Vec': Vec; @@ -1796,6 +1808,11 @@ declare module '@polkadot/types/types/registry' { BlockLength: BlockLength; BlockNumber: BlockNumber; BlockWeights: BlockWeights; + BodyId: BodyId; + BodyPart: BodyPart; + BodyPartAtLeastProportion: BodyPartAtLeastProportion; + BodyPartFraction: BodyPartFraction; + BodyPartMoreThanProportion: BodyPartMoreThanProportion; bool: bool; Bool: Bool; Bounty: Bounty; @@ -2215,6 +2232,7 @@ declare module '@polkadot/types/types/registry' { PhantomData: PhantomData; Phase: Phase; PhragmenScore: PhragmenScore; + PluralityJunction: PluralityJunction; Points: Points; Precommits: Precommits; PrefabWasmModule: PrefabWasmModule; diff --git a/packages/types/src/interfaces/xcm/definitions.ts b/packages/types/src/interfaces/xcm/definitions.ts index cb08b38829..ab6e001f6a 100644 --- a/packages/types/src/interfaces/xcm/definitions.ts +++ b/packages/types/src/interfaces/xcm/definitions.ts @@ -106,21 +106,78 @@ const multiAsset = { } }; +const junction = { + BodyId: { + _enum: { + Unit: 'Null', + Named: 'Vec', + Index: 'Compact', + Executive: 'Null', + Technical: 'Null', + Legislative: 'Null', + Judicial: 'Null' + } + }, + BodyPart: { + _enum: { + Voice: 'Null', + Members: 'Compact', + Fraction: 'BodyPartFraction', + AtLeastProportion: 'BodyPartAtLeastProportion', + MoreThanProportion: 'BodyPartMoreThanProportion' + } + }, + BodyPartFraction: { nom: 'Compact', denom: 'Compact' }, + BodyPartAtLeastProportion: { nom: 'Compact', denom: 'Compact' }, + BodyPartMoreThanProportion: { nom: 'Compact', denom: 'Compact' }, + AccountId32Junction: { + network: 'NetworkId', + id: 'AccountId' + }, + AccountIndex64Junction: { + network: 'NetworkId', + index: 'Compact' + }, + AccountKey20Junction: { + network: 'NetworkId', + index: '[u8; 20]' + }, + PluralityJunction: { + id: 'BodyId', + part: 'BodyPart' + }, + Junction: { + _enum: { + Parent: 'Null', + Parachain: 'Compact', + AccountId32: 'AccountId32Junction', + AccountIndex64: 'AccountIndex64Junction', + AccountKey20: 'AccountKey20Junction', + PalletInstance: 'u8', + GeneralIndex: 'Compact', + GeneralKey: 'Vec', + OnlyChild: 'Null', + Plurality: 'PluralityJunction' + } + }, + NetworkId: { + _enum: { + Any: 'Null', + Named: 'Vec', + Polkadot: 'Null', + Kusama: 'Null' + } + } +}; + export default { rpc: {}, types: { + ...junction, ...multiAsset, ...xcm, ...xmcOrder, DoubleEncodedCall: { encoded: 'Vec' }, - NetworkId: { - _enum: { - Any: 'Null', - Named: 'Vec', - Polkadot: 'Null', - Kusama: 'Null' - } - }, XcmOriginKind: { _enum: ['Native', 'SovereignAccount', 'Superuser'] }, @@ -178,31 +235,6 @@ export default { X8: '(Junction, Junction, Junction, Junction, Junction, Junction, Junction, Junction)' } }, - AccountId32Junction: { - network: 'NetworkId', - id: 'AccountId' - }, - AccountIndex64Junction: { - network: 'NetworkId', - index: 'Compact' - }, - AccountKey20Junction: { - network: 'NetworkId', - index: '[u8; 20]' - }, - Junction: { - _enum: { - Parent: 'Null', - Parachain: 'Compact', - AccountId32: 'AccountId32Junction', - AccountIndex64: 'AccountIndex64Junction', - AccountKey20: 'AccountKey20Junction', - PalletInstance: 'u8', - GeneralIndex: 'Compact', - GeneralKey: 'Vec', - OnlyChild: 'Null' - } - }, VersionedMultiLocation: { _enum: { V0: 'MultiLocation' diff --git a/packages/types/src/interfaces/xcm/types.ts b/packages/types/src/interfaces/xcm/types.ts index d74903f670..666a850aa3 100644 --- a/packages/types/src/interfaces/xcm/types.ts +++ b/packages/types/src/interfaces/xcm/types.ts @@ -48,6 +48,50 @@ export interface AssetInstance extends Enum { readonly asBlob: Bytes; } +/** @name BodyId */ +export interface BodyId extends Enum { + readonly isUnit: boolean; + readonly isNamed: boolean; + readonly asNamed: Bytes; + readonly isIndex: boolean; + readonly asIndex: Compact; + readonly isExecutive: boolean; + readonly isTechnical: boolean; + readonly isLegislative: boolean; + readonly isJudicial: boolean; +} + +/** @name BodyPart */ +export interface BodyPart extends Enum { + readonly isVoice: boolean; + readonly isMembers: boolean; + readonly asMembers: Compact; + readonly isFraction: boolean; + readonly asFraction: BodyPartFraction; + readonly isAtLeastProportion: boolean; + readonly asAtLeastProportion: BodyPartAtLeastProportion; + readonly isMoreThanProportion: boolean; + readonly asMoreThanProportion: BodyPartMoreThanProportion; +} + +/** @name BodyPartAtLeastProportion */ +export interface BodyPartAtLeastProportion extends Struct { + readonly nom: Compact; + readonly denom: Compact; +} + +/** @name BodyPartFraction */ +export interface BodyPartFraction extends Struct { + readonly nom: Compact; + readonly denom: Compact; +} + +/** @name BodyPartMoreThanProportion */ +export interface BodyPartMoreThanProportion extends Struct { + readonly nom: Compact; + readonly denom: Compact; +} + /** @name DoubleEncodedCall */ export interface DoubleEncodedCall extends Struct { readonly encoded: Bytes; @@ -71,6 +115,8 @@ export interface Junction extends Enum { readonly isGeneralKey: boolean; readonly asGeneralKey: Bytes; readonly isOnlyChild: boolean; + readonly isPlurality: boolean; + readonly asPlurality: PluralityJunction; } /** @name MultiAsset */ @@ -151,6 +197,12 @@ export interface NetworkId extends Enum { readonly isKusama: boolean; } +/** @name PluralityJunction */ +export interface PluralityJunction extends Struct { + readonly id: BodyId; + readonly part: BodyPart; +} + /** @name VersionedMultiAsset */ export interface VersionedMultiAsset extends Enum { readonly isV0: boolean;