Skip to content

Commit

Permalink
feat: migrate to xcm v4
Browse files Browse the repository at this point in the history
  • Loading branch information
carlosala committed Aug 28, 2024
1 parent 0727e74 commit da101a1
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 67 deletions.
72 changes: 21 additions & 51 deletions src/api/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {
XcmV3Junction,
XcmV3JunctionNetworkId,
XcmV3Junctions,
XcmV3MultiassetAssetId,
XcmV3MultiassetFungibility,
XcmV3WeightLimit,
XcmVersionedAssets,
Expand All @@ -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),
},
])
Expand All @@ -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)),
}),
Expand All @@ -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,
Expand All @@ -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),
Expand All @@ -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<typeof dotAh>

export const watchAccoutFreeBalance =
Expand Down
8 changes: 4 additions & 4 deletions src/api/dot/ah.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
XcmV3Junction,
XcmV3JunctionNetworkId,
XcmV3Junctions,
XcmV3MultiassetAssetId,
XcmVersionedLocation,
dotAh,
} from "@polkadot-api/descriptors"
import { dotAhClient } from "@/api/clients"
Expand Down Expand Up @@ -37,7 +37,7 @@ const dot: AssetInChain = {
},
}

const ksmInDotAh: Parameters<typeof XcmV3MultiassetAssetId.Concrete>[0] = {
const ksmInDotAh: Parameters<typeof XcmVersionedLocation.V4>[0] = {
parents: 2,
interior: XcmV3Junctions.X1(
XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Kusama()),
Expand All @@ -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),
},
]),
Expand Down
8 changes: 4 additions & 4 deletions src/api/ksm/ah.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
XcmV3Junction,
XcmV3JunctionNetworkId,
XcmV3Junctions,
XcmV3MultiassetAssetId,
XcmVersionedLocation,
ksmAh,
} from "@polkadot-api/descriptors"
import { ksmAhClient } from "@/api/clients"
Expand Down Expand Up @@ -37,7 +37,7 @@ const ksm: AssetInChain = {
},
}

const dotInKsmAh: Parameters<typeof XcmV3MultiassetAssetId.Concrete>[0] = {
const dotInKsmAh: Parameters<typeof XcmVersionedLocation.V4>[0] = {
parents: 2,
interior: XcmV3Junctions.X1(
XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Polkadot()),
Expand All @@ -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),
},
]),
Expand Down
8 changes: 4 additions & 4 deletions src/api/roc/ah.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import {
XcmV3Junction,
XcmV3JunctionNetworkId,
XcmV3Junctions,
XcmV3MultiassetAssetId,
XcmV3MultiassetFungibility,
XcmVersionedAssets,
XcmVersionedLocation,
rocAh as descriptors,
} from "@polkadot-api/descriptors"
import { rocAhClient } from "@/api/clients"
Expand Down Expand Up @@ -40,7 +40,7 @@ const roc: AssetInChain = {
},
}

const wndInRocAh: Parameters<typeof XcmV3MultiassetAssetId.Concrete>[0] = {
const wndInRocAh: Parameters<typeof XcmVersionedLocation.V4>[0] = {
parents: 2,
interior: XcmV3Junctions.X1(
XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Westend()),
Expand All @@ -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),
},
]),
Expand Down
8 changes: 4 additions & 4 deletions src/api/wnd/ah.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import {
XcmV3Junction,
XcmV3JunctionNetworkId,
XcmV3Junctions,
XcmV3MultiassetAssetId,
XcmV3MultiassetFungibility,
XcmVersionedAssets,
XcmVersionedLocation,
wndAssethub as descriptors,
} from "@polkadot-api/descriptors"
import { wndAhClient } from "@/api/clients"
Expand Down Expand Up @@ -39,7 +39,7 @@ const wnd: AssetInChain = {
},
}

const rocInWndAh: Parameters<typeof XcmV3MultiassetAssetId.Concrete>[0] = {
const rocInWndAh: Parameters<typeof XcmVersionedLocation.V4>[0] = {
parents: 2,
interior: XcmV3Junctions.X1(
XcmV3Junction.GlobalConsensus(XcmV3JunctionNetworkId.Rococo()),
Expand All @@ -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),
},
]),
Expand Down

0 comments on commit da101a1

Please sign in to comment.