diff --git a/apps/playground/src/components/assets/AssetsForm.tsx b/apps/playground/src/components/assets/AssetsForm.tsx index 44bbaed8..07e145bb 100644 --- a/apps/playground/src/components/assets/AssetsForm.tsx +++ b/apps/playground/src/components/assets/AssetsForm.tsx @@ -47,15 +47,20 @@ const AssetsForm: FC = ({ onSubmit, loading }) => { funcVal === "DECIMALS" || funcVal == "HAS_SUPPORT" || funcVal === "BALANCE_FOREIGN" || - funcVal === "ASSET_BALANCE"; + funcVal === "ASSET_BALANCE" || + funcVal === "MAX_FOREIGN_TRANSFERABLE_AMOUNT"; const supportsCurrencyType = - funcVal === "BALANCE_FOREIGN" || funcVal === "ASSET_BALANCE"; + funcVal === "BALANCE_FOREIGN" || + funcVal === "ASSET_BALANCE" || + funcVal === "MAX_FOREIGN_TRANSFERABLE_AMOUNT"; const showAddressInput = funcVal === "BALANCE_FOREIGN" || funcVal === "BALANCE_NATIVE" || - funcVal === "ASSET_BALANCE"; + funcVal === "ASSET_BALANCE" || + funcVal === "MAX_NATIVE_TRANSFERABLE_AMOUNT" || + funcVal === "MAX_FOREIGN_TRANSFERABLE_AMOUNT"; const onSubmitInternal = (formValues: FormValues) => { const { func } = formValues; diff --git a/apps/playground/src/components/assets/AssetsQueries.tsx b/apps/playground/src/components/assets/AssetsQueries.tsx index 00f51963..8bc95eb2 100644 --- a/apps/playground/src/components/assets/AssetsQueries.tsx +++ b/apps/playground/src/components/assets/AssetsQueries.tsx @@ -8,6 +8,7 @@ import AssetsForm from "./AssetsForm"; import type { TCurrencyCore, TMultiLocation, + TNodeDotKsmWithRelayChains, TNodePolkadotKusama, } from "@paraspell/sdk"; import { @@ -94,6 +95,17 @@ const AssetsQueries = () => { node: node as TNodePolkadotKusama, currency: resolvedCurrency, }); + case "MAX_NATIVE_TRANSFERABLE_AMOUNT": + return Sdk.getMaxNativeTransferableAmount({ + address, + node: node as TNodeDotKsmWithRelayChains, + }); + case "MAX_FOREIGN_TRANSFERABLE_AMOUNT": + return Sdk.getMaxForeignTransferableAmount({ + address, + node: node as TNodePolkadotKusama, + currency: resolvedCurrency, + }); } }; @@ -129,6 +141,14 @@ const AssetsQueries = () => { return apiType === "PAPI" ? `/balance/${node}/asset-papi` : `/balance/${node}/asset`; + case "MAX_NATIVE_TRANSFERABLE_AMOUNT": + return apiType === "PAPI" + ? `/balance/${node}/max-native-transferable-amount-papi` + : `/balance/${node}/max-native-transferable-amount`; + case "MAX_FOREIGN_TRANSFERABLE_AMOUNT": + return apiType === "PAPI" + ? `/balance/${node}/max-foreign-transferable-amount-papi` + : `/balance/${node}/max-foreign-transferable-amount`; } }; @@ -161,7 +181,7 @@ const AssetsQueries = () => { : formValues, `${getEndpoint(formValues)}`, isBalanceQuery ? "POST" : "GET", - isBalanceQuery, + isBalanceQuery ); } else { return submitUsingSdk(formValues); diff --git a/apps/playground/src/consts.ts b/apps/playground/src/consts.ts index 969ff7a4..18510e3f 100644 --- a/apps/playground/src/consts.ts +++ b/apps/playground/src/consts.ts @@ -13,6 +13,8 @@ export const ASSET_QUERIES = [ "BALANCE_NATIVE", "BALANCE_FOREIGN", "ASSET_BALANCE", + "MAX_NATIVE_TRANSFERABLE_AMOUNT", + "MAX_FOREIGN_TRANSFERABLE_AMOUNT", ] as const; export const PALLETS_QUERIES = ["ALL_PALLETS", "DEFAULT_PALLET"] as const; diff --git a/apps/xcm-api/src/analytics/EventName.ts b/apps/xcm-api/src/analytics/EventName.ts index 0f154811..a82487f0 100644 --- a/apps/xcm-api/src/analytics/EventName.ts +++ b/apps/xcm-api/src/analytics/EventName.ts @@ -17,6 +17,8 @@ export enum EventName { GET_BALANCE_NATIVE = 'Get Balance Native', GET_BALANCE_NATIVE_PAPI = 'Get Balance Native Papi', GET_BALANCE_FOREIGN = 'Get Balance Foreign', + GET_MAX_NATIVE_TRANSFERABLE_AMOUNT = 'Get Max Native Transferable Amount', + GET_MAX_FOREIGN_TRANSFERABLE_AMOUNT = 'Get Max Foreign Transferable Amount', GENERATE_XCM_CALL = 'Generate XCM Call', GENERATE_XCM_CALL_BATCH = 'Generate XCM Call Batch', GENERATE_XCM_CALL_BATCH_PAPI = 'Generate XCM Call Batch Papi', diff --git a/apps/xcm-api/src/balance/balance.controller.ts b/apps/xcm-api/src/balance/balance.controller.ts index b0ee945d..64b00cd0 100644 --- a/apps/xcm-api/src/balance/balance.controller.ts +++ b/apps/xcm-api/src/balance/balance.controller.ts @@ -83,4 +83,80 @@ export class BalanceController { }); return this.balanceService.getAssetBalance(node, params); } + + @Post(':node/max-foreign-transferable-amount-papi') + getMaxForeignTransferableAmountPapi( + @Param('node') node: string, + @Body(new ZodValidationPipe(BalanceForeignDtoSchema)) + params: BalanceForeignDto, + @Req() req: Request, + ) { + this.analyticsService.track( + EventName.GET_MAX_FOREIGN_TRANSFERABLE_AMOUNT, + req, + { + node, + }, + ); + return this.balanceService.getMaxForeignTransferableAmount( + node, + params, + true, + ); + } + + @Post(':node/max-foreign-transferable-amount') + getMaxForeignTransferableAmount( + @Param('node') node: string, + @Body(new ZodValidationPipe(BalanceForeignDtoSchema)) + params: BalanceForeignDto, + @Req() req: Request, + ) { + this.analyticsService.track( + EventName.GET_MAX_FOREIGN_TRANSFERABLE_AMOUNT, + req, + { + node, + }, + ); + return this.balanceService.getMaxForeignTransferableAmount(node, params); + } + + @Post(':node/max-foreign-transferable-amount-papi') + getMaxNativeTransferableAmountPapi( + @Param('node') node: string, + @Body(new ZodValidationPipe(BalanceForeignDtoSchema)) + params: BalanceForeignDto, + @Req() req: Request, + ) { + this.analyticsService.track( + EventName.GET_MAX_FOREIGN_TRANSFERABLE_AMOUNT, + req, + { + node, + }, + ); + return this.balanceService.getMaxNativeTransferableAmount( + node, + params, + true, + ); + } + + @Post(':node/max-foreign-transferable-amount') + getMaxNativeTransferableAmount( + @Param('node') node: string, + @Body(new ZodValidationPipe(BalanceForeignDtoSchema)) + params: BalanceForeignDto, + @Req() req: Request, + ) { + this.analyticsService.track( + EventName.GET_MAX_FOREIGN_TRANSFERABLE_AMOUNT, + req, + { + node, + }, + ); + return this.balanceService.getMaxNativeTransferableAmount(node, params); + } } diff --git a/apps/xcm-api/src/balance/balance.service.ts b/apps/xcm-api/src/balance/balance.service.ts index 8a3db202..850cd2d1 100644 --- a/apps/xcm-api/src/balance/balance.service.ts +++ b/apps/xcm-api/src/balance/balance.service.ts @@ -94,4 +94,59 @@ export class BalanceService { else api.destroy(); return balance === null ? 'null' : balance.toString(); } + + async getMaxNativeTransferableAmount( + node: string, + { address }: BalanceNativeDto, + usePapi = false, + ) { + const nodeTyped = node as TNodeDotKsmWithRelayChains; + if (!NODES_WITH_RELAY_CHAINS_DOT_KSM.includes(nodeTyped)) { + throw new BadRequestException( + `Node ${node} is not valid. Check docs for valid nodes.`, + ); + } + + const Sdk = usePapi + ? await import('@paraspell/sdk/papi') + : await import('@paraspell/sdk'); + + const api = await Sdk.createApiInstanceForNode(nodeTyped); + const balance = await Sdk.getMaxNativeTransferableAmount({ + address, + node: nodeTyped, + api: api as ApiPromise & PolkadotClient, + }); + if ('disconnect' in api) await api.disconnect(); + else api.destroy(); + return balance; + } + + async getMaxForeignTransferableAmount( + node: string, + { address, currency }: BalanceForeignDto, + usePapi = false, + ) { + const nodeTyped = node as TNodePolkadotKusama; + if (!NODE_NAMES_DOT_KSM.includes(nodeTyped)) { + throw new BadRequestException( + `Node ${node} is not valid. Check docs for valid nodes.`, + ); + } + + const Sdk = usePapi + ? await import('@paraspell/sdk/papi') + : await import('@paraspell/sdk'); + + const api = await Sdk.createApiInstanceForNode(nodeTyped); + const balance = await Sdk.getMaxForeignTransferableAmount({ + address, + currency, + node: nodeTyped, + api: api as ApiPromise & PolkadotClient, + }); + if ('disconnect' in api) await api.disconnect(); + else api.destroy(); + return balance; + } } diff --git a/packages/sdk/scripts/assets/fetchAcalaAssets.ts b/packages/sdk/scripts/assets/fetchAcalaAssets.ts new file mode 100644 index 00000000..3af7ccb1 --- /dev/null +++ b/packages/sdk/scripts/assets/fetchAcalaAssets.ts @@ -0,0 +1,62 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import type { ApiPromise } from '@polkadot/api' +import type { TForeignAsset, TNativeAsset } from '../../src/types' + +const fetchAssets = async ( + api: ApiPromise, + query: string, + isNative: boolean +): Promise => { + const [module, section] = query.split('.') + const res = await api.query[module][section].entries() + + return res + .filter( + ([ + { + args: [era] + } + ]) => { + const hasNativeAssetId = Object.prototype.hasOwnProperty.call( + era.toHuman(), + 'NativeAssetId' + ) + return isNative ? hasNativeAssetId : !hasNativeAssetId + } + ) + .map( + ([ + { + args: [era] + }, + value + ]) => { + const { symbol, decimals, existentialDeposit, minimalBalance } = value.toHuman() as any + return { + assetId: Object.values(era.toHuman() ?? {})[0], + symbol, + decimals: +decimals, + existentialDeposit: minimalBalance ?? existentialDeposit + } + } + ) +} + +export const fetchAcalaNativeAssets = async ( + api: ApiPromise, + query: string +): Promise => { + return (await fetchAssets(api, query, true)).map(asset => ({ + symbol: asset.symbol, + decimals: asset.decimals, + existentialDeposit: asset.existentialDeposit + })) +} + +export const fetchAcalaForeignAssets = async ( + api: ApiPromise, + query: string +): Promise => { + return fetchAssets(api, query, false) +} diff --git a/packages/sdk/scripts/assets/fetchAssets.ts b/packages/sdk/scripts/assets/fetchAssets.ts index 5e034743..5e931a8c 100644 --- a/packages/sdk/scripts/assets/fetchAssets.ts +++ b/packages/sdk/scripts/assets/fetchAssets.ts @@ -19,39 +19,99 @@ import { fetchEthereumAssets } from './fetchEthereumAssets' import { addAliasesToDuplicateSymbols } from './addAliases' import { capitalizeMultiLocation, fetchOtherAssetsRegistry } from './fetchOtherAssetsRegistry' import { isNodeEvm } from './isNodeEvm' - -const fetchNativeAssets = async (api: ApiPromise): Promise => { +import { fetchBifrostForeignAssets, fetchBifrostNativeAssets } from './fetchBifrostAssets' +import { fetchOtherAssetsCentrifuge } from './fetchAssetsCentrifuge' +import { fetchExistentialDeposit } from './fetchEd' +import { fetchAcalaForeignAssets, fetchAcalaNativeAssets } from './fetchAcalaAssets' +import { getNativeAssetSymbol } from '../../src/pallets/assets' +import { fetchComposableAssets } from './fetchComposableAssets' +import { fetchPendulumForeignAssets } from './fetchPendulumAssets' + +const fetchNativeAssetsDefault = async (api: ApiPromise): Promise => { const propertiesRes = await api.rpc.system.properties() const json = propertiesRes.toHuman() const symbols = json.tokenSymbol as string[] const decimals = json.tokenDecimals as string[] return symbols.map((symbol, i) => ({ symbol, - decimals: decimals[i] ? +decimals[i] : +decimals[0] + decimals: decimals[i] ? +decimals[i] : +decimals[0], + existentialDeposit: fetchExistentialDeposit(api) ?? '0' })) } -const fetchOtherAssets = async (api: ApiPromise, query: string): Promise => { +const fetchNativeAssets = async ( + node: TNodePolkadotKusama, + api: ApiPromise, + query: string +): Promise => { + let nativeAssets: TNativeAsset[] = [] + + if (node === 'Curio') { + nativeAssets = await fetchNativeAssetsCurio(api, query) + } + + if (node === 'BifrostPolkadot' || node === 'BifrostKusama') { + nativeAssets = await fetchBifrostNativeAssets(api, query) + } + + if (node === 'Acala' || node === 'Karura') { + nativeAssets = await fetchAcalaNativeAssets(api, query) + } + + const transformed = nativeAssets.length > 0 ? nativeAssets : await fetchNativeAssetsDefault(api) + + const nativeSymbol = getNativeAssetSymbol(node) + + const reordered = transformed.sort((a, b) => { + if (a.symbol === nativeSymbol) return -1 + if (b.symbol === nativeSymbol) return 1 + return 0 + }) + + return reordered.map(asset => ({ + ...asset, + existentialDeposit: asset.existentialDeposit?.replace(/,/g, '') + })) +} + +const fetchOtherAssetsDefault = async ( + node: TNodePolkadotKusama, + api: ApiPromise, + query: string +): Promise => { const [module, section] = query.split('.') + const res = await api.query[module][section].entries() - return res - .map( - ([ + const results = await Promise.all( + res.map( + async ([ { args: [era] }, value ]) => { - const { symbol, decimals } = value.toHuman() as any + const valueHuman = value.toHuman() as any + const resDetail = api.query[module] ? await api.query[module].asset(era) : undefined + const resDetail2 = + node === 'Basilisk' ? await api.query.assetRegistry.assets(era) : undefined + return { assetId: era.toString(), - symbol, - decimals: +decimals + symbol: valueHuman.symbol, + decimals: +valueHuman.decimals, + existentialDeposit: + valueHuman.existentialDeposit ?? + valueHuman.minimalBalance ?? + (resDetail?.toHuman() as any)?.existentialDeposit ?? + (resDetail?.toHuman() as any)?.minBalance ?? + (resDetail?.toHuman() as any)?.minimalBalance ?? + (resDetail2?.toHuman() as any)?.existentialDeposit } } ) - .filter(asset => asset.symbol !== null) + ) + return results.filter(asset => asset.symbol !== null) } const fetchNativeAssetsCurio = async (api: ApiPromise, query: string) => { @@ -65,18 +125,20 @@ const fetchNativeAssetsCurio = async (api: ApiPromise, query: string) => { }, value ]) => { - const { symbol, decimals } = value.toHuman() as any + const { symbol, decimals, existentialDeposit } = value.toHuman() as any return { assetId: era.toHuman(), symbol, - decimals: +decimals + decimals: +decimals, + existentialDeposit } } ) .filter(asset => Object.keys(asset.assetId ?? {})[0] === 'Token') .map(asset => ({ symbol: asset.symbol, - decimals: asset.decimals + decimals: asset.decimals, + existentialDeposit: asset.existentialDeposit })) } @@ -91,11 +153,12 @@ const fetchOtherAssetsCurio = async (api: ApiPromise, query: string) => { }, value ]) => { - const { symbol, decimals } = value.toHuman() as any + const { symbol, decimals, existentialDeposit } = value.toHuman() as any return { assetId: era.toHuman(), symbol, - decimals: +decimals + decimals: +decimals, + existentialDeposit } } ) @@ -103,7 +166,8 @@ const fetchOtherAssetsCurio = async (api: ApiPromise, query: string) => { .map(asset => ({ assetId: Object.values(asset.assetId ?? {})[0], symbol: asset.symbol, - decimals: asset.decimals + decimals: asset.decimals, + existentialDeposit: asset.existentialDeposit })) } @@ -125,217 +189,176 @@ const fetchOtherAssetsAmplitude = async (api: ApiPromise, query: string) => { }, value ]) => { - const { symbol, decimals } = value.toHuman() as any + const { symbol, decimals, existentialDeposit } = value.toHuman() as any return { assetId: Object.values(era.toHuman() ?? {})[0].replaceAll(',', ''), symbol, - decimals: +decimals + decimals: +decimals, + existentialDeposit } } ) } -const fetchOtherAssetsInnerType = async (api: ApiPromise, query: string) => { - const [module, section] = query.split('.') - const symbolsResponse = await api.query[module][section].entries() - const assetsWithoutDecimals = symbolsResponse.map( - ([ - { - args: [era] - }, - value - ]) => { - const { inner: symbol } = value.toHuman() as any - const assetId = era.toHuman() as string - const numberAssetId = assetId.replace(/[,]/g, '') - return { - assetId: numberAssetId, - symbol - } - } - ) - const decimalsResponse = await api.query[module].assetDecimals.entries() - const assetsWithoutSymbols = decimalsResponse.map( - ([ - { - args: [era] - }, - value - ]) => { - const assetId = era.toHuman() as string - const numberAssetId = assetId.replace(/[,]/g, '') - return { assetId: numberAssetId, decimals: +(value.toHuman() as number) } - } - ) - - return assetsWithoutDecimals - .map(assetWithoutDecimals => { - const matchingAsset = assetsWithoutSymbols.find( - assetWithoutSymbols => assetWithoutSymbols.assetId === assetWithoutDecimals.assetId - ) - return matchingAsset ? { ...assetWithoutDecimals, decimals: matchingAsset.decimals } : null - }) - .filter(asset => asset !== null) as unknown as TForeignAsset[] +const fetchNativeAsset = async (api: ApiPromise): Promise => { + const propertiesRes = await api.rpc.system.properties() + const json = propertiesRes.toHuman() + const symbols = json.tokenSymbol as string[] + return symbols[0] } -const fetchAssetsType2 = async (api: ApiPromise, query: string): Promise> => { - const [module, section] = query.split('.') - const res = await api.query[module][section].entries() - - const nativeAssets = res - .filter( - ([ - { - args: [era] - } - ]) => Object.prototype.hasOwnProperty.call(era.toHuman(), 'NativeAssetId') - ) - .map(([, value]) => { - const { symbol, decimals } = value.toHuman() as any - return { symbol, decimals: +decimals } - }) +const fetchMultiLocations = async (api: ApiPromise): Promise => { + const res = await api.query.foreignAssets.metadata.entries() - const otherAssets = res - .filter( - ([ - { - args: [era] - } - ]) => !Object.prototype.hasOwnProperty.call(era.toHuman(), 'NativeAssetId') - ) - .map( - ([ + const results = await Promise.all( + res.map( + async ([ { args: [era] }, value ]) => { + const multiLocation = era.toJSON() ?? {} + const resDetail = await api.query.foreignAssets.asset(era) const { symbol, decimals } = value.toHuman() as any + return { - assetId: Object.values(era.toHuman() ?? {})[0], symbol, - decimals: +decimals + decimals: +decimals, + multiLocation: multiLocation as object, + existentialDeposit: (resDetail.toHuman() as any).minBalance.replace(/,/g, '') } } ) + ) - return { nativeAssets, otherAssets } + return results } -const fetchNativeAsset = async (api: ApiPromise): Promise => { - const propertiesRes = await api.rpc.system.properties() - const json = propertiesRes.toHuman() - const symbols = json.tokenSymbol as string[] - return symbols[0] -} +const fetchOtherAssets = async ( + node: TNodePolkadotKusama, + api: ApiPromise, + query: string +): Promise => { + let otherAssets: TForeignAsset[] = [] + if (node === 'Zeitgeist' || node === 'Acala' || node === 'Karura') { + otherAssets = await fetchAcalaForeignAssets(api, query) + } -const fetchMultiLocations = async (api: ApiPromise): Promise => { - const res = await api.query.foreignAssets.metadata.entries() - return res.map( - ([ - { - args: [era] - }, - value - ]) => { - const multiLocation = era.toJSON() ?? {} - const { symbol, decimals } = value.toHuman() as any - return { - symbol, - decimals: +decimals, - multiLocation: multiLocation as object - } - } - ) + if (node === 'Amplitude') { + otherAssets = await fetchOtherAssetsAmplitude(api, query) + } + + if (node === 'Curio') { + otherAssets = await fetchOtherAssetsCurio(api, query) + } + + if (node === 'Picasso' || node === 'ComposableFinance') { + otherAssets = await fetchComposableAssets(api, query) + } + + if (node === 'BifrostPolkadot' || node === 'BifrostKusama') { + otherAssets = await fetchBifrostForeignAssets(api, query) + } + + if (node === 'Centrifuge' || node === 'Altair') { + otherAssets = await fetchOtherAssetsCentrifuge(api, query) + } + + if (node === 'Pendulum') { + otherAssets = await fetchPendulumForeignAssets(api, query) + } + + return otherAssets.length > 0 ? otherAssets : fetchOtherAssetsDefault(node, api, query) } const fetchNodeAssets = async ( node: TNodePolkadotKusama, api: ApiPromise, - query: string | null + query: string[] ): Promise> => { const nativeAssetSymbol = await fetchNativeAsset(api) - if (node === 'Zeitgeist') { - const nativeAssets = (await fetchNativeAssets(api)) ?? [] - const { otherAssets } = (await fetchAssetsType2(api, query!)) ?? [] - await api.disconnect() - return { - nativeAssets, - otherAssets, - nativeAssetSymbol - } - } - if (node === 'Amplitude') { - const nativeAssets = (await fetchNativeAssets(api)) ?? [] - const otherAssets = query ? await fetchOtherAssetsAmplitude(api, query) : [] - await api.disconnect() - return { - nativeAssets, - otherAssets, - nativeAssetSymbol - } - } + const hasGlobal = query.includes(GLOBAL) + const queryPath = hasGlobal ? query[1] : query[0] - // Different format of data - if (node === 'Curio') { - const nativeAssets = query ? await fetchNativeAssetsCurio(api, query) : [] - const otherAssets = query ? await fetchOtherAssetsCurio(api, query) : [] - await api.disconnect() - return { - nativeAssets, - otherAssets, - nativeAssetSymbol - } - } + let globalOtherAssets: TForeignAsset[] = [] + let queryOtherAssets: TForeignAsset[] = [] - if (node === 'Picasso' || node === 'ComposableFinance') { - const nativeAssets = (await fetchNativeAssets(api)) ?? [] - const otherAssets = query ? await fetchOtherAssetsInnerType(api, query) : [] - await api.disconnect() - return { - nativeAssets, - otherAssets, - nativeAssetSymbol - } + if (hasGlobal) { + globalOtherAssets = await fetchOtherAssetsRegistry(node) } - const nativeAssets = (await fetchNativeAssets(api)) ?? [] + if (queryPath) { + queryOtherAssets = await fetchOtherAssets(node, api, queryPath) + } - let otherAssets: TForeignAsset[] + let mergedAssets = globalOtherAssets.map(globalAsset => { + const matchingQueryAsset = queryOtherAssets.find( + queryAsset => queryAsset.assetId === globalAsset.assetId + ) + return matchingQueryAsset + ? { + ...globalAsset, + existentialDeposit: matchingQueryAsset.existentialDeposit?.replace(/,/g, '') + } + : globalAsset + }) - try { - otherAssets = - query === GLOBAL - ? await fetchOtherAssetsRegistry(node) - : typeof query === 'string' - ? await fetchOtherAssets(api, query) - : [] - } catch (e) { - console.warn(`Failed to fetch other assets for ${node}: ${e.message}`) - otherAssets = [] + if (mergedAssets.length === 0 && queryOtherAssets.length > 0) { + mergedAssets.push( + ...queryOtherAssets.map(asset => ({ + ...asset, + existentialDeposit: asset.existentialDeposit?.replace(/,/g, '') + })) + ) } + const nativeAssets = (await fetchNativeAssets(node, api, queryPath)) ?? [] + const isAssetHub = node === 'AssetHubPolkadot' || node === 'AssetHubKusama' if (isAssetHub) { const foreignAssets = await fetchMultiLocations(api) - const transformedForeignAssets = foreignAssets.map(asset => { - return { - ...asset, - multiLocation: asset.multiLocation - ? (capitalizeMultiLocation(asset.multiLocation) as TMultiLocation) - : undefined - } as TForeignAsset - }) - otherAssets.push(...transformedForeignAssets) + + const transformedForeignAssets = foreignAssets.map(asset => ({ + ...asset, + multiLocation: asset.multiLocation + ? (capitalizeMultiLocation(asset.multiLocation) as TMultiLocation) + : undefined + })) as TForeignAsset[] + + // Add transformed foreign assets to the merged list + mergedAssets.push(...transformedForeignAssets) + + // Check for unmatched assets by ID and attempt to match by symbol + const unmatchedAssets = queryOtherAssets.filter( + queryAsset => !mergedAssets.some(asset => asset.assetId === queryAsset.assetId) + ) + + if (unmatchedAssets.length > 0) { + const symbolMatches = unmatchedAssets.filter(queryAsset => + mergedAssets.some(asset => asset.symbol === queryAsset.symbol) + ) + + mergedAssets.push( + ...symbolMatches.map(asset => ({ + ...asset, + existentialDeposit: asset.existentialDeposit?.replace(/,/g, '') + })) + ) + } + + mergedAssets = mergedAssets.filter(asset => asset.multiLocation || asset.xcmInterior) } + mergedAssets = mergedAssets.filter(asset => asset.assetId !== 'Native') + await api.disconnect() return { nativeAssets, - otherAssets, + otherAssets: mergedAssets, nativeAssetSymbol, isEVM: isNodeEvm(api) } @@ -378,7 +401,7 @@ export const fetchAllNodesAssets = async (assetsMapJson: any) => { const combinedOtherAssets = [...(newData?.otherAssets ?? []), ...manuallyAddedOtherAssets] output[nodeName] = { - relayChainAssetSymbol: getNode(nodeName).type === 'polkadot' ? 'DOT' : 'KSM', + relayChainAssetSymbol: getNode('Acala').type === 'polkadot' ? 'DOT' : 'KSM', nativeAssetSymbol: newData?.nativeAssetSymbol ?? '', isEVM: newData?.isEVM ?? false, nativeAssets: combinedNativeAssets, diff --git a/packages/sdk/scripts/assets/fetchAssetsCentrifuge.ts b/packages/sdk/scripts/assets/fetchAssetsCentrifuge.ts new file mode 100644 index 00000000..70a019a7 --- /dev/null +++ b/packages/sdk/scripts/assets/fetchAssetsCentrifuge.ts @@ -0,0 +1,38 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +/* eslint-disable @typescript-eslint/no-unsafe-call */ +import type { ApiPromise } from '@polkadot/api' + +export const fetchOtherAssetsCentrifuge = async (api: ApiPromise, query: string) => { + const [module, section] = query.split('.') + const res = await api.query[module][section].entries() + return res + .filter( + ([ + { + args: [era] + } + ]) => era.toHuman() !== 'Native' + ) + .map( + ([ + { + args: [era] + }, + value + ]) => { + const { symbol, decimals, existentialDeposit } = value.toHuman() as any + const eraObj = era as any + return { + assetId: + eraObj.type === 'Tranche' + ? Object.values(era.toHuman() ?? {})[0][0].replaceAll(',', '') + : Object.values(era.toHuman() ?? {})[0].replaceAll(',', ''), + symbol, + decimals: +decimals, + existentialDeposit: existentialDeposit + } + } + ) +} diff --git a/packages/sdk/scripts/assets/fetchBifrostAssets.ts b/packages/sdk/scripts/assets/fetchBifrostAssets.ts new file mode 100644 index 00000000..475e2927 --- /dev/null +++ b/packages/sdk/scripts/assets/fetchBifrostAssets.ts @@ -0,0 +1,73 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import type { ApiPromise } from '@polkadot/api' +import type { TForeignAsset, TNativeAsset } from '../../src/types' +import type { StorageKey } from '@polkadot/types' +import type { AnyTuple, Codec } from '@polkadot/types/types' + +export const fetchBifrostNativeAssets = async ( + api: ApiPromise, + query: string +): Promise => { + return fetchBifrostAssets(api, query).then(({ nativeAssets }) => nativeAssets) +} + +export const fetchBifrostForeignAssets = async ( + api: ApiPromise, + query: string +): Promise => { + return fetchBifrostAssets(api, query).then(({ otherAssets }) => otherAssets) +} + +const fetchBifrostAssets = async ( + api: ApiPromise, + query: string +): Promise<{ + nativeAssets: TNativeAsset[] + otherAssets: TForeignAsset[] +}> => { + const [module, section] = query.split('.') + const res = await api.query[module][section].entries() + + const filterAssets = (tokenTypes: string[]) => + res.filter( + ([ + { + args: [era] + } + ]) => { + const tokenType = Object.keys(era.toHuman() ?? {})[0].toLowerCase() + return tokenTypes.includes(tokenType) + } + ) + + const mapAssets = (assets: [StorageKey, Codec][], isNative: boolean) => + assets.map(([_key, value]) => { + const val = value.toHuman() as any + + return isNative + ? { symbol: val.symbol, decimals: +val.decimals, existentialDeposit: val.minimalBalance } + : { + assetId: Object.values(_key.args[0].toHuman() ?? {})[0], + symbol: val.symbol, + decimals: +val.decimals, + existentialDeposit: val.minimalBalance + } + }) + + const nativeAssets = mapAssets( + filterAssets(['token', 'vtoken', 'native']), + true + ) as TNativeAsset[] + + const otherAssets = mapAssets( + filterAssets(['token2', 'vtoken2', 'vstoken2']), + false + ) as TForeignAsset[] + + return { + nativeAssets, + otherAssets + } +} diff --git a/packages/sdk/scripts/assets/fetchComposableAssets.ts b/packages/sdk/scripts/assets/fetchComposableAssets.ts new file mode 100644 index 00000000..8eefba31 --- /dev/null +++ b/packages/sdk/scripts/assets/fetchComposableAssets.ts @@ -0,0 +1,42 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import type { ApiPromise } from '@polkadot/api' +import type { TForeignAsset } from '../../src/types' + +export const fetchComposableAssets = async ( + api: ApiPromise, + query: string +): Promise => { + const [module, section] = query.split('.') + const symbolsResponse = await api.query[module][section].entries() + + const assets = await Promise.all( + symbolsResponse.map( + async ([ + { + args: [era] + }, + value + ]) => { + const { inner: symbol } = value.toHuman() as any + const assetId = era.toHuman() as string + const numberAssetId = assetId.replace(/[,]/g, '') + + const decimals = await api.query[module].assetDecimals(era) + const existentialDeposit = await api.query[module].existentialDeposit(era) + + return { + assetId: numberAssetId, + symbol, + decimals: +decimals, + existentialDeposit: existentialDeposit.toHuman() as string + } + } + ) + ) + + console.log(`Fetched ${assets.length} assets from ${module}.${section}`) + console.log(assets) + + return assets +} diff --git a/packages/sdk/scripts/assets/fetchEd.ts b/packages/sdk/scripts/assets/fetchEd.ts new file mode 100644 index 00000000..19c6157e --- /dev/null +++ b/packages/sdk/scripts/assets/fetchEd.ts @@ -0,0 +1,6 @@ +import type { ApiPromise } from '@polkadot/api' + +export const fetchExistentialDeposit = (api: ApiPromise): string | null => { + const balances = api.consts.balances + return balances !== undefined ? balances.existentialDeposit.toString() : null +} diff --git a/packages/sdk/scripts/assets/fetchEthereumAssets.ts b/packages/sdk/scripts/assets/fetchEthereumAssets.ts index 0572cba8..3e1a8690 100644 --- a/packages/sdk/scripts/assets/fetchEthereumAssets.ts +++ b/packages/sdk/scripts/assets/fetchEthereumAssets.ts @@ -35,11 +35,6 @@ export const fetchEthereumAssets = async (): Promise => { SyntaxKind.ArrayLiteralExpression ) - // remove property minimumTransferAmount from each token object - tokenArray.forEachChild(token => { - token.getLastChildByKindOrThrow(SyntaxKind.PropertyAssignment).remove() - }) - const assets: TForeignAsset[] = [] tokenArray.forEachChild(token => { @@ -54,9 +49,17 @@ export const fetchEthereumAssets = async (): Promise => { .getFirstChildByKindOrThrow(SyntaxKind.StringLiteral) .getText() + const ed = item + .getChildAtIndexIfKindOrThrow(4, SyntaxKind.PropertyAssignment) + .getFirstChildByKindOrThrow(SyntaxKind.BigIntLiteral) + .getText() + + const edTransformed = ed.replace(/_/g, '').replace('n', '') + assets.push({ symbol: JSON.parse(symbol), assetId: JSON.parse(assetId), + existentialDeposit: edTransformed.toString(), multiLocation: { parents: 2, interior: { diff --git a/packages/sdk/scripts/assets/fetchPendulumAssets.ts b/packages/sdk/scripts/assets/fetchPendulumAssets.ts new file mode 100644 index 00000000..718dd841 --- /dev/null +++ b/packages/sdk/scripts/assets/fetchPendulumAssets.ts @@ -0,0 +1,39 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import type { ApiPromise } from '@polkadot/api' +import type { TForeignAsset } from '../../src/types' + +export const fetchPendulumForeignAssets = async ( + api: ApiPromise, + query: string +): Promise => { + const [module, section] = query.split('.') + const res = await api.query[module][section].entries() + + return res + .filter( + ([ + { + args: [era] + } + ]) => { + return Object.prototype.hasOwnProperty.call(era.toHuman(), 'XCM') + } + ) + .map( + ([ + { + args: [era] + }, + value + ]) => { + const { symbol, decimals, existentialDeposit } = value.toHuman() as any + return { + assetId: Object.values(era.toHuman() ?? {})[0], + symbol, + decimals: +decimals, + existentialDeposit: existentialDeposit + } + } + ) +} diff --git a/packages/sdk/scripts/assets/nodeToQueryMap.ts b/packages/sdk/scripts/assets/nodeToQueryMap.ts index dde7cf97..8208f8c7 100644 --- a/packages/sdk/scripts/assets/nodeToQueryMap.ts +++ b/packages/sdk/scripts/assets/nodeToQueryMap.ts @@ -2,65 +2,65 @@ import type { TNode } from '../../src/types' export const GLOBAL = 'GLOBAL_XCM_REGISTRY' -export const nodeToQuery: Record = { +export const nodeToQuery: Record = { // Chain state query: .
for assets metadata // Or GLOBAL flag to use global XCM registry - Acala: GLOBAL, - Astar: GLOBAL, - BifrostPolkadot: GLOBAL, - Bitgreen: null, // No assets metadata query - Centrifuge: GLOBAL, - ComposableFinance: 'assetsRegistry.assetSymbol', - Darwinia: GLOBAL, - Hydration: GLOBAL, - Interlay: GLOBAL, - Litentry: GLOBAL, - Moonbeam: GLOBAL, - Parallel: GLOBAL, - AssetHubPolkadot: GLOBAL, - Altair: GLOBAL, - Amplitude: 'assetRegistry.metadata', - Bajun: GLOBAL, - Basilisk: GLOBAL, - BifrostKusama: GLOBAL, - Calamari: GLOBAL, - Crab: 'assets.metadata', - CrustShadow: 'assets.metadata', - Encointer: null, // No assets metadata query - Imbue: GLOBAL, - InvArchTinker: null, // Assets query returns empty array - Karura: GLOBAL, - Kintsugi: GLOBAL, - Moonriver: GLOBAL, - ParallelHeiko: GLOBAL, - Picasso: 'assetsRegistry.assetSymbol', - Quartz: GLOBAL, - RobonomicsKusama: GLOBAL, - RobonomicsPolkadot: 'assets.metadata', - PeopleKusama: null, // Does not support ParaToPara transfers - PeoplePolkadot: null, // Does not support ParaToPara transfers - Shiden: GLOBAL, - AssetHubKusama: GLOBAL, - Turing: GLOBAL, - Unique: GLOBAL, - Crust: 'assets.metadata', - Manta: 'assets.metadata', - Nodle: GLOBAL, - NeuroWeb: 'assets.metadata', - Pendulum: GLOBAL, - Zeitgeist: 'assetRegistry.metadata', - Collectives: null, - Phala: GLOBAL, - Khala: GLOBAL, - CoretimeKusama: null, - CoretimePolkadot: null, - Subsocial: null, // No assets metadata query - KiltSpiritnet: null, // No assets metadata query - Curio: 'assetRegistry.metadata', - BridgeHubPolkadot: null, - BridgeHubKusama: null, - Mythos: null, // No assets metadata query - Peaq: 'assets.metadata', - Polimec: 'foreignAssets.metadata', - Ethereum: null + Acala: [GLOBAL, 'assetRegistry.assetMetadatas'], + Astar: [GLOBAL, 'assets.metadata'], + BifrostPolkadot: [GLOBAL, 'assetRegistry.currencyMetadatas'], + Bitgreen: [], // No assets metadata query + Centrifuge: [GLOBAL, 'ormlAssetRegistry.metadata'], + ComposableFinance: ['assetsRegistry.assetSymbol'], + Darwinia: [GLOBAL, 'assets.metadata'], + Hydration: [GLOBAL, 'assetRegistry.assets'], + Interlay: [GLOBAL, 'assetRegistry.metadata'], // !!! PROBLEM native assets eds + Litentry: [GLOBAL, 'assets.metadata'], + Moonbeam: [GLOBAL, 'assets.metadata'], + Parallel: [GLOBAL, 'assets.metadata'], + AssetHubPolkadot: [GLOBAL, 'assets.metadata'], + Altair: [GLOBAL, 'ormlAssetRegistry.metadata'], + Amplitude: ['assetRegistry.metadata'], + Bajun: [GLOBAL, 'assets.metadata'], + Basilisk: [GLOBAL, 'assetRegistry.assetMetadataMap'], + BifrostKusama: [GLOBAL, 'assetRegistry.currencyMetadatas'], + Calamari: [GLOBAL, 'assets.metadata'], + Crab: ['assets.metadata'], + CrustShadow: ['assets.metadata'], + Encointer: [], // No assets metadata query + Imbue: [], + InvArchTinker: [], // Assets query returns empty array + Karura: [GLOBAL, 'assetRegistry.assetMetadatas'], + Kintsugi: [GLOBAL, 'assetRegistry.metadata'], // !!! PROBLEM native assets eds + Moonriver: [GLOBAL, 'assets.metadata'], + ParallelHeiko: [GLOBAL, 'assets.metadata'], + Picasso: ['assetsRegistry.assetSymbol'], + Quartz: [], + RobonomicsKusama: ['assets.metadata'], + RobonomicsPolkadot: ['assets.metadata'], + PeopleKusama: [], // Does not support ParaToPara transfers + PeoplePolkadot: [], // Does not support ParaToPara transfers + Shiden: [GLOBAL, 'assets.metadata'], + AssetHubKusama: [GLOBAL, 'assets.metadata'], + Turing: [GLOBAL, 'assetRegistry.metadata'], + Unique: [], + Crust: ['assets.metadata'], + Manta: ['assets.metadata'], + Nodle: [], + NeuroWeb: ['assets.metadata'], + Pendulum: [GLOBAL, 'assetRegistry.metadata'], + Zeitgeist: ['assetRegistry.metadata'], + Collectives: [], + Phala: [GLOBAL, 'assets.metadata'], + Khala: [GLOBAL, 'assets.metadata'], + CoretimeKusama: [], + CoretimePolkadot: [], + Subsocial: [], // No assets metadata query + KiltSpiritnet: [], // No assets metadata query + Curio: ['assetRegistry.metadata'], + BridgeHubPolkadot: [], + BridgeHubKusama: [], + Mythos: [], // No assets metadata query + Peaq: ['assets.metadata'], + Polimec: ['foreignAssets.metadata'], + Ethereum: [] } diff --git a/packages/sdk/scripts/eds/fetchEds.ts b/packages/sdk/scripts/eds/fetchEds.ts deleted file mode 100644 index 8a0655f9..00000000 --- a/packages/sdk/scripts/eds/fetchEds.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type { ApiPromise } from '@polkadot/api' -import { NODES_WITH_RELAY_CHAINS_DOT_KSM } from '../../src/maps/consts' -import type { TEdJsonMap } from '../../src/types' -import { fetchTryMultipleProvidersWithTimeout } from '../scriptUtils' -import { createApiInstanceForNode } from '../../src/pjs' - -const fetchExistentialDeposit = (api: ApiPromise): string | null => { - const balances = api.consts.balances - return balances !== undefined ? balances.existentialDeposit.toString() : null -} - -export const fetchAllExistentialDeposits = async (assetsMapJson: unknown) => { - const output = JSON.parse(JSON.stringify(assetsMapJson)) as TEdJsonMap - for (const node of NODES_WITH_RELAY_CHAINS_DOT_KSM) { - console.log(`Fetching existential deposits for ${node}...`) - - let newData: string | null - if (node === 'Polkadot' || node === 'Kusama') { - const api = await createApiInstanceForNode(node) - newData = fetchExistentialDeposit(api) - } else { - newData = await fetchTryMultipleProvidersWithTimeout(node, api => - fetchExistentialDeposit(api) - ) - } - - const oldData = Object.prototype.hasOwnProperty.call(output, node) ? output[node] : null - - output[node] = newData ?? oldData - } - return output -} diff --git a/packages/sdk/scripts/eds/updateEds.ts b/packages/sdk/scripts/eds/updateEds.ts deleted file mode 100644 index 4b5eeda2..00000000 --- a/packages/sdk/scripts/eds/updateEds.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { checkForNodeJsEnvironment, handleDataFetching } from '../scriptUtils' -import { fetchAllExistentialDeposits } from './fetchEds' - -const JSON_FILE_PATH = './src/maps/existential-deposits.json' - -void (async () => { - checkForNodeJsEnvironment() - await handleDataFetching( - JSON_FILE_PATH, - fetchAllExistentialDeposits, - 'Successfuly updated existential deposits.' - ) -})() diff --git a/packages/sdk/scripts/scriptUtils.ts b/packages/sdk/scripts/scriptUtils.ts index 65b3d074..e62a6e5c 100644 --- a/packages/sdk/scripts/scriptUtils.ts +++ b/packages/sdk/scripts/scriptUtils.ts @@ -2,7 +2,7 @@ import * as fs from 'fs' import { ApiPromise, WsProvider } from '@polkadot/api' -import { type TNodePolkadotKusama } from '../src/types' +import type { TNodeDotKsmWithRelayChains } from '../src/types' import { getNodeProvider, getNodeProviders } from '../src/nodes/config' export const readJsonOrReturnEmptyObject = (path: string) => { @@ -21,7 +21,7 @@ export const checkForNodeJsEnvironment = () => { } export const fetchTryMultipleProviders = ( - node: TNodePolkadotKusama, + node: TNodeDotKsmWithRelayChains, fetcher: (wsUrl: string) => T ): T | null => { const providers = (() => { @@ -73,7 +73,7 @@ export const fetchWithTimeout = async ( } export const fetchTryMultipleProvidersWithTimeout = async ( - node: TNodePolkadotKusama, + node: TNodeDotKsmWithRelayChains, fetcher: (api: ApiPromise) => T ) => { return fetchTryMultipleProviders(node, async wsUrl => { diff --git a/packages/sdk/src/maps/assets.json b/packages/sdk/src/maps/assets.json index 36a1dcc9..83073663 100644 --- a/packages/sdk/src/maps/assets.json +++ b/packages/sdk/src/maps/assets.json @@ -6,7 +6,8 @@ "nativeAssets": [ { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "10000000000" } ], "otherAssets": [] @@ -18,7 +19,8 @@ "nativeAssets": [ { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "333333333" } ], "otherAssets": [] @@ -30,56 +32,28 @@ "nativeAssets": [ { "symbol": "PLMC", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" } ], "otherAssets": [ { "assetId": "10", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" }, { "assetId": "1984", "symbol": "USDt", "decimals": 6, - "multiLocation": { - "parents": 1, - "interior": { - "X3": [ - { - "Parachain": 1000 - }, - { - "PalletInstance": 50 - }, - { - "GeneralIndex": 1984 - } - ] - } - } + "existentialDeposit": "70000" }, { "assetId": "1337", "symbol": "USDC", "decimals": 6, - "multiLocation": { - "parents": 1, - "interior": { - "X3": [ - { - "Parachain": 1000 - }, - { - "PalletInstance": 50 - }, - { - "GeneralIndex": 1337 - } - ] - } - } + "existentialDeposit": "70000" } ] }, @@ -90,19 +64,33 @@ "nativeAssets": [ { "symbol": "ACA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" }, { - "symbol": "AUSD", - "decimals": 12 + "symbol": "aSEED", + "decimals": 12, + "existentialDeposit": "100000000000" }, { - "symbol": "DOT", - "decimals": 10 + "symbol": "TAP", + "decimals": 12, + "existentialDeposit": "1000000000000" + }, + { + "symbol": "LcDOT", + "decimals": 10, + "existentialDeposit": "100000000" }, { "symbol": "LDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "500000000" + }, + { + "symbol": "DOT", + "decimals": 10, + "existentialDeposit": "100000000" } ], "otherAssets": [ @@ -125,7 +113,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "12", @@ -146,7 +135,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "13", @@ -167,7 +157,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "assetId": "6", @@ -188,7 +179,8 @@ } ] } - } + }, + "existentialDeposit": "500000000000000" }, { "assetId": "5", @@ -209,7 +201,8 @@ } ] } - } + }, + "existentialDeposit": "3000" }, { "assetId": "0", @@ -227,7 +220,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "2", @@ -240,7 +234,8 @@ "Parachain": 2006 } } - } + }, + "existentialDeposit": "100000000000000000" }, { "assetId": "11", @@ -253,7 +248,8 @@ "Parachain": 2008 } } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "8", @@ -274,7 +270,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "assetId": "7", @@ -287,7 +284,8 @@ "Parachain": 2011 } } - } + }, + "existentialDeposit": "1000000000" }, { "assetId": "1", @@ -308,7 +306,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "15", @@ -329,7 +328,8 @@ } ] } - } + }, + "existentialDeposit": "1346900000000000000" }, { "assetId": "3", @@ -350,7 +350,8 @@ } ] } - } + }, + "existentialDeposit": "100" }, { "assetId": "4", @@ -371,7 +372,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "assetId": "17", @@ -389,7 +391,8 @@ } ] } - } + }, + "existentialDeposit": "78438200000000" }, { "assetId": "9", @@ -402,7 +405,8 @@ "Parachain": 2035 } } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "10", @@ -415,7 +419,8 @@ "Parachain": 2037 } } - } + }, + "existentialDeposit": "1250000000000000000" }, { "assetId": "16", @@ -428,7 +433,8 @@ "Parachain": 2040 } } - } + }, + "existentialDeposit": "3202800000000" } ] }, @@ -439,19 +445,21 @@ "nativeAssets": [ { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1000000000" } ], "otherAssets": [] }, "BridgeHubKusama": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "KSM", "isEVM": false, "nativeAssets": [ { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "33333333" } ], "otherAssets": [] @@ -463,7 +471,8 @@ "nativeAssets": [ { "symbol": "ASTR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000" } ], "otherAssets": [ @@ -476,7 +485,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551641", @@ -497,7 +507,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "4294969281", @@ -518,7 +529,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "4294969280", @@ -539,7 +551,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551633", @@ -560,7 +573,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551618", @@ -581,7 +595,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551616", @@ -602,7 +617,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551617", @@ -623,7 +639,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551625", @@ -636,7 +653,8 @@ "Parachain": 2002 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551619", @@ -654,7 +672,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551629", @@ -675,7 +694,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551628", @@ -688,7 +708,8 @@ "Parachain": 2011 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551639", @@ -709,7 +730,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551626", @@ -730,7 +752,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551638", @@ -751,7 +774,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551624", @@ -772,7 +796,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551640", @@ -793,7 +818,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551632", @@ -814,7 +840,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551623", @@ -835,7 +862,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551637", @@ -856,7 +884,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551620", @@ -877,7 +906,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551621", @@ -898,7 +928,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551630", @@ -916,7 +947,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551622", @@ -929,7 +961,8 @@ "Parachain": 2035 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551631", @@ -942,7 +975,8 @@ "Parachain": 2037 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551627", @@ -960,7 +994,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551636", @@ -993,7 +1028,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551634", @@ -1011,7 +1047,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551635", @@ -1032,7 +1069,8 @@ } ] } - } + }, + "existentialDeposit": "1" } ] }, @@ -1043,7 +1081,13 @@ "nativeAssets": [ { "symbol": "BNC", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "10000000000" + }, + { + "symbol": "vBNC", + "decimals": 12, + "existentialDeposit": "10000000000" } ], "otherAssets": [ @@ -1066,7 +1110,8 @@ } ] } - } + }, + "existentialDeposit": "100" }, { "assetId": "8", @@ -1079,7 +1124,8 @@ "Parachain": 2104 } } - } + }, + "existentialDeposit": "10000000000000" }, { "assetId": "13", @@ -1104,7 +1150,8 @@ } ] } - } + }, + "existentialDeposit": "15000000000000" }, { "assetId": "0", @@ -1115,7 +1162,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1000000" }, { "assetId": "2", @@ -1136,7 +1184,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "5", @@ -1157,7 +1206,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "11", @@ -1178,7 +1228,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "10", @@ -1199,7 +1250,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "1", @@ -1217,7 +1269,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "1", @@ -1238,7 +1291,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "4", @@ -1259,7 +1313,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "9", @@ -1280,7 +1335,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "4", @@ -1301,7 +1357,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "8", @@ -1322,7 +1379,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000" }, { "assetId": "12", @@ -1340,7 +1398,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "3", @@ -1361,7 +1420,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "0", @@ -1382,7 +1442,8 @@ } ] } - } + }, + "existentialDeposit": "1000000" }, { "assetId": "0", @@ -1403,7 +1464,8 @@ } ] } - } + }, + "existentialDeposit": "1000000" }, { "assetId": "7", @@ -1424,7 +1486,8 @@ } ] } - } + }, + "existentialDeposit": "10000000" }, { "assetId": "3", @@ -1437,7 +1500,8 @@ "Parachain": 2006 } } - } + }, + "existentialDeposit": "10000000000000000" } ] }, @@ -1448,7 +1512,8 @@ "nativeAssets": [ { "symbol": "BBB", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000" } ], "otherAssets": [] @@ -1460,7 +1525,8 @@ "nativeAssets": [ { "symbol": "CFG", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000" } ], "otherAssets": [ @@ -1473,7 +1539,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "100000" }, { "assetId": "6", @@ -1494,7 +1561,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "1", @@ -1515,7 +1583,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "3", @@ -1536,7 +1605,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "4", @@ -1554,7 +1624,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000000" }, { "assetId": "100003", @@ -1585,7 +1656,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "100005", @@ -1616,7 +1688,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000000" }, { "assetId": "100006", @@ -1647,28 +1720,8 @@ } ] } - } - }, - { - "assetId": "Native", - "symbol": "CFG", - "decimals": 18, - "multiLocation": { - "parents": 1, - "interior": { - "X2": [ - { - "Parachain": 2031 - }, - { - "GeneralKey": { - "length": 2, - "data": "0x0001000000000000000000000000000000000000000000000000000000000000" - } - } - ] - } - } + }, + "existentialDeposit": "1000" }, { "assetId": "100002", @@ -1699,7 +1752,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "100001", @@ -1730,7 +1784,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "100004", @@ -1761,7 +1816,8 @@ } ] } - } + }, + "existentialDeposit": "1000" } ] }, @@ -1772,7 +1828,8 @@ "nativeAssets": [ { "symbol": "SUB", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" } ], "otherAssets": [] @@ -1784,7 +1841,8 @@ "nativeAssets": [ { "symbol": "LAYR", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" } ], "otherAssets": [ @@ -1792,128 +1850,153 @@ "assetId": "79228162514264337593543950466", "symbol": "USDT", "decimals": 6, + "existentialDeposit": "1500", "alias": "USDT1" }, { "assetId": "79228162514264337593543950370", "symbol": "vDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" }, { "assetId": "79228162514264337593543950351", "symbol": "lsDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "21430000" }, { "assetId": "79228162514264337593543952342", "symbol": "ASTR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "4700000000000000" }, { "assetId": "79228162514264337593543950346", "symbol": "stATOM", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "2000" }, { "assetId": "79228162514264337593543950343", "symbol": "ATOM", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "2000" }, { "assetId": "79228162514264337593543952343", "symbol": "SDN", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000" }, { "assetId": "79228162514264337593543950367", "symbol": "BNC Kusama", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "11000000000" }, { "assetId": "79228162514264337593543950355", "symbol": "TIA", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "9000" }, { "assetId": "79228162514264337593543950338", "symbol": "LAYR", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" }, { "assetId": "79228162514264337593543952347", "symbol": "EQ", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "700000000" }, { "assetId": "79228162514264337593543950340", "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "375000000" }, { "assetId": "79228162514264337593543950344", "symbol": "OSMO", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "40000" }, { "assetId": "79228162514264337593543950376", "symbol": "GLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "40000000000000000" }, { "assetId": "79228162514264337593543950359", "symbol": "MOVR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "4100000000000000" }, { "assetId": "79228162514264337593543950361", "symbol": "IST", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "20000" }, { "assetId": "79228162514264337593543950463", "symbol": "EQD", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "200000" }, { "assetId": "79228162514264337593543950352", "symbol": "SILK", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "100000" }, { "assetId": "79228162514264337593543950485", "symbol": "USDT", "decimals": 6, + "existentialDeposit": "200000", "alias": "USDT2" }, { "assetId": "79228162514264337593543950368", "symbol": "vKSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000" }, { "assetId": "79228162514264337593543950342", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "21430000" }, { "assetId": "79228162514264337593543950337", "symbol": "PICA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000" }, { "assetId": "79228162514264337593543950486", "symbol": "USDC", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "200000" }, { "assetId": "79228162514264337593543950369", "symbol": "BNC Polkadot", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1100000000" }, { "assetId": "79228162514264337593543950354", "symbol": "BLD", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "120000" } ] }, @@ -1924,7 +2007,8 @@ "nativeAssets": [ { "symbol": "RING", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [ @@ -1937,7 +2021,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "1027", @@ -1958,7 +2043,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "1028", @@ -1979,7 +2065,8 @@ } ] } - } + }, + "existentialDeposit": "1" } ] }, @@ -1990,7 +2077,8 @@ "nativeAssets": [ { "symbol": "HDX", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000000" } ], "otherAssets": [ @@ -2017,7 +2105,8 @@ } ] } - } + }, + "existentialDeposit": "8928571428571430" }, { "assetId": "5", @@ -2028,7 +2117,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "17540000" }, { "assetId": "1000624", @@ -2053,7 +2143,8 @@ } ] } - } + }, + "existentialDeposit": "59084194977843" }, { "assetId": "1000190", @@ -2079,6 +2170,7 @@ ] } }, + "existentialDeposit": "23", "alias": "WBTC1" }, { @@ -2104,7 +2196,9 @@ } ] } - } + }, + "existentialDeposit": "9910802775024780", + "alias": "sUSDS1" }, { "assetId": "1000189", @@ -2130,6 +2224,7 @@ ] } }, + "existentialDeposit": "6009615384615", "alias": "WETH1" }, { @@ -2152,6 +2247,7 @@ ] } }, + "existentialDeposit": "10000", "alias": "USDT1" }, { @@ -2173,7 +2269,8 @@ } ] } - } + }, + "existentialDeposit": "200000000000000" }, { "assetId": "22", @@ -2195,6 +2292,7 @@ ] } }, + "existentialDeposit": "10000", "alias": "USDC2" }, { @@ -2217,6 +2315,7 @@ ] } }, + "existentialDeposit": "5000000000000", "alias": "WETH3" }, { @@ -2238,7 +2337,8 @@ } ] } - } + }, + "existentialDeposit": "90744101633" }, { "assetId": "6", @@ -2259,7 +2359,8 @@ } ] } - } + }, + "existentialDeposit": "2518891687657430" }, { "assetId": "2", @@ -2281,6 +2382,7 @@ ] } }, + "existentialDeposit": "10000000000000000", "alias": "DAI2" }, { @@ -2303,6 +2405,7 @@ ] } }, + "existentialDeposit": "10000", "alias": "USDC3" }, { @@ -2324,7 +2427,8 @@ } ] } - } + }, + "existentialDeposit": "100200401" }, { "assetId": "3", @@ -2346,6 +2450,7 @@ ] } }, + "existentialDeposit": "44", "alias": "WBTC3" }, { @@ -2371,6 +2476,7 @@ ] } }, + "existentialDeposit": "10000", "alias": "USDC1" }, { @@ -2396,6 +2502,7 @@ ] } }, + "existentialDeposit": "5390835579515", "alias": "WETH2" }, { @@ -2414,7 +2521,8 @@ } ] } - } + }, + "existentialDeposit": "34854864344868000" }, { "assetId": "19", @@ -2439,8 +2547,35 @@ ] } }, + "existentialDeposit": "34", "alias": "WBTC2" }, + { + "assetId": "1000745", + "symbol": "sUSDS", + "decimals": 18, + "multiLocation": { + "parents": 1, + "interior": { + "X3": [ + { + "Parachain": 2004 + }, + { + "PalletInstance": 110 + }, + { + "AccountKey20": { + "network": null, + "key": "0xda430218862d3db25de9f61458645dde49a9e9c1" + } + } + ] + } + }, + "existentialDeposit": "9910802775024780", + "alias": "sUSDS2" + }, { "assetId": "18", "symbol": "DAI", @@ -2464,6 +2599,7 @@ ] } }, + "existentialDeposit": "10000000000000000", "alias": "DAI1" }, { @@ -2489,6 +2625,7 @@ ] } }, + "existentialDeposit": "10000", "alias": "USDT2" }, { @@ -2502,7 +2639,8 @@ "Parachain": 2006 } } - } + }, + "existentialDeposit": "147058823529412000" }, { "assetId": "27", @@ -2515,7 +2653,8 @@ "Parachain": 2008 } } - } + }, + "existentialDeposit": "7874015748" }, { "assetId": "26", @@ -2533,7 +2672,8 @@ } ] } - } + }, + "existentialDeposit": "109890109890" }, { "assetId": "14", @@ -2554,7 +2694,8 @@ } ] } - } + }, + "existentialDeposit": "68795189840" }, { "assetId": "33", @@ -2575,7 +2716,8 @@ } ] } - } + }, + "existentialDeposit": "133689839572193000" }, { "assetId": "15", @@ -2596,7 +2738,8 @@ } ] } - } + }, + "existentialDeposit": "18761726" }, { "assetId": "13", @@ -2617,7 +2760,8 @@ } ] } - } + }, + "existentialDeposit": "32467532467532500" }, { "assetId": "11", @@ -2638,7 +2782,8 @@ } ] } - } + }, + "existentialDeposit": "36" }, { "assetId": "17", @@ -2659,7 +2804,8 @@ } ] } - } + }, + "existentialDeposit": "6164274209" }, { "assetId": "1001", @@ -2680,7 +2826,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "1002", @@ -2701,7 +2848,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "1003", @@ -2722,7 +2870,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "1004", @@ -2743,7 +2892,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "8", @@ -2756,7 +2906,8 @@ "Parachain": 2035 } } - } + }, + "existentialDeposit": "54945054945" }, { "assetId": "25", @@ -2769,7 +2920,8 @@ "Parachain": 2037 } } - } + }, + "existentialDeposit": "1224384348939740000" }, { "assetId": "31", @@ -2787,7 +2939,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000000000" }, { "assetId": "32", @@ -2808,7 +2961,8 @@ } ] } - } + }, + "existentialDeposit": "100786131828" }, { "assetId": "28", @@ -2821,7 +2975,8 @@ "Parachain": 2086 } } - } + }, + "existentialDeposit": "21358393848783" }, { "assetId": "12", @@ -2842,7 +2997,30 @@ } ] } - } + }, + "existentialDeposit": "1204151916" + }, + { + "assetId": "1000198", + "symbol": "XLM.s", + "decimals": 12, + "multiLocation": { + "parents": 1, + "interior": { + "X3": [ + { + "Parachain": 2094 + }, + { + "PalletInstance": 53 + }, + { + "GeneralIndex": 2 + } + ] + } + }, + "existentialDeposit": "19500780031" }, { "assetId": "1000081", @@ -2860,7 +3038,42 @@ } ] } - } + }, + "existentialDeposit": "153256704981" + }, + { + "assetId": "1000746", + "symbol": "EURC.s", + "decimals": 12, + "multiLocation": { + "parents": 1, + "interior": { + "X5": [ + { + "Parachain": 2094 + }, + { + "PalletInstance": 53 + }, + { + "GeneralIndex": 2 + }, + { + "GeneralKey": { + "length": 4, + "data": "0x4555524300000000000000000000000000000000000000000000000000000000" + } + }, + { + "GeneralKey": { + "length": 32, + "data": "0xcf4f5a26e2090bb3adcf02c7a9d73dbfe6659cc690461475b86437fa49c71136" + } + } + ] + } + }, + "existentialDeposit": "9523809524" }, { "assetId": "24", @@ -2873,7 +3086,8 @@ "Parachain": 2101 } } - } + }, + "existentialDeposit": "20000000" }, { "assetId": "29", @@ -2886,7 +3100,8 @@ "Parachain": 3344 } } - } + }, + "existentialDeposit": "205888408" }, { "assetId": "30", @@ -2899,7 +3114,8 @@ "Parachain": 3369 } } - } + }, + "existentialDeposit": "21367521367521400" } ] }, @@ -2910,27 +3126,33 @@ "nativeAssets": [ { "symbol": "INTR", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "-1" }, { "symbol": "IBTC", - "decimals": 8 + "decimals": 8, + "existentialDeposit": "-1" }, { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "-1" }, { "symbol": "KINT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "-1" }, { "symbol": "KBTC", - "decimals": 8 + "decimals": 8, + "existentialDeposit": "-1" }, { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "-1" } ], "otherAssets": [ @@ -2953,7 +3175,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "12", @@ -2974,7 +3197,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "1", @@ -2995,7 +3219,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "7", @@ -3019,7 +3244,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "5", @@ -3043,7 +3269,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "8", @@ -3067,7 +3294,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "9", @@ -3091,7 +3319,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "15", @@ -3115,7 +3344,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "10", @@ -3133,7 +3363,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "6", @@ -3157,7 +3388,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "4", @@ -3181,7 +3413,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "11", @@ -3202,7 +3435,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "3", @@ -3223,7 +3457,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "13", @@ -3241,7 +3476,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "14", @@ -3254,7 +3490,8 @@ "Parachain": 2035 } } - } + }, + "existentialDeposit": "10000000000" } ] }, @@ -3277,7 +3514,8 @@ "nativeAssets": [ { "symbol": "GLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [ @@ -3304,7 +3542,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "124105859028862849477017063633156007283", @@ -3329,7 +3568,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "36282181791341254438422467838694599751", @@ -3354,7 +3594,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "42259045809535163221576417993425387648", @@ -3365,7 +3606,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "61295607754960722617854661686514597014", @@ -3386,7 +3628,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "124463719055550872076363892993240202694", @@ -3407,7 +3650,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "166377000701797186346254371275954761085", @@ -3428,7 +3672,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "184218609779515850660274730699350567246", @@ -3449,7 +3694,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "311091173110107856861649819128533077277", @@ -3470,7 +3716,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "64174511183114006009298114091987195453", @@ -3491,7 +3738,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "112679793397406599376365943185137098326", @@ -3512,7 +3760,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "225719522181998468294117309041779353812", @@ -3533,7 +3782,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "110021739665376159354538090254163045594", @@ -3554,7 +3804,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "224821240862170613278369189818311486111", @@ -3575,7 +3826,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "224077081838586484055667086558292981199", @@ -3588,7 +3840,8 @@ "Parachain": 2006 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "187224307232923873519830480073807488153", @@ -3609,7 +3862,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "190590555344745888270686124937537713878", @@ -3622,7 +3876,8 @@ "Parachain": 2011 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "32615670524745285411807346420584982855", @@ -3643,7 +3898,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "78407957940239408223554844611219482002", @@ -3664,7 +3920,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "133307414193833606001516599592873928539", @@ -3685,7 +3942,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "141196559012917796508928734717797136690", @@ -3706,7 +3964,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "199907282886248358976504623107230837230", @@ -3727,7 +3986,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "138280378441551394289980644963240827219", @@ -3748,7 +4008,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "228510780171552721666262089780561563481", @@ -3769,7 +4030,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "309163521958167876851250718453738106865", @@ -3787,7 +4049,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "144012926827374458669278577633504620722", @@ -3808,7 +4071,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "29085784439601774464560083082574142143", @@ -3829,7 +4093,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "142155548796783636521833385094843759961", @@ -3850,7 +4115,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "204507659831918931608354793288110796652", @@ -3871,7 +4137,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "289989900872525819559124583375550296953", @@ -3892,7 +4159,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "165823357460190568952172802245839421906", @@ -3913,7 +4181,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "272547899416482196831721420898811311297", @@ -3934,7 +4203,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "114018676402354620972806895487280206446", @@ -3955,7 +4225,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "91372035960551235635465443179559840483", @@ -3976,7 +4247,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "120637696315203257380661607956669368914", @@ -3997,7 +4269,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "101170542313601871197860408087030232491", @@ -4018,7 +4291,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "69606720909260275826784788104880799692", @@ -4036,7 +4310,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "132685552157663328694213725410064821485", @@ -4049,7 +4324,8 @@ "Parachain": 2035 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "283870493414747423842723289889816153538", @@ -4062,7 +4338,8 @@ "Parachain": 2037 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "90225766094594282577230355136633846906", @@ -4075,7 +4352,8 @@ "Parachain": 2040 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "238111524681612888331172110363070489924", @@ -4093,7 +4371,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "125699734534028342599692732320197985871", @@ -4111,7 +4390,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "150874409661081770150564009349448205842", @@ -4132,7 +4412,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "45647473099451451833602657905356404688", @@ -4150,7 +4431,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "89994634370519791027168048838578580624", @@ -4163,7 +4445,8 @@ "Parachain": 2101 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "166446646689194205559791995948102903873", @@ -4176,7 +4459,8 @@ "Parachain": 2104 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "314077021455772878282433861213184736939", @@ -4189,7 +4473,8 @@ "Parachain": 3338 } } - } + }, + "existentialDeposit": "1" } ] }, @@ -4200,7 +4485,8 @@ "nativeAssets": [ { "symbol": "PARA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" } ], "otherAssets": [ @@ -4213,7 +4499,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "102", @@ -4234,7 +4521,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "110", @@ -4255,7 +4543,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "108", @@ -4276,7 +4565,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "106", @@ -4297,7 +4587,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "130", @@ -4310,7 +4601,8 @@ "Parachain": 2002 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "114", @@ -4328,7 +4620,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "1001", @@ -4349,7 +4642,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "200070014", @@ -4370,7 +4664,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "200080015", @@ -4391,7 +4686,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "200100017", @@ -4412,7 +4708,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "200060013", @@ -4433,7 +4730,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "200090016", @@ -4454,7 +4752,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "120", @@ -4475,7 +4774,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "122", @@ -4496,7 +4796,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "115", @@ -4509,7 +4810,8 @@ "Parachain": 2035 } } - } + }, + "existentialDeposit": "1" } ] }, @@ -4520,7 +4822,8 @@ "nativeAssets": [ { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" }, { "symbol": "KSM", @@ -4546,7 +4849,8 @@ { "GeneralIndex": 1024 } - ] + ], + "existentialDeposit": "100000000" }, { "assetId": "1337", @@ -4565,7 +4869,8 @@ { "GeneralIndex": 1337 } - ] + ], + "existentialDeposit": "10000" }, { "assetId": "17", @@ -4584,7 +4889,8 @@ { "GeneralIndex": 17 } - ] + ], + "existentialDeposit": "1" }, { "assetId": "1984", @@ -4603,7 +4909,8 @@ { "GeneralIndex": 1984 } - ] + ], + "existentialDeposit": "10000" }, { "assetId": "21", @@ -4622,7 +4929,8 @@ { "GeneralIndex": 21 } - ] + ], + "existentialDeposit": "3000" }, { "assetId": "23", @@ -4641,7 +4949,8 @@ { "GeneralIndex": 23 } - ] + ], + "existentialDeposit": "1" }, { "assetId": "30", @@ -4660,7 +4969,8 @@ { "GeneralIndex": 30 } - ] + ], + "existentialDeposit": "1" }, { "assetId": "31337", @@ -4679,7 +4989,8 @@ { "GeneralIndex": 31337 } - ] + ], + "existentialDeposit": "10000000" }, { "assetId": "42069", @@ -4698,7 +5009,8 @@ { "GeneralIndex": 42069 } - ] + ], + "existentialDeposit": "1000000" }, { "assetId": "555", @@ -4717,7 +5029,8 @@ { "GeneralIndex": 555 } - ] + ], + "existentialDeposit": "100000" }, { "symbol": "EQ", @@ -4731,7 +5044,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "symbol": "WETH", @@ -4755,7 +5069,8 @@ } ] } - } + }, + "existentialDeposit": "15000000000000" }, { "symbol": "KSM", @@ -4771,7 +5086,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "symbol": "TEER", @@ -4785,7 +5101,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "symbol": "BNC", @@ -4805,7 +5122,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "symbol": "EQD", @@ -4825,7 +5143,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "symbol": "GLMR", @@ -4842,7 +5161,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "symbol": "MYTH", @@ -4856,7 +5176,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "symbol": "vDOT", @@ -4876,7 +5197,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "symbol": "HDX", @@ -4893,7 +5215,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "symbol": "AJUN", @@ -4907,18 +5230,20 @@ } ] } - } + }, + "existentialDeposit": "1000000000" } ] }, "Altair": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "AIR", "isEVM": false, "nativeAssets": [ { "symbol": "AIR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000" } ], "otherAssets": [ @@ -4931,7 +5256,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "1", @@ -4952,7 +5278,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "2", @@ -4973,56 +5300,40 @@ } ] } - } - }, - { - "assetId": "Native", - "symbol": "AIR", - "decimals": 18, - "multiLocation": { - "parents": 1, - "interior": { - "X2": [ - { - "Parachain": 2088 - }, - { - "GeneralKey": { - "length": 2, - "data": "0x0001000000000000000000000000000000000000000000000000000000000000" - } - } - ] - } - } + }, + "existentialDeposit": "10000000000" } ] }, "Amplitude": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "AMPE", "isEVM": false, "nativeAssets": [ { "symbol": "AMPE", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000" } ], "otherAssets": [ { "assetId": "2", "symbol": "PICA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000" }, { "assetId": "1", "symbol": "USDT", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000" }, { "assetId": "0", "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000" } ] }, @@ -5045,7 +5356,8 @@ "nativeAssets": [ { "symbol": "BSX", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000000" } ], "otherAssets": [ @@ -5058,7 +5370,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "297441999" }, { "assetId": "14", @@ -5079,7 +5392,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "13", @@ -5100,7 +5414,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "9", @@ -5121,7 +5436,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "2", @@ -5142,7 +5458,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "10", @@ -5163,7 +5480,8 @@ } ] } - } + }, + "existentialDeposit": "6230529595016" }, { "assetId": "11", @@ -5184,7 +5502,8 @@ } ] } - } + }, + "existentialDeposit": "33" }, { "assetId": "12", @@ -5205,7 +5524,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "16", @@ -5218,7 +5538,8 @@ "Parachain": 2048 } } - } + }, + "existentialDeposit": "1683502" }, { "assetId": "6", @@ -5236,50 +5557,65 @@ } ] } - } + }, + "existentialDeposit": "43591979076" } ] }, "BifrostKusama": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "BNC", "isEVM": false, "nativeAssets": [ { "symbol": "BNC", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "10000000000" }, { - "symbol": "KUSD", - "decimals": 12 + "symbol": "KSM", + "decimals": 12, + "existentialDeposit": "100000000" }, { - "symbol": "DOT", - "decimals": 10 + "symbol": "RMRK", + "decimals": 10, + "existentialDeposit": "10000" }, { - "symbol": "KSM", - "decimals": 12 + "symbol": "vBNC", + "decimals": 12, + "existentialDeposit": "10000000000" }, { - "symbol": "KAR", - "decimals": 12 + "symbol": "vMOVR", + "decimals": 18, + "existentialDeposit": "1000000000000" }, { - "symbol": "ZLK", - "decimals": 18 + "symbol": "vKSM", + "decimals": 12, + "existentialDeposit": "100000000" }, { - "symbol": "PHA", - "decimals": 12 + "symbol": "MOVR", + "decimals": 18, + "existentialDeposit": "1000000000000" }, { - "symbol": "RMRK", - "decimals": 10 + "symbol": "ZLK", + "decimals": 18, + "existentialDeposit": "1000000000000" }, { - "symbol": "MOVR", - "decimals": 18 + "symbol": "PHA", + "decimals": 12, + "existentialDeposit": "40000000000" + }, + { + "symbol": "KAR", + "decimals": 12, + "existentialDeposit": "100000000" } ], "otherAssets": [ @@ -5302,7 +5638,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "2", @@ -5323,7 +5660,8 @@ } ] } - } + }, + "existentialDeposit": "100" }, { "assetId": "1", @@ -5344,7 +5682,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "4", @@ -5365,7 +5704,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000" }, { "assetId": "3", @@ -5378,18 +5718,20 @@ "Parachain": 2007 } } - } + }, + "existentialDeposit": "10000000000000000" } ] }, "Calamari": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "KMA", "isEVM": false, "nativeAssets": [ { "symbol": "KMA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" } ], "otherAssets": [ @@ -5402,7 +5744,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "33333333" }, { "assetId": "14", @@ -5423,7 +5766,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "21", @@ -5444,7 +5788,8 @@ } ] } - } + }, + "existentialDeposit": "40000000000000" }, { "assetId": "26", @@ -5465,7 +5810,8 @@ } ] } - } + }, + "existentialDeposit": "35" }, { "assetId": "16", @@ -5486,7 +5832,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "23", @@ -5507,7 +5854,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "9", @@ -5528,7 +5876,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "18", @@ -5549,7 +5898,8 @@ } ] } - } + }, + "existentialDeposit": "5000000000000000" }, { "assetId": "20", @@ -5570,7 +5920,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "8", @@ -5591,7 +5942,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "10", @@ -5612,7 +5964,8 @@ } ] } - } + }, + "existentialDeposit": "500000000" }, { "assetId": "17", @@ -5633,7 +5986,8 @@ } ] } - } + }, + "existentialDeposit": "9000000000000000" }, { "assetId": "25", @@ -5654,7 +6008,8 @@ } ] } - } + }, + "existentialDeposit": "3000000000000000" }, { "assetId": "22", @@ -5675,7 +6030,8 @@ } ] } - } + }, + "existentialDeposit": "2000000000000000" }, { "assetId": "24", @@ -5696,7 +6052,8 @@ } ] } - } + }, + "existentialDeposit": "2000000000000000" }, { "assetId": "19", @@ -5717,7 +6074,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000000000000" }, { "assetId": "27", @@ -5738,7 +6096,8 @@ } ] } - } + }, + "existentialDeposit": "5555555555555" }, { "assetId": "15", @@ -5759,7 +6118,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "13", @@ -5772,7 +6132,8 @@ "Parachain": 2004 } } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "11", @@ -5790,96 +6151,109 @@ } ] } - } + }, + "existentialDeposit": "100000000000000000" } ] }, "Crab": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "CRAB", "isEVM": true, "nativeAssets": [ { "symbol": "CRAB", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [ { "assetId": "1026", "symbol": "CKTON", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1" } ] }, "CrustShadow": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "CSM", "isEVM": false, "nativeAssets": [ { "symbol": "CSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" } ], "otherAssets": [ { "assetId": "16797826370226091782818345603793389938", "symbol": "SDN", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000" }, { "assetId": "108036400430056508975016746969135344601", "symbol": "XRT", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "1" }, { "assetId": "173481220575862801646329923366065693029", "symbol": "CRAB", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1" }, { "assetId": "214920334981412447805621250067209749032", "symbol": "AUSD", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" }, { "assetId": "232263652204149413431520870009560565298", "symbol": "MOVR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000" }, { "assetId": "10810581592933651521121702237638664357", "symbol": "KAR", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" }, { "assetId": "319623561105283008236062145480775032445", "symbol": "BNC", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" } ] }, "Encointer": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "KSM", "isEVM": false, "nativeAssets": [ { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "33333333" } ], "otherAssets": [] }, "Imbue": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "IMBU", "isEVM": false, "nativeAssets": [ { "symbol": "IMBU", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000" } ], "otherAssets": [] @@ -5891,104 +6265,122 @@ "nativeAssets": [ { "symbol": "KILT", - "decimals": 15 + "decimals": 15, + "existentialDeposit": "10000000000000" } ], "otherAssets": [] }, "InvArchTinker": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "TNKR", "isEVM": false, "nativeAssets": [ { "symbol": "TNKR", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000" } ], "otherAssets": [] }, "Curio": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "CGT", "isEVM": false, "nativeAssets": [ { "symbol": "CGT", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" }, { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "333333333" } ], "otherAssets": [ { "assetId": "0", "symbol": "BSX", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000000" }, { "assetId": "2", "symbol": "VAL", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000" }, { "assetId": "3", "symbol": "PSWAP", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000000" }, { "assetId": "1", "symbol": "XOR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000" } ] }, "Karura": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "KAR", "isEVM": false, "nativeAssets": [ { "symbol": "KAR", - "decimals": 12 - }, - { - "symbol": "KUSD", - "decimals": 12 - }, - { - "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" }, { "symbol": "LKSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "500000000" }, { "symbol": "BNC", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "8000000000" }, { - "symbol": "VSKSM", - "decimals": 12 + "symbol": "TAI", + "decimals": 12, + "existentialDeposit": "1000000000000" }, { "symbol": "PHA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "40000000000" }, { "symbol": "KINT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "133330000" }, { - "symbol": "KBTC", - "decimals": 8 + "symbol": "VSKSM", + "decimals": 12, + "existentialDeposit": "100000000" }, { - "symbol": "TAI", - "decimals": 12 + "symbol": "KSM", + "decimals": 12, + "existentialDeposit": "100000000" + }, + { + "symbol": "aSEED", + "decimals": 12, + "existentialDeposit": "10000000000" + }, + { + "symbol": "KBTC", + "decimals": 8, + "existentialDeposit": "66" } ], "otherAssets": [ @@ -6011,7 +6403,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "7", @@ -6032,7 +6425,8 @@ } ] } - } + }, + "existentialDeposit": "10000" }, { "assetId": "1", @@ -6053,7 +6447,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "18", @@ -6066,7 +6461,8 @@ "Parachain": 2007 } } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "5", @@ -6079,7 +6475,8 @@ "Parachain": 2012 } } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "8", @@ -6100,7 +6497,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "3", @@ -6118,7 +6516,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000000" }, { "assetId": "14", @@ -6131,7 +6530,8 @@ "Parachain": 2024 } } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "15", @@ -6152,7 +6552,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "10", @@ -6165,7 +6566,8 @@ "Parachain": 2084 } } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "4", @@ -6186,7 +6588,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "12", @@ -6207,7 +6610,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000000000" }, { "assetId": "11", @@ -6225,7 +6629,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" }, { "assetId": "2", @@ -6238,7 +6643,8 @@ "Parachain": 2095 } } - } + }, + "existentialDeposit": "1000000000000000000" }, { "assetId": "9", @@ -6259,7 +6665,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000000000" }, { "assetId": "17", @@ -6280,7 +6687,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000000000" }, { "assetId": "13", @@ -6298,7 +6706,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000000000" }, { "assetId": "20", @@ -6316,7 +6725,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "6", @@ -6337,7 +6747,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000000" }, { "assetId": "16", @@ -6350,7 +6761,8 @@ "Parachain": 2114 } } - } + }, + "existentialDeposit": "40000000000" }, { "assetId": "19", @@ -6371,7 +6783,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000000" } ] }, @@ -6382,27 +6795,33 @@ "nativeAssets": [ { "symbol": "KINT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "-1" }, { "symbol": "KBTC", - "decimals": 8 + "decimals": 8, + "existentialDeposit": "-1" }, { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "-1" }, { "symbol": "INTR", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "-1" }, { "symbol": "IBTC", - "decimals": 8 + "decimals": 8, + "existentialDeposit": "-1" }, { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "-1" } ], "otherAssets": [ @@ -6425,7 +6844,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "1", @@ -6446,7 +6866,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "2", @@ -6467,7 +6888,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "5", @@ -6488,7 +6910,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "4", @@ -6506,7 +6929,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "6", @@ -6527,7 +6951,8 @@ } ] } - } + }, + "existentialDeposit": "0" } ] }, @@ -6543,13 +6968,14 @@ "otherAssets": [] }, "Moonriver": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "MOVR", "isEVM": true, "nativeAssets": [ { "symbol": "MOVR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [ @@ -6562,7 +6988,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "311091173110107856861649819128533077277", @@ -6583,7 +7010,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "182365888117048807484804376330534607370", @@ -6604,7 +7032,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "214920334981412447805621250067209749032", @@ -6625,7 +7054,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "10810581592933651521121702237638664357", @@ -6646,7 +7076,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "264344629840762281112027368930249420542", @@ -6667,7 +7098,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "72145018963825376852137222787619937732", @@ -6688,7 +7120,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "203223821023327994093278529517083736593", @@ -6709,7 +7142,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "319623561105283008236062145480775032445", @@ -6730,7 +7164,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "189307976387032586987344677431204943363", @@ -6743,7 +7178,8 @@ "Parachain": 2004 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "16797826370226091782818345603793389938", @@ -6756,7 +7192,8 @@ "Parachain": 2007 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "108457044225666871745333730479173774551", @@ -6769,7 +7206,8 @@ "Parachain": 2012 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "105075627293246237499203909093923548958", @@ -6790,7 +7228,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "108036400430056508975016746969135344601", @@ -6803,7 +7242,8 @@ "Parachain": 2048 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "213357169630950964874127107356898319277", @@ -6816,7 +7256,8 @@ "Parachain": 2084 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "76100021443485661246318545281171740067", @@ -6837,7 +7278,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "167283995827706324502761431814209211090", @@ -6850,7 +7292,8 @@ "Parachain": 2087 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "328179947973504579459046439826496046832", @@ -6871,7 +7314,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "175400718394635817552109270754364440562", @@ -6892,7 +7336,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "173481220575862801646329923366065693029", @@ -6910,7 +7355,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "65216491554813189869575508812319036608", @@ -6928,7 +7374,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "118095707745084482624853002839493125353", @@ -6949,7 +7396,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "133300872918374599700079037156071917454", @@ -6962,7 +7410,8 @@ "Parachain": 2114 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "138512078356357941985706694377215053953", @@ -6980,7 +7429,8 @@ } ] } - } + }, + "existentialDeposit": "1" } ] }, @@ -6991,7 +7441,8 @@ "nativeAssets": [ { "symbol": "HKO", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "10000000000" } ], "otherAssets": [ @@ -7004,7 +7455,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "102", @@ -7025,7 +7477,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "109", @@ -7046,7 +7499,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "107", @@ -7067,7 +7521,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "115", @@ -7080,7 +7535,8 @@ "Parachain": 2004 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "113", @@ -7098,7 +7554,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "1000", @@ -7119,7 +7576,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "121", @@ -7140,7 +7598,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "119", @@ -7161,396 +7620,483 @@ } ] } - } + }, + "existentialDeposit": "1" } ] }, "Picasso": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "PICA", "isEVM": false, "nativeAssets": [ { "symbol": "PICA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" } ], "otherAssets": [ { "assetId": "1088357900348863545348", "symbol": "DOT_KSM_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545357", "symbol": "DOT_SCRT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545350", "symbol": "KSM_OSMO_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "149", "symbol": "USDT", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "200000" }, { "assetId": "1088357900348863545359", "symbol": "DOT_BLD_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "26", "symbol": "USK", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "200000" }, { "assetId": "1088357900348863545360", "symbol": "ASTR_SDN_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "35", "symbol": "SEI", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "16", "symbol": "SILK", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "20000" }, { "assetId": "29", "symbol": "QCK", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "333300" }, { "assetId": "23", "symbol": "MOVR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "4100000000000000" }, { "assetId": "130", "symbol": "USDT Kusama", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1500" }, { "assetId": "9", "symbol": "STRD", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "20000" }, { "assetId": "1088357900348863545349", "symbol": "DOT_OSMO_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1", "symbol": "PICA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" }, { "assetId": "1088357900348863545352", "symbol": "DOT_STARS_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "31", "symbol": "BNC Kusama", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "11000000000" }, { "assetId": "1088357900348863545356", "symbol": "DOT_CRE_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "2007", "symbol": "SDn", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000" }, { "assetId": "1088357900348863545363", "symbol": "DOT_SDN_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "18", "symbol": "BLD", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "120000" }, { "assetId": "127", "symbol": "EQD", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "200000" }, { "assetId": "20", "symbol": "lsKSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "375000000" }, { "assetId": "8", "symbol": "OSMO", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "40000" }, { "assetId": "33", "symbol": "BNC Polkadot", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1100000000" }, { "assetId": "129", "symbol": "kUSD", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" }, { "assetId": "3", "symbol": "wSOL", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "5620" }, { "assetId": "1088357900348863545351", "symbol": "USDT_OSMO_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545347", "symbol": "DOT_USDT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545354", "symbol": "DOT_STATOM_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545362", "symbol": "DOT_ASTR_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545368", "symbol": "lsDOT_DOT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "2006", "symbol": "ASTR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "4700000000000000" }, { "assetId": "10", "symbol": "stATOM", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "2000" }, { "assetId": "12", "symbol": "NTRN", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "60000" }, { "assetId": "1088357900348863545367", "symbol": "PICA_OSMO_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "7", "symbol": "ATOM", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "2000" }, { "assetId": "17", "symbol": "UMEE", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "1088357900348863545366", "symbol": "DOT_TIA_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "2", "symbol": "ETH", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "200000000000" }, { "assetId": "2011", "symbol": "EQ", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "700000000" }, { "assetId": "45", "symbol": "XLM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "2000000000000" }, { "assetId": "25", "symbol": "IST", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "20000" }, { "assetId": "13", "symbol": "CRE", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "40", "symbol": "GLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "40000000000000000" }, { "assetId": "6", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "21430000" }, { "assetId": "1088357900348863545361", "symbol": "vKSM_vDOT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545358", "symbol": "DOT_UMEE_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "1088357900348863545346", "symbol": "DOT_PICA_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "28", "symbol": "KUJI", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "6006" }, { "assetId": "4", "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "375000000" }, { "assetId": "34", "symbol": "vDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" }, { "assetId": "105", "symbol": "KSM_USDT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "24", "symbol": "INJ", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1250000000000000" }, { "assetId": "19", "symbol": "TIA", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "9000" }, { "assetId": "1088357900348863545364", "symbol": "DOT_vKSM_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "32", "symbol": "vKSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000" }, { "assetId": "27", "symbol": "lsDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "21430000" }, { "assetId": "15", "symbol": "SCRT", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "70000" }, { "assetId": "1088357900348863545355", "symbol": "DOT_NTRN_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "150", "symbol": "USDC", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "200000" }, { "assetId": "2125", "symbol": "TNKR", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "135000000000" }, { "assetId": "106", "symbol": "PICA_USDT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "11", "symbol": "STARS", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "2000000" }, { "assetId": "14", "symbol": "bCRE", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "1088357900348863545353", "symbol": "DOT_ATOM_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "420", "symbol": "HUAHUA", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "44", "symbol": "AMPE", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000000000" }, { "assetId": "1088357900348863545365", "symbol": "DOT_vDOT_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" }, { "assetId": "107", "symbol": "PICA_KSM_LPT", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100" } ] }, "Quartz": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "QTZ", "isEVM": false, "nativeAssets": [ { "symbol": "QTZ", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [] }, "RobonomicsKusama": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "XRT", "isEVM": false, "nativeAssets": [ { "symbol": "XRT", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "1000" } ], - "otherAssets": [] + "otherAssets": [ + { + "assetId": "4294967295", + "symbol": "KSM", + "decimals": 12, + "existentialDeposit": "100" + }, + { + "assetId": "4294967291", + "symbol": "CSM", + "decimals": 12, + "existentialDeposit": "1000000000000" + } + ] }, "RobonomicsPolkadot": { "relayChainAssetSymbol": "DOT", @@ -7559,25 +8105,28 @@ "nativeAssets": [ { "symbol": "XRT", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "1000" } ], "otherAssets": [ { "assetId": "4294967295", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100" } ] }, "PeopleKusama": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "KSM", "isEVM": false, "nativeAssets": [ { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "33333333" } ], "otherAssets": [] @@ -7589,19 +8138,21 @@ "nativeAssets": [ { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1000000000" } ], "otherAssets": [] }, "Shiden": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "SDN", "isEVM": false, "nativeAssets": [ { "symbol": "SDN", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000" } ], "otherAssets": [ @@ -7614,7 +8165,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551634", @@ -7635,7 +8187,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "4294969280", @@ -7656,7 +8209,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551618", @@ -7677,7 +8231,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551619", @@ -7698,7 +8253,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551616", @@ -7719,7 +8275,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551627", @@ -7740,7 +8297,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551629", @@ -7761,7 +8319,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551628", @@ -7782,7 +8341,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551623", @@ -7795,7 +8355,8 @@ "Parachain": 2004 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551624", @@ -7808,7 +8369,8 @@ "Parachain": 2012 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551626", @@ -7821,7 +8383,8 @@ "Parachain": 2016 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551620", @@ -7839,7 +8402,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551621", @@ -7860,7 +8424,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551622", @@ -7881,7 +8446,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551633", @@ -7894,7 +8460,8 @@ "Parachain": 2095 } } - } + }, + "existentialDeposit": "1" }, { "assetId": "18446744073709551625", @@ -7912,7 +8479,8 @@ } ] } - } + }, + "existentialDeposit": "1" } ] }, @@ -7923,7 +8491,8 @@ "nativeAssets": [ { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "3333333" }, { "symbol": "DOT", @@ -7949,7 +8518,8 @@ { "GeneralIndex": 16 } - ] + ], + "existentialDeposit": "10000000" }, { "assetId": "1984", @@ -7968,7 +8538,8 @@ { "GeneralIndex": 1984 } - ] + ], + "existentialDeposit": "100" }, { "assetId": "223", @@ -7987,7 +8558,8 @@ { "GeneralIndex": 223 } - ] + ], + "existentialDeposit": "10000" }, { "assetId": "8", @@ -8006,7 +8578,8 @@ { "GeneralIndex": 8 } - ] + ], + "existentialDeposit": "10000" }, { "symbol": "DOT", @@ -8022,7 +8595,8 @@ } ] } - } + }, + "existentialDeposit": "10000000" }, { "symbol": "TNKR", @@ -8039,7 +8613,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "symbol": "FREN", @@ -8053,7 +8628,8 @@ } ] } - } + }, + "existentialDeposit": "1000000000" }, { "symbol": "MOVR", @@ -8070,7 +8646,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "symbol": "TEER", @@ -8084,18 +8661,20 @@ } ] } - } + }, + "existentialDeposit": "1000000000" } ] }, "CoretimeKusama": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "KSM", "isEVM": false, "nativeAssets": [ { "symbol": "KSM", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "33333333" } ], "otherAssets": [] @@ -8107,7 +8686,8 @@ "nativeAssets": [ { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1000000000" } ], "otherAssets": [] @@ -8119,7 +8699,8 @@ "nativeAssets": [ { "symbol": "TUR", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "100000000" } ], "otherAssets": [ @@ -8132,7 +8713,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "2", @@ -8153,7 +8735,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "3", @@ -8174,7 +8757,8 @@ } ] } - } + }, + "existentialDeposit": "100000000000" }, { "assetId": "4", @@ -8195,7 +8779,8 @@ } ] } - } + }, + "existentialDeposit": "500000000" }, { "assetId": "7", @@ -8208,7 +8793,8 @@ "Parachain": 2004 } } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "8", @@ -8221,7 +8807,8 @@ "Parachain": 2007 } } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "9", @@ -8239,7 +8826,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "5", @@ -8260,7 +8848,8 @@ } ] } - } + }, + "existentialDeposit": "500000000000" }, { "assetId": "6", @@ -8281,7 +8870,8 @@ } ] } - } + }, + "existentialDeposit": "500000000" }, { "assetId": "10", @@ -8302,7 +8892,8 @@ } ] } - } + }, + "existentialDeposit": "0" }, { "assetId": "0", @@ -8315,7 +8906,8 @@ "Parachain": 2114 } } - } + }, + "existentialDeposit": "100000000" } ] }, @@ -8326,7 +8918,8 @@ "nativeAssets": [ { "symbol": "UNQ", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [] @@ -8338,19 +8931,22 @@ "nativeAssets": [ { "symbol": "CRU", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000" } ], "otherAssets": [ { "assetId": "187224307232923873519830480073807488153", "symbol": "EQD", - "decimals": 9 + "decimals": 9, + "existentialDeposit": "1000" }, { "assetId": "64174511183114006009298114091987195453", "symbol": "PINK", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1" } ] }, @@ -8361,169 +8957,202 @@ "nativeAssets": [ { "symbol": "MANTA", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "100000000000000000" } ], "otherAssets": [ { "assetId": "21", "symbol": "BUSD.aca.eth", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" }, { "assetId": "26", "symbol": "WBTC.aca.eth", - "decimals": 8 + "decimals": 8, + "existentialDeposit": "35" }, { "assetId": "35", "symbol": "WBNB.MRL.BSC", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "40000000000000" }, { "assetId": "16", "symbol": "SHIB", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000000000" }, { "assetId": "29", "symbol": "WBNB", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "40000000000000" }, { "assetId": "23", "symbol": "DAI.aca.eth", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" }, { "assetId": "9", "symbol": "USDT", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000" }, { "assetId": "37", "symbol": "LP-GLMR-MANTA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" }, { "assetId": "31", "symbol": "DAI.MRL.ETH", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" }, { "assetId": "18", "symbol": "LINK", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "2000000000000000" }, { "assetId": "20", "symbol": "ARB.aca.eth", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "9000000000000000" }, { "assetId": "8", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1" }, { "assetId": "30", "symbol": "BNC", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" }, { "assetId": "33", "symbol": "USDC.MRL.ETH", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "10000" }, { "assetId": "10", "symbol": "GLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1" }, { "assetId": "12", "symbol": "LDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "500000000" }, { "assetId": "36", "symbol": "LP-DOT-MANTA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" }, { "assetId": "17", "symbol": "UNI", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "2000000000000000" }, { "assetId": "38", "symbol": "LP-USDT-MANTA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1" }, { "assetId": "1000000000", "symbol": "MANDEX", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "3000000000000" }, { "assetId": "25", "symbol": "MATIC.aca.poly", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" }, { "assetId": "13", "symbol": "ARB.aca.arb", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "9000000000000000" }, { "assetId": "22", "symbol": "USDT.aca.eth", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "10000" }, { "assetId": "28", "symbol": "MATIC.aca.eth", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" }, { "assetId": "34", "symbol": "TBTC.MRL.ETH", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1" }, { "assetId": "24", "symbol": "USDC.aca.eth", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "10000" }, { "assetId": "19", "symbol": "APE", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "3000000000000000" }, { "assetId": "32", "symbol": "WETH.MRL.ETH", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "5555555555555" }, { "assetId": "27", "symbol": "WETH.aca.eth", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "5555555555555" }, { "assetId": "15", "symbol": "LDO", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "5000000000000000" }, { "assetId": "11", "symbol": "ACA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "100000000000" }, { "assetId": "14", "symbol": "BUSD.aca.bsc", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" } ] }, @@ -8546,14 +9175,16 @@ "nativeAssets": [ { "symbol": "NEURO", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000000" } ], "otherAssets": [ { "assetId": "1", "symbol": "TRAC", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1" } ] }, @@ -8564,7 +9195,8 @@ "nativeAssets": [ { "symbol": "PEN", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "1000000000" } ], "otherAssets": [ @@ -8577,7 +9209,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "1000" }, { "assetId": "2", @@ -8598,7 +9231,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "7", @@ -8619,7 +9253,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "1", @@ -8640,7 +9275,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "6", @@ -8658,7 +9294,8 @@ } ] } - } + }, + "existentialDeposit": "1" }, { "assetId": "12", @@ -8682,7 +9319,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "4", @@ -8706,7 +9344,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "9", @@ -8719,7 +9358,8 @@ "Parachain": 2006 } } - } + }, + "existentialDeposit": "0" }, { "assetId": "11", @@ -8740,7 +9380,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "10", @@ -8761,7 +9402,8 @@ } ] } - } + }, + "existentialDeposit": "1000000" }, { "assetId": "8", @@ -8779,7 +9421,8 @@ } ] } - } + }, + "existentialDeposit": "1000" }, { "assetId": "5", @@ -8792,25 +9435,8 @@ "Parachain": 2040 } } - } - }, - { - "assetId": "Native", - "symbol": "PEN", - "decimals": 12, - "multiLocation": { - "parents": 1, - "interior": { - "X2": [ - { - "Parachain": 2094 - }, - { - "PalletInstance": 10 - } - ] - } - } + }, + "existentialDeposit": "1000" } ] }, @@ -8821,7 +9447,8 @@ "nativeAssets": [ { "symbol": "ZTG", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "50000000" } ], "otherAssets": [ @@ -8829,68 +9456,81 @@ "assetId": "1", "symbol": "USDC", "decimals": 6, + "existentialDeposit": "100000000", "alias": "USDC1" }, { "assetId": "11", "symbol": "vASTR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1295001295" }, { "assetId": "4", "symbol": "USDC", "decimals": 6, + "existentialDeposit": "100000000", "alias": "USDC2" }, { "assetId": "9", "symbol": "vDOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "15748031" }, { "assetId": "7", "symbol": "INTR", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "8403361345" }, { "assetId": "2", "symbol": "WSX", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "10000000000000" }, { "assetId": "3", "symbol": "GLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "233481200" }, { "assetId": "0", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "10000000" }, { "assetId": "8", "symbol": "BNC", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "466853408" }, { "assetId": "5", "symbol": "USDT", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "100000000" }, { "assetId": "10", "symbol": "vGLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "515729758" }, { "assetId": "12", "symbol": "vMANTA", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "116645282" }, { "assetId": "6", "symbol": "HDX", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "15830299193" } ] }, @@ -8901,7 +9541,8 @@ "nativeAssets": [ { "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1000000000" } ], "otherAssets": [] @@ -8913,7 +9554,8 @@ "nativeAssets": [ { "symbol": "PHA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "10000000000" } ], "otherAssets": [ @@ -8926,7 +9568,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "12", @@ -8947,7 +9590,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "5", @@ -8968,7 +9612,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "3", @@ -8989,7 +9634,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "4", @@ -9010,7 +9656,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "1", @@ -9028,7 +9675,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "6", @@ -9041,7 +9689,8 @@ "Parachain": 2006 } } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "9", @@ -9054,7 +9703,8 @@ "Parachain": 2011 } } - } + }, + "existentialDeposit": "10000000" }, { "assetId": "10", @@ -9075,7 +9725,8 @@ } ] } - } + }, + "existentialDeposit": "10000000" }, { "assetId": "2", @@ -9096,7 +9747,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "8", @@ -9117,7 +9769,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "13", @@ -9138,7 +9791,8 @@ } ] } - } + }, + "existentialDeposit": "100000000" }, { "assetId": "14", @@ -9159,7 +9813,8 @@ } ] } - } + }, + "existentialDeposit": "1000000" }, { "assetId": "11", @@ -9177,7 +9832,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "7", @@ -9195,7 +9851,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" } ] }, @@ -9213,6 +9870,7 @@ { "symbol": "WETH", "assetId": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "existentialDeposit": "15000000000000", "multiLocation": { "parents": 2, "interior": { @@ -9236,6 +9894,7 @@ { "symbol": "WBTC", "assetId": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9259,6 +9918,7 @@ { "symbol": "SHIB", "assetId": "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9282,6 +9942,7 @@ { "symbol": "PEPE", "assetId": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9305,6 +9966,7 @@ { "symbol": "TON", "assetId": "0x582d872a1b094fc48f5de31d3b73f2d9be47def1", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9328,6 +9990,7 @@ { "symbol": "wstETH", "assetId": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9351,6 +10014,7 @@ { "symbol": "tBTC", "assetId": "0x18084fba666a33d37592fa2633fd49a74dd93a88", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9374,6 +10038,7 @@ { "symbol": "USDC", "assetId": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9397,6 +10062,7 @@ { "symbol": "USDT", "assetId": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9420,6 +10086,7 @@ { "symbol": "DAI", "assetId": "0x6b175474e89094c44da98b954eedeac495271d0f", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9443,6 +10110,7 @@ { "symbol": "KILT", "assetId": "0x5d3d01fd6d2ad1169b17918eb4f153c6616288eb", + "existentialDeposit": "1", "multiLocation": { "parents": 2, "interior": { @@ -9466,13 +10134,14 @@ ] }, "Khala": { - "relayChainAssetSymbol": "KSM", + "relayChainAssetSymbol": "DOT", "nativeAssetSymbol": "PHA", "isEVM": false, "nativeAssets": [ { "symbol": "PHA", - "decimals": 12 + "decimals": 12, + "existentialDeposit": "10000000000" } ], "otherAssets": [ @@ -9485,7 +10154,8 @@ "interior": { "Here": null } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "1", @@ -9506,7 +10176,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "4", @@ -9527,7 +10198,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "2", @@ -9548,7 +10220,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "3", @@ -9569,7 +10242,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "12", @@ -9582,7 +10256,8 @@ "Parachain": 2007 } } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "6", @@ -9600,7 +10275,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "8", @@ -9613,7 +10289,8 @@ "Parachain": 2084 } } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "7", @@ -9634,7 +10311,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "15", @@ -9647,7 +10325,8 @@ "Parachain": 2087 } } - } + }, + "existentialDeposit": "10000000000" }, { "assetId": "5", @@ -9669,6 +10348,7 @@ ] } }, + "existentialDeposit": "10000000000", "alias": "BSX1" }, { @@ -9688,6 +10368,7 @@ ] } }, + "existentialDeposit": "10000000000", "alias": "BSX2" }, { @@ -9709,7 +10390,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "14", @@ -9730,7 +10412,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "11", @@ -9748,7 +10431,8 @@ } ] } - } + }, + "existentialDeposit": "10000000000000000" }, { "assetId": "10", @@ -9761,7 +10445,8 @@ "Parachain": 2114 } } - } + }, + "existentialDeposit": "100000000" } ] }, @@ -9772,7 +10457,8 @@ "nativeAssets": [ { "symbol": "MYTH", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "10000000000000000" } ], "otherAssets": [] @@ -9784,44 +10470,52 @@ "nativeAssets": [ { "symbol": "PEAQ", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "0" } ], "otherAssets": [ { "assetId": "1005", "symbol": "USDT.wh", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "1004", "symbol": "DAI.wh", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000000" }, { "assetId": "1000", "symbol": "GLMR", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000000000000000" }, { "assetId": "1002", "symbol": "WETH.wh", - "decimals": 18 + "decimals": 18, + "existentialDeposit": "1000000" }, { "assetId": "1", "symbol": "DOT", - "decimals": 10 + "decimals": 10, + "existentialDeposit": "1000000" }, { "assetId": "1001", "symbol": "USDC.wh", - "decimals": 6 + "decimals": 6, + "existentialDeposit": "1000000" }, { "assetId": "1003", "symbol": "WBTC.wh", - "decimals": 8 + "decimals": 8, + "existentialDeposit": "1000" } ] } diff --git a/packages/sdk/src/maps/existential-deposits.json b/packages/sdk/src/maps/existential-deposits.json deleted file mode 100644 index 72ae97ef..00000000 --- a/packages/sdk/src/maps/existential-deposits.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "AssetHubPolkadot": "100000000", - "Acala": "100000000000", - "Astar": "1000000", - "BifrostPolkadot": "10000000000", - "Bitgreen": "1000000000", - "Centrifuge": "1000000000000", - "ComposableFinance": "100000000000", - "Darwinia": "0", - "Hydration": "1000000000000", - "Litentry": "100000000000000000", - "Moonbeam": "0", - "Parallel": "100000000000", - "AssetHubKusama": "3333333", - "CoretimeKusama": "33333333", - "Encointer": "33333333", - "Altair": "1000000000000", - "Amplitude": "1000000000", - "Bajun": "1000000000", - "Basilisk": "1000000000000", - "BifrostKusama": "10000000000", - "Calamari": "100000000000", - "CrustShadow": "100000000000", - "Crab": "0", - "Imbue": "1000000", - "InvArchTinker": "1000000000", - "Karura": "100000000000", - "Moonriver": "0", - "ParallelHeiko": "10000000000", - "Picasso": "100000000000", - "Quartz": "0", - "RobonomicsKusama": "1000", - "Shiden": "1000000", - "Turing": "100000000", - "Unique": "0", - "Crust": "100000000", - "Manta": "100000000000000000", - "Nodle": "10000", - "NeuroWeb": "1000000000000", - "Pendulum": "1000000000", - "Zeitgeist": "50000000", - "Polkadot": "10000000000", - "Kusama": "333333333", - "Interlay": "0", - "Kintsugi": "0", - "Collectives": "1000000000", - "Khala": "10000000000", - "Phala": "10000000000", - "Subsocial": "100000000", - "KiltSpiritnet": "10000000000000", - "Curio": "10000000000000000", - "BridgeHubPolkadot": "1000000000", - "BridgeHubKusama": "33333333", - "Mythos": "10000000000000000", - "Peaq": "0", - "CoretimePolkadot": "1000000000", - "Polimec": "100000000", - "RobonomicsPolkadot": "1000", - "PeoplePolkadot": "1000000000", - "PeopleKusama": "33333333" -} diff --git a/packages/sdk/src/nodes/supported/Centrifuge.ts b/packages/sdk/src/nodes/supported/Centrifuge.ts index b10d82a4..e021f672 100644 --- a/packages/sdk/src/nodes/supported/Centrifuge.ts +++ b/packages/sdk/src/nodes/supported/Centrifuge.ts @@ -4,6 +4,7 @@ import { InvalidCurrencyError } from '../../errors' import type { TAsset } from '../../types' import { type IXTokensTransfer, Version, type TXTokensTransferOptions } from '../../types' import { isForeignAsset } from '../../utils/assets' +import { getNodeProviders } from '../config' import ParachainNode from '../ParachainNode' import XTokensTransferImpl from '../xTokens' @@ -27,4 +28,9 @@ export class Centrifuge extends ParachainNode implements const currencySelection = this.getCurrencySelection(asset) return XTokensTransferImpl.transferXTokens(input, currencySelection) } + + getProvider(): string { + // Return the second WebSocket URL because the first one is sometimes unreliable. + return getNodeProviders(this.node)[1] + } } diff --git a/packages/sdk/src/pallets/assets/assets.ts b/packages/sdk/src/pallets/assets/assets.ts index 4110561d..3dcb620f 100644 --- a/packages/sdk/src/pallets/assets/assets.ts +++ b/packages/sdk/src/pallets/assets/assets.ts @@ -102,14 +102,8 @@ export const getAllAssetsSymbols = (node: TNodeWithRelayChains): string[] => { * @param node - The node for which to get the native asset symbol. * @returns The symbol of the native asset. */ -export const getNativeAssetSymbol = (node: TNodeWithRelayChains): string => { - if (node === 'Polkadot') { - return 'DOT' - } else if (node === 'Kusama') { - return 'KSM' - } - return getAssetsObject(node).nativeAssetSymbol -} +export const getNativeAssetSymbol = (node: TNodeWithRelayChains): string => + getAssetsObject(node).nativeAssetSymbol /** * Determines whether a specified node supports an asset with the given symbol. @@ -173,3 +167,12 @@ export const getTNode = ( ) ?? null ) } + +/** + * Retrieves the existential deposit value for a given node. + * + * @param node - The node for which to get the existential deposit. + * @returns The existential deposit as a string if available; otherwise, null. + */ +export const getExistentialDeposit = (node: TNodeDotKsmWithRelayChains): string | null => + assetsMap[node].nativeAssets[0].existentialDeposit ?? null diff --git a/packages/sdk/src/pallets/assets/eds.test.ts b/packages/sdk/src/pallets/assets/eds.test.ts deleted file mode 100644 index 1e3df1f2..00000000 --- a/packages/sdk/src/pallets/assets/eds.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { describe, it, expect, vi } from 'vitest' -import type { TNodeDotKsmWithRelayChains } from '../../types' -import { getExistentialDeposit } from './eds' - -vi.mock('../../maps/existential-deposits.json', () => ({ - Kusama: '0.01', - Polkadot: '1.00', - RelayChain1: '0.1', - NonExistentNode: null -})) - -describe('getExistentialDeposit', () => { - it('should return the correct existential deposit for a known node', () => { - const node = 'Kusama' as TNodeDotKsmWithRelayChains - const expectedEd = '0.01' - - const ed = getExistentialDeposit(node) - - expect(ed).toEqual(expectedEd) - }) - - it('should return null for a node without an existential deposit', () => { - const node = 'NonExistentNode' as TNodeDotKsmWithRelayChains - - const ed = getExistentialDeposit(node) - - expect(ed).toBeNull() - }) -}) diff --git a/packages/sdk/src/pallets/assets/eds.ts b/packages/sdk/src/pallets/assets/eds.ts deleted file mode 100644 index be23c934..00000000 --- a/packages/sdk/src/pallets/assets/eds.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { TEdJsonMap, TNodeDotKsmWithRelayChains } from '../../types' -import * as edMapJson from '../../maps/existential-deposits.json' assert { type: 'json' } - -const edMap = edMapJson as TEdJsonMap - -/** - * Retrieves the existential deposit value for a given node. - * - * @param node - The node for which to get the existential deposit. - * @returns The existential deposit as a string if available; otherwise, null. - */ -export const getExistentialDeposit = (node: TNodeDotKsmWithRelayChains): string | null => - edMap[node] diff --git a/packages/sdk/src/pallets/assets/getExistentialDeposit.ts b/packages/sdk/src/pallets/assets/getExistentialDeposit.ts deleted file mode 100644 index d2adb0cd..00000000 --- a/packages/sdk/src/pallets/assets/getExistentialDeposit.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { type TNodeDotKsmWithRelayChains, type TEdJsonMap } from '../../types' -import * as edsMapJson from '../../maps/existential-deposits.json' assert { type: 'json' } -import { getBalanceNativeInternal } from './balance/getBalanceNative' -import type { IPolkadotApi } from '../../api/IPolkadotApi' -const palletsMap = edsMapJson as TEdJsonMap - -export const getExistentialDeposit = (node: TNodeDotKsmWithRelayChains): bigint => - BigInt(palletsMap[node] as string) - -export const getMinNativeTransferableAmount = (node: TNodeDotKsmWithRelayChains): bigint => { - const ed = getExistentialDeposit(node) - const tenPercent = ed / BigInt(10) - return ed + tenPercent -} - -export const getMaxNativeTransferableAmount = async ( - api: IPolkadotApi, - address: string, - node: TNodeDotKsmWithRelayChains -): Promise => { - const ed = getExistentialDeposit(node) - const nativeBalance = await getBalanceNativeInternal({ - address, - node, - api - }) - const maxTransferableAmount = nativeBalance - ed - ed / BigInt(10) - return maxTransferableAmount > BigInt(0) ? maxTransferableAmount : BigInt(0) -} diff --git a/packages/sdk/src/pallets/assets/getOriginFeeDetails.test.ts b/packages/sdk/src/pallets/assets/getOriginFeeDetails.test.ts index 59302c16..fc81380a 100644 --- a/packages/sdk/src/pallets/assets/getOriginFeeDetails.test.ts +++ b/packages/sdk/src/pallets/assets/getOriginFeeDetails.test.ts @@ -1,8 +1,8 @@ import { describe, it, expect, vi } from 'vitest' import * as balanceModule from './balance/getBalanceNative' -import * as depositModule from './getExistentialDeposit' import * as utilsModule from '../../utils' import * as BuilderModule from '../../builder' +import * as assetsModule from './assets' import type { ApiPromise } from '@polkadot/api' import type { TCurrencyCore } from '../../types' @@ -27,11 +27,11 @@ describe('getOriginFeeDetails', () => { const account = 'account-address' const nativeBalance = BigInt('1000000000000000') - const minTransferableAmount = BigInt('1000000000000') + const ed = '1000000000000' const xcmFee = '1000000000' vi.spyOn(balanceModule, 'getBalanceNativeInternal').mockResolvedValue(nativeBalance) - vi.spyOn(depositModule, 'getMinNativeTransferableAmount').mockReturnValue(minTransferableAmount) + vi.spyOn(assetsModule, 'getExistentialDeposit').mockReturnValue(ed) vi.spyOn(utilsModule, 'createApiInstanceForNode').mockResolvedValue({} as ApiPromise) const mockTx = { @@ -83,11 +83,11 @@ describe('getOriginFeeDetails', () => { const account = 'account-address' const nativeBalance = BigInt('1000000000000000') - const minTransferableAmount = BigInt('1000000000000') + const ed = '1000000000000' const xcmFee = '1000000000' vi.spyOn(balanceModule, 'getBalanceNativeInternal').mockResolvedValue(nativeBalance) - vi.spyOn(depositModule, 'getMinNativeTransferableAmount').mockReturnValue(minTransferableAmount) + vi.spyOn(assetsModule, 'getExistentialDeposit').mockReturnValue(ed) vi.spyOn(utilsModule, 'createApiInstanceForNode').mockResolvedValue({} as ApiPromise) const mockTx = { @@ -139,11 +139,11 @@ describe('getOriginFeeDetails', () => { const account = 'account-address' const nativeBalance = BigInt('1000000000000000') - const minTransferableAmount = BigInt('1000000000000') + const ed = '1000000000000' const xcmFee = '1000000000' vi.spyOn(balanceModule, 'getBalanceNativeInternal').mockResolvedValue(nativeBalance) - vi.spyOn(depositModule, 'getMinNativeTransferableAmount').mockReturnValue(minTransferableAmount) + vi.spyOn(assetsModule, 'getExistentialDeposit').mockReturnValue(ed) vi.spyOn(utilsModule, 'createApiInstanceForNode').mockResolvedValue({} as ApiPromise) const mockTx = { diff --git a/packages/sdk/src/pallets/assets/getOriginFeeDetails.ts b/packages/sdk/src/pallets/assets/getOriginFeeDetails.ts index 955539ef..ea491508 100644 --- a/packages/sdk/src/pallets/assets/getOriginFeeDetails.ts +++ b/packages/sdk/src/pallets/assets/getOriginFeeDetails.ts @@ -1,11 +1,11 @@ import type { TCurrencyCore, TNodePolkadotKusama, TOriginFeeDetails } from '../../types' import { type TNodeDotKsmWithRelayChains } from '../../types' import { getBalanceNativeInternal } from './balance/getBalanceNative' -import { getMinNativeTransferableAmount } from './getExistentialDeposit' import { isRelayChain } from '../../utils' import { Builder } from '../../builder' import type { IPolkadotApi } from '../../api/IPolkadotApi' import type { TGetOriginFeeDetailsOptions } from '../../types/TBalance' +import { getExistentialDeposit } from './assets' const createTx = async ( api: IPolkadotApi, @@ -61,8 +61,8 @@ export const getOriginFeeDetailsInternal = async ({ api }) - const minTransferableAmount = getMinNativeTransferableAmount(origin) - const sufficientForXCM = nativeBalance - minTransferableAmount - xcmFeeWithMargin > 0 + const existentialDeposit = BigInt(getExistentialDeposit(origin) ?? '0') + const sufficientForXCM = nativeBalance - existentialDeposit - xcmFeeWithMargin > 0 return { sufficientForXCM, diff --git a/packages/sdk/src/pallets/assets/getExistentialDeposit.test.ts b/packages/sdk/src/pallets/assets/getTransferableAmount.test.ts similarity index 52% rename from packages/sdk/src/pallets/assets/getExistentialDeposit.test.ts rename to packages/sdk/src/pallets/assets/getTransferableAmount.test.ts index 922fd4d7..d2138868 100644 --- a/packages/sdk/src/pallets/assets/getExistentialDeposit.test.ts +++ b/packages/sdk/src/pallets/assets/getTransferableAmount.test.ts @@ -1,49 +1,35 @@ import { describe, it, expect, vi } from 'vitest' -import { - getExistentialDeposit, - getMinNativeTransferableAmount, - getMaxNativeTransferableAmount -} from './getExistentialDeposit' -import * as edsMapJson from '../../maps/existential-deposits.json' +import { getMaxNativeTransferableAmount } from './getTransferableAmount' import { getBalanceNativeInternal } from './balance/getBalanceNative' import type { TNodeDotKsmWithRelayChains } from '../../types' import type { IPolkadotApi } from '../../api/IPolkadotApi' import type { ApiPromise } from '@polkadot/api' import type { Extrinsic } from '../../pjs/types' +import { getExistentialDeposit } from './assets' vi.mock('./balance/getBalanceNative', () => ({ getBalanceNativeInternal: vi.fn() })) -describe('Existential Deposit and Transferable Amounts', () => { +describe('Transferable Amounts', () => { const apiMock = { disconnect: vi.fn() } as unknown as IPolkadotApi - const mockPalletsMap = edsMapJson as { [key: string]: string } const mockNode: TNodeDotKsmWithRelayChains = 'Polkadot' const mockAddress = '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' - it('should return the correct existential deposit', () => { - const ed = getExistentialDeposit(mockNode) - expect(ed).toBe(BigInt(mockPalletsMap[mockNode])) - }) - - it('should return the correct minimum native transferable amount', () => { - const ed = getExistentialDeposit(mockNode) - const expectedMinTransferableAmount = ed + ed / BigInt(10) - const result = getMinNativeTransferableAmount(mockNode) - - expect(result).toBe(expectedMinTransferableAmount) - }) - it('should return the correct maximum native transferable amount', async () => { const mockBalance = BigInt(1000000000000) vi.mocked(getBalanceNativeInternal).mockResolvedValue(mockBalance) - const ed = getExistentialDeposit(mockNode) - const expectedMaxTransferableAmount = mockBalance - ed - ed / BigInt(10) + const ed = BigInt(getExistentialDeposit(mockNode) ?? '0') + const expectedMaxTransferableAmount = mockBalance - ed - const result = await getMaxNativeTransferableAmount(apiMock, mockAddress, mockNode) + const result = await getMaxNativeTransferableAmount({ + api: apiMock, + address: mockAddress, + node: mockNode + }) expect(result).toBe( expectedMaxTransferableAmount > BigInt(0) ? expectedMaxTransferableAmount : BigInt(0) @@ -54,7 +40,11 @@ describe('Existential Deposit and Transferable Amounts', () => { const mockBalance = BigInt(5000) vi.mocked(getBalanceNativeInternal).mockResolvedValue(mockBalance) - const result = await getMaxNativeTransferableAmount(apiMock, mockAddress, mockNode) + const result = await getMaxNativeTransferableAmount({ + api: apiMock, + address: mockAddress, + node: mockNode + }) expect(result).toBe(BigInt(0)) }) diff --git a/packages/sdk/src/pallets/assets/getTransferableAmount.ts b/packages/sdk/src/pallets/assets/getTransferableAmount.ts new file mode 100644 index 00000000..46d6b129 --- /dev/null +++ b/packages/sdk/src/pallets/assets/getTransferableAmount.ts @@ -0,0 +1,59 @@ +import { getBalanceNativeInternal } from './balance/getBalanceNative' +import { getExistentialDeposit } from './assets' +import { getBalanceForeignInternal } from './balance/getBalanceForeign' +import type { + TGetMaxForeignTransferableAmountOptions, + TGetMaxNativeTransferableAmountOptions +} from '../../types/TBalance' +import { getAssetBySymbolOrId } from './getAssetBySymbolOrId' +import { InvalidCurrencyError } from '../../errors' + +export const getMaxNativeTransferableAmount = async ({ + api, + address, + node +}: TGetMaxNativeTransferableAmountOptions): Promise => { + const ed = getExistentialDeposit(node) + if (!ed) { + throw new Error(`Cannot get existential deposit for node ${node}`) + } + const edBN = BigInt(ed) + const nativeBalance = await getBalanceNativeInternal({ + address, + node, + api + }) + const maxTransferableAmount = nativeBalance - edBN + return maxTransferableAmount > BigInt(0) ? maxTransferableAmount : BigInt(0) +} + +export const getMaxForeignTransferableAmount = async ({ + api, + address, + node, + currency +}: TGetMaxForeignTransferableAmountOptions): Promise => { + const asset = + getAssetBySymbolOrId(node, currency, null) ?? + (origin === 'AssetHubPolkadot' ? getAssetBySymbolOrId('Ethereum', currency, null) : null) + + if (!asset) { + throw new InvalidCurrencyError(`Asset ${JSON.stringify(currency)} not found on ${origin}`) + } + + const ed = asset.existentialDeposit + + if (!ed) { + throw new Error(`Cannot get existential deposit for asset ${JSON.stringify(asset)}`) + } + + const edBN = BigInt(ed) + const balance = await getBalanceForeignInternal({ + address, + node, + api, + currency + }) + const maxTransferableAmount = balance - edBN + return maxTransferableAmount > BigInt(0) ? maxTransferableAmount : BigInt(0) +} diff --git a/packages/sdk/src/pallets/assets/index.ts b/packages/sdk/src/pallets/assets/index.ts index b12aa334..6753076c 100644 --- a/packages/sdk/src/pallets/assets/index.ts +++ b/packages/sdk/src/pallets/assets/index.ts @@ -1,5 +1,4 @@ export * from './assets' -export * from './eds' export * from './balance/getAssetBalance' export * from './balance/getBalanceNative' export * from './balance/getBalanceForeign' diff --git a/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.test.ts b/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.test.ts index d151cbed..27e09547 100644 --- a/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.test.ts +++ b/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.test.ts @@ -5,13 +5,9 @@ import { getBalanceNativeInternal } from '../balance/getBalanceNative' import { getOriginFeeDetailsInternal } from '../getOriginFeeDetails' import { getAssetBySymbolOrId } from '../getAssetBySymbolOrId' import { getAssetBalanceInternal } from '../balance/getAssetBalance' -import { - getExistentialDeposit, - getMaxNativeTransferableAmount, - getMinNativeTransferableAmount -} from '../getExistentialDeposit' +import { getMaxNativeTransferableAmount } from '../getTransferableAmount' import type { ApiPromise } from '@polkadot/api' -import { getNativeAssetSymbol } from '../assets' +import { getExistentialDeposit, getNativeAssetSymbol } from '../assets' import { InvalidCurrencyError } from '../../../errors' import type { IPolkadotApi } from '../../../api/IPolkadotApi' import type { Extrinsic } from '../../../pjs/types' @@ -22,14 +18,13 @@ vi.mock('../../../utils', () => ({ getNativeAssetSymbol: vi.fn() })) -vi.mock('../getExistentialDeposit', () => ({ - getExistentialDeposit: vi.fn(), - getMinNativeTransferableAmount: vi.fn(), +vi.mock('../getTransferableAmount', () => ({ getMaxNativeTransferableAmount: vi.fn() })) vi.mock('../assets', () => ({ - getNativeAssetSymbol: vi.fn() + getNativeAssetSymbol: vi.fn(), + getExistentialDeposit: vi.fn() })) vi.mock('../getAssetBySymbolOrId', () => ({ @@ -71,8 +66,7 @@ describe('getTransferInfo', () => { }) vi.mocked(getAssetBySymbolOrId).mockReturnValue({ symbol: 'DOT', assetId: '1' }) vi.mocked(getAssetBalanceInternal).mockResolvedValue(BigInt(2000)) - vi.mocked(getExistentialDeposit).mockReturnValue(BigInt('100')) - vi.mocked(getMinNativeTransferableAmount).mockReturnValue(BigInt('10')) + vi.mocked(getExistentialDeposit).mockReturnValue('100') vi.mocked(getMaxNativeTransferableAmount).mockResolvedValue(BigInt(4000)) }) @@ -105,7 +99,7 @@ describe('getTransferInfo', () => { }, existentialDeposit: BigInt(100), asset: getNativeAssetSymbol(origin), - minNativeTransferableAmount: BigInt(10), + minNativeTransferableAmount: BigInt(100), maxNativeTransferableAmount: BigInt(4000) }, destinationFeeBalance: { diff --git a/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.ts b/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.ts index 6248759f..463f8adc 100644 --- a/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.ts +++ b/packages/sdk/src/pallets/assets/transfer-info/getTransferInfo.ts @@ -1,15 +1,11 @@ import { InvalidCurrencyError } from '../../../errors' import type { TGetTransferInfoOptions, TTransferInfo } from '../../../types/TTransferInfo' import { determineRelayChainSymbol } from '../../../utils' -import { getNativeAssetSymbol } from '../assets' +import { getExistentialDeposit, getNativeAssetSymbol } from '../assets' import { getAssetBalanceInternal } from '../balance/getAssetBalance' import { getBalanceNativeInternal } from '../balance/getBalanceNative' import { getAssetBySymbolOrId } from '../getAssetBySymbolOrId' -import { - getExistentialDeposit, - getMaxNativeTransferableAmount, - getMinNativeTransferableAmount -} from '../getExistentialDeposit' +import { getMaxNativeTransferableAmount } from '../getTransferableAmount' import { getOriginFeeDetailsInternal } from '../getOriginFeeDetails' export const getTransferInfo = async ({ @@ -72,12 +68,12 @@ export const getTransferInfo = async ({ xcmFee: xcmFeeDetails, existentialDeposit: BigInt(getExistentialDeposit(origin) ?? 0), asset: getNativeAssetSymbol(origin), - minNativeTransferableAmount: getMinNativeTransferableAmount(origin), - maxNativeTransferableAmount: await getMaxNativeTransferableAmount( + minNativeTransferableAmount: BigInt(getExistentialDeposit(origin) ?? '0'), + maxNativeTransferableAmount: await getMaxNativeTransferableAmount({ api, - accountOrigin, - origin - ) + address: accountOrigin, + node: origin + }) }, destinationFeeBalance: { balance: await getBalanceNativeInternal({ @@ -86,7 +82,7 @@ export const getTransferInfo = async ({ api }), currency: getNativeAssetSymbol(destination), - existentialDeposit: getExistentialDeposit(destination) + existentialDeposit: BigInt(getExistentialDeposit(destination) ?? '0') } } } finally { diff --git a/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.test.ts b/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.test.ts index 0ec56dd7..689263ed 100644 --- a/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.test.ts +++ b/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.test.ts @@ -1,18 +1,22 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import { checkKeepAlive } from './checkKeepAlive' import { KeepAliveError } from '../../../errors/KeepAliveError' -import { getExistentialDeposit } from '../../assets/eds' import type { IPolkadotApi } from '../../../api/IPolkadotApi' import type { Extrinsic } from '../../../pjs/types' import type { ApiPromise } from '@polkadot/api' +import { getExistentialDeposit } from '../../assets' vi.mock('../keepAlive/createTx', () => ({ createTx: vi.fn().mockResolvedValue({} as Extrinsic) })) -vi.mock('../../assets/eds', () => ({ - getExistentialDeposit: vi.fn().mockReturnValue('0') -})) +vi.mock(import('../../assets'), async importOriginal => { + const actual = await importOriginal() + return { + ...actual, + getExistentialDeposit: vi.fn().mockReturnValue('0') + } +}) describe('checkKeepAlive', () => { const ADDRESS = '23sxrMSmaUMqe2ufSJg8U3Y8kxHfKT67YbubwXWFazpYi7w6' diff --git a/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.ts b/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.ts index 3ee55a95..4051a7aa 100644 --- a/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.ts +++ b/packages/sdk/src/pallets/xcmPallet/keepAlive/checkKeepAlive.ts @@ -1,8 +1,7 @@ import { KeepAliveError } from '../../../errors/KeepAliveError' import type { TCheckKeepAliveOptions, TNodePolkadotKusama } from '../../../types' -import { getAssetsObject } from '../../assets' +import { getAssetsObject, getExistentialDeposit } from '../../assets' import { determineRelayChain } from '../../../utils' -import { getExistentialDeposit } from '../../assets/eds' import { createTx } from './createTx' export const checkKeepAlive = async ({ diff --git a/packages/sdk/src/papi/assets.ts b/packages/sdk/src/papi/assets.ts index b843962c..223f6740 100644 --- a/packages/sdk/src/papi/assets.ts +++ b/packages/sdk/src/papi/assets.ts @@ -3,6 +3,8 @@ import { getBalanceForeign as getBalanceForeignImpl } from '../pallets/assets/ba import { getTransferInfo as getTransferInfoImpl } from '../pallets/assets/transfer-info/getTransferInfo' import { getAssetBalance as getAssetBalanceImpl } from '../pallets/assets/balance/getAssetBalance' import { getOriginFeeDetails as getOriginFeeDetailsImpl } from '../pallets/assets/getOriginFeeDetails' +import { getMaxNativeTransferableAmount as getMaxNativeTransferableAmountImpl } from '../pallets/assets/getTransferableAmount' +import { getMaxForeignTransferableAmount as getMaxForeignTransferableAmountImpl } from '../pallets/assets/getTransferableAmount' import { default as claimAssetsImpl } from '../pallets/assets/asset-claim' import { createPapiApiCall } from './utils' import type { TPapiApi, TPapiTransaction } from './types' @@ -48,8 +50,15 @@ export const getOriginFeeDetails = createPapiApiCall( getOriginFeeDetailsImpl ) +export const getMaxNativeTransferableAmount = createPapiApiCall( + getMaxNativeTransferableAmountImpl +) + +export const getMaxForeignTransferableAmount = createPapiApiCall( + getMaxForeignTransferableAmountImpl +) + export * from '../pallets/assets/assets' -export * from '../pallets/assets/eds' export * from '../pallets/assets/assetSelectors' export * from '../pallets/assets/multiLocationSelectors' export { getSupportedAssets } from '../pallets/assets/getSupportedAssets' diff --git a/packages/sdk/src/pjs/assets.ts b/packages/sdk/src/pjs/assets.ts index d4ac9b05..1fc19bd7 100644 --- a/packages/sdk/src/pjs/assets.ts +++ b/packages/sdk/src/pjs/assets.ts @@ -3,6 +3,8 @@ import { getBalanceForeign as getBalanceForeignImpl } from '../pallets/assets/ba import { getTransferInfo as getTransferInfoImpl } from '../pallets/assets/transfer-info/getTransferInfo' import { getAssetBalance as getAssetBalanceImpl } from '../pallets/assets/balance/getAssetBalance' import { getOriginFeeDetails as getOriginFeeDetailsImpl } from '../pallets/assets/getOriginFeeDetails' +import { getMaxNativeTransferableAmount as getMaxNativeTransferableAmountImpl } from '../pallets/assets/getTransferableAmount' +import { getMaxForeignTransferableAmount as getMaxForeignTransferableAmountImpl } from '../pallets/assets/getTransferableAmount' import { default as claimAssetsImpl } from '../pallets/assets/asset-claim' import type { Extrinsic, TPjsApi } from './types' import { createPolkadotJsApiCall } from './utils' @@ -46,8 +48,15 @@ export const getOriginFeeDetails = createPolkadotJsApiCall( getOriginFeeDetailsImpl ) +export const getMaxNativeTransferableAmount = createPolkadotJsApiCall( + getMaxNativeTransferableAmountImpl +) + +export const getMaxForeignTransferableAmount = createPolkadotJsApiCall( + getMaxForeignTransferableAmountImpl +) + export * from '../pallets/assets/assets' -export * from '../pallets/assets/eds' export * from '../pallets/assets/assetSelectors' export * from '../pallets/assets/multiLocationSelectors' export { getSupportedAssets } from '../pallets/assets/getSupportedAssets' diff --git a/packages/sdk/src/types/TAssets.ts b/packages/sdk/src/types/TAssets.ts index b8a1c9ef..c6ab0906 100644 --- a/packages/sdk/src/types/TAssets.ts +++ b/packages/sdk/src/types/TAssets.ts @@ -11,6 +11,7 @@ type TBaseAsset = { decimals?: number manuallyAdded?: boolean alias?: string + existentialDeposit?: string } export type TNativeAsset = TBaseAsset diff --git a/packages/sdk/src/types/TBalance.ts b/packages/sdk/src/types/TBalance.ts index 6c304feb..0c1b3fa6 100644 --- a/packages/sdk/src/types/TBalance.ts +++ b/packages/sdk/src/types/TBalance.ts @@ -102,3 +102,41 @@ export type TGetOriginFeeDetailsOptions = WithApi< TApi, TRes > + +export type TGetMaxNativeTransferableAmountOptionsBase = { + /** + * The address of the account. + */ + address: string + /** + * The node on which to query the balance. + */ + node: TNodeDotKsmWithRelayChains +} + +export type TGetMaxNativeTransferableAmountOptions = WithApi< + TGetMaxNativeTransferableAmountOptionsBase, + TApi, + TRes +> + +export type TGetMaxForeignTransferableAmountOptionsBase = { + /** + * The address of the account. + */ + address: string + /** + * The node on which to query the balance. + */ + node: TNodePolkadotKusama + /** + * The currency to query. + */ + currency: TCurrencyCore +} + +export type TGetMaxForeignTransferableAmountOptions = WithApi< + TGetMaxForeignTransferableAmountOptionsBase, + TApi, + TRes +>