From da101a158061c908145b69802b391835f9d7852a Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Wed, 28 Aug 2024 15:10:38 +0200 Subject: [PATCH] feat: migrate to xcm v4 --- src/api/common.ts | 72 ++++++++++++++--------------------------------- src/api/dot/ah.ts | 8 +++--- src/api/ksm/ah.ts | 8 +++--- src/api/roc/ah.ts | 8 +++--- src/api/wnd/ah.ts | 8 +++--- 5 files changed, 37 insertions(+), 67 deletions(-) diff --git a/src/api/common.ts b/src/api/common.ts index 85387f1..ca1bcf1 100644 --- a/src/api/common.ts +++ b/src/api/common.ts @@ -3,7 +3,6 @@ import { XcmV3Junction, XcmV3JunctionNetworkId, XcmV3Junctions, - XcmV3MultiassetAssetId, XcmV3MultiassetFungibility, XcmV3WeightLimit, XcmVersionedAssets, @@ -15,32 +14,26 @@ import { map } from "rxjs" const encodeAccount = AccountId().enc -export const getBeneficiary = (address: SS58String | Uint8Array) => ({ - type: "V3" as const, - value: { +export const getBeneficiary = (address: SS58String | Uint8Array) => + XcmVersionedLocation.V4({ parents: 0, - interior: { - type: "X1" as const, - value: { - type: "AccountId32" as const, - value: { - network: undefined, - id: Binary.fromBytes( - address instanceof Uint8Array ? address : encodeAccount(address), - ), - }, - }, - }, - }, -}) + interior: XcmV3Junctions.X1( + XcmV3Junction.AccountId32({ + network: undefined, + id: Binary.fromBytes( + address instanceof Uint8Array ? address : encodeAccount(address), + ), + }), + ), + }) export const getNativeAsset = (parents: number, amount: bigint) => - XcmVersionedAssets.V3([ + XcmVersionedAssets.V4([ { - id: XcmV3MultiassetAssetId.Concrete({ + id: { parents, - interior: Enum("Here"), - }), + interior: XcmV3Junctions.Here(), + }, fun: XcmV3MultiassetFungibility.Fungible(amount), }, ]) @@ -50,7 +43,7 @@ export const fromRelayToAssetHub = ( amount: bigint, to?: SS58String, ) => ({ - dest: XcmVersionedLocation.V3({ + dest: XcmVersionedLocation.V4({ parents: 0, interior: XcmV3Junctions.X1(XcmV3Junction.Parachain(1000)), }), @@ -65,16 +58,10 @@ export const fromAssetHubToRelay = ( amount: bigint, to?: SS58String, ) => ({ - dest: { - type: "V3" as const, - value: { - parents: 1, - interior: { - type: "Here" as const, - value: undefined, - }, - }, - }, + dest: XcmVersionedLocation.V4({ + parents: 1, + interior: XcmV3Junctions.Here(), + }), beneficiary: getBeneficiary(to ?? from.publicKey), assets: getNativeAsset(1, amount), fee_asset_item: 0, @@ -88,7 +75,7 @@ export const fromAssetHubToForeign = ( from: PolkadotSigner, to?: SS58String, ) => ({ - dest: XcmVersionedLocation.V3({ + dest: XcmVersionedLocation.V4({ parents: 2, interior: XcmV3Junctions.X2([ XcmV3Junction.GlobalConsensus(network), @@ -101,23 +88,6 @@ export const fromAssetHubToForeign = ( weight_limit: XcmV3WeightLimit.Unlimited(), }) -/* -export const toAssetHub = ( - from: PolkadotSigner, - amount: bigint, - to?: SS58String, -) => ({ - dest: XcmVersionedMultiLocation.V3({ - parents: 1, - interior: DotXcmV3Junctions.Here(), - }), - beneficiary: getBeneficiary(to ?? from.publicKey), - assets: getNativeAsset(1, amount), - fee_asset_item: 0, - weight_limit: XcmV3WeightLimit.Unlimited(), -}) -*/ - type GenericApi = TypedApi export const watchAccoutFreeBalance = diff --git a/src/api/dot/ah.ts b/src/api/dot/ah.ts index c4a71ce..a0aa91e 100644 --- a/src/api/dot/ah.ts +++ b/src/api/dot/ah.ts @@ -2,7 +2,7 @@ import { XcmV3Junction, XcmV3JunctionNetworkId, XcmV3Junctions, - XcmV3MultiassetAssetId, + XcmVersionedLocation, dotAh, } from "@polkadot-api/descriptors" import { dotAhClient } from "@/api/clients" @@ -37,7 +37,7 @@ const dot: AssetInChain = { }, } -const ksmInDotAh: Parameters[0] = { +const ksmInDotAh: Parameters[0] = { parents: 2, interior: XcmV3Junctions.X1( XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Kusama()), @@ -55,9 +55,9 @@ const ksm: AssetInChain = { fromAssetHubToForeign( XcmV4JunctionNetworkId.Kusama(), 1000, - XcmVersionedAssets.V3([ + XcmVersionedAssets.V4([ { - id: XcmV3MultiassetAssetId.Concrete(ksmInDotAh), + id: ksmInDotAh, fun: XcmV3MultiassetFungibility.Fungible(amount), }, ]), diff --git a/src/api/ksm/ah.ts b/src/api/ksm/ah.ts index c06d965..c1550c4 100644 --- a/src/api/ksm/ah.ts +++ b/src/api/ksm/ah.ts @@ -2,7 +2,7 @@ import { XcmV3Junction, XcmV3JunctionNetworkId, XcmV3Junctions, - XcmV3MultiassetAssetId, + XcmVersionedLocation, ksmAh, } from "@polkadot-api/descriptors" import { ksmAhClient } from "@/api/clients" @@ -37,7 +37,7 @@ const ksm: AssetInChain = { }, } -const dotInKsmAh: Parameters[0] = { +const dotInKsmAh: Parameters[0] = { parents: 2, interior: XcmV3Junctions.X1( XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Polkadot()), @@ -55,9 +55,9 @@ const dot: AssetInChain = { fromAssetHubToForeign( XcmV4JunctionNetworkId.Polkadot(), 1000, - XcmVersionedAssets.V3([ + XcmVersionedAssets.V4([ { - id: XcmV3MultiassetAssetId.Concrete(dotInKsmAh), + id: dotInKsmAh, fun: XcmV3MultiassetFungibility.Fungible(amount), }, ]), diff --git a/src/api/roc/ah.ts b/src/api/roc/ah.ts index 469c576..b3fd27b 100644 --- a/src/api/roc/ah.ts +++ b/src/api/roc/ah.ts @@ -2,9 +2,9 @@ import { XcmV3Junction, XcmV3JunctionNetworkId, XcmV3Junctions, - XcmV3MultiassetAssetId, XcmV3MultiassetFungibility, XcmVersionedAssets, + XcmVersionedLocation, rocAh as descriptors, } from "@polkadot-api/descriptors" import { rocAhClient } from "@/api/clients" @@ -40,7 +40,7 @@ const roc: AssetInChain = { }, } -const wndInRocAh: Parameters[0] = { +const wndInRocAh: Parameters[0] = { parents: 2, interior: XcmV3Junctions.X1( XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Westend()), @@ -57,9 +57,9 @@ const wnd: AssetInChain = { fromAssetHubToForeign( XcmV3JunctionNetworkId.Westend(), 1000, - XcmVersionedAssets.V3([ + XcmVersionedAssets.V4([ { - id: XcmV3MultiassetAssetId.Concrete(wndInRocAh), + id: wndInRocAh, fun: XcmV3MultiassetFungibility.Fungible(amount), }, ]), diff --git a/src/api/wnd/ah.ts b/src/api/wnd/ah.ts index 302d6bc..309cffa 100644 --- a/src/api/wnd/ah.ts +++ b/src/api/wnd/ah.ts @@ -2,9 +2,9 @@ import { XcmV3Junction, XcmV3JunctionNetworkId, XcmV3Junctions, - XcmV3MultiassetAssetId, XcmV3MultiassetFungibility, XcmVersionedAssets, + XcmVersionedLocation, wndAssethub as descriptors, } from "@polkadot-api/descriptors" import { wndAhClient } from "@/api/clients" @@ -39,7 +39,7 @@ const wnd: AssetInChain = { }, } -const rocInWndAh: Parameters[0] = { +const rocInWndAh: Parameters[0] = { parents: 2, interior: XcmV3Junctions.X1( XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Rococo()), @@ -56,9 +56,9 @@ const roc: AssetInChain = { fromAssetHubToForeign( XcmV3JunctionNetworkId.Rococo(), 1000, - XcmVersionedAssets.V3([ + XcmVersionedAssets.V4([ { - id: XcmV3MultiassetAssetId.Concrete(rocInWndAh), + id: rocInWndAh, fun: XcmV3MultiassetFungibility.Fungible(amount), }, ]),