@moonbeam-network/xcm-sdk 0.0.1-dev.3 → 0.0.1-dev.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -16
- package/build/index.cjs +2 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.ts +319 -0
- package/build/index.mjs +2 -0
- package/build/index.mjs.map +1 -0
- package/package.json +30 -18
- package/build/cjs/examples/simple/package.json +0 -21
- package/build/cjs/examples/simple/tsconfig.json +0 -10
- package/build/cjs/src/contracts/XTokensContract/XTokensABI.json +0 -94
- package/build/cjs/src/contracts/XTokensContract/XTokensContract.d.ts +0 -11
- package/build/cjs/src/contracts/XTokensContract/XTokensContract.js +0 -44
- package/build/cjs/src/contracts/XTokensContract/XTokensContract.js.map +0 -1
- package/build/cjs/src/contracts/XTokensContract/index.d.ts +0 -1
- package/build/cjs/src/contracts/XTokensContract/index.js +0 -6
- package/build/cjs/src/contracts/XTokensContract/index.js.map +0 -1
- package/build/cjs/src/contracts/index.d.ts +0 -1
- package/build/cjs/src/contracts/index.js +0 -18
- package/build/cjs/src/contracts/index.js.map +0 -1
- package/build/cjs/src/index.d.ts +0 -3
- package/build/cjs/src/index.js +0 -20
- package/build/cjs/src/index.js.map +0 -1
- package/build/cjs/src/polkadot/PolkadotService.d.ts +0 -29
- package/build/cjs/src/polkadot/PolkadotService.js +0 -126
- package/build/cjs/src/polkadot/PolkadotService.js.map +0 -1
- package/build/cjs/src/polkadot/index.d.ts +0 -4
- package/build/cjs/src/polkadot/index.js +0 -21
- package/build/cjs/src/polkadot/index.js.map +0 -1
- package/build/cjs/src/polkadot/polkadot.api.d.ts +0 -2
- package/build/cjs/src/polkadot/polkadot.api.js +0 -33
- package/build/cjs/src/polkadot/polkadot.api.js.map +0 -1
- package/build/cjs/src/polkadot/polkadot.factory.d.ts +0 -3
- package/build/cjs/src/polkadot/polkadot.factory.js +0 -9
- package/build/cjs/src/polkadot/polkadot.factory.js.map +0 -1
- package/build/cjs/src/polkadot/polkadot.interfaces.d.ts +0 -7
- package/build/cjs/src/polkadot/polkadot.interfaces.js +0 -3
- package/build/cjs/src/polkadot/polkadot.interfaces.js.map +0 -1
- package/build/cjs/src/polkadot/polkadot.utils.d.ts +0 -1
- package/build/cjs/src/polkadot/polkadot.utils.js +0 -9
- package/build/cjs/src/polkadot/polkadot.utils.js.map +0 -1
- package/build/cjs/src/sdk/index.d.ts +0 -3
- package/build/cjs/src/sdk/index.js +0 -24
- package/build/cjs/src/sdk/index.js.map +0 -1
- package/build/cjs/src/sdk/sdk.d.ts +0 -2
- package/build/cjs/src/sdk/sdk.deposit.d.ts +0 -36
- package/build/cjs/src/sdk/sdk.deposit.js +0 -123
- package/build/cjs/src/sdk/sdk.deposit.js.map +0 -1
- package/build/cjs/src/sdk/sdk.interfaces.d.ts +0 -105
- package/build/cjs/src/sdk/sdk.interfaces.js +0 -10
- package/build/cjs/src/sdk/sdk.interfaces.js.map +0 -1
- package/build/cjs/src/sdk/sdk.js +0 -109
- package/build/cjs/src/sdk/sdk.js.map +0 -1
- package/build/cjs/src/sdk/sdk.utils.d.ts +0 -15
- package/build/cjs/src/sdk/sdk.utils.js +0 -69
- package/build/cjs/src/sdk/sdk.utils.js.map +0 -1
- package/build/cjs/src/sdk/sdk.withdraw.d.ts +0 -21
- package/build/cjs/src/sdk/sdk.withdraw.js +0 -77
- package/build/cjs/src/sdk/sdk.withdraw.js.map +0 -1
- package/build/mjs/examples/simple/package.json +0 -21
- package/build/mjs/examples/simple/tsconfig.json +0 -10
- package/build/mjs/src/contracts/XTokensContract/XTokensABI.json +0 -94
- package/build/mjs/src/contracts/XTokensContract/XTokensContract.d.ts +0 -11
- package/build/mjs/src/contracts/XTokensContract/XTokensContract.js +0 -44
- package/build/mjs/src/contracts/XTokensContract/XTokensContract.js.map +0 -1
- package/build/mjs/src/contracts/XTokensContract/index.d.ts +0 -1
- package/build/mjs/src/contracts/XTokensContract/index.js +0 -6
- package/build/mjs/src/contracts/XTokensContract/index.js.map +0 -1
- package/build/mjs/src/contracts/index.d.ts +0 -1
- package/build/mjs/src/contracts/index.js +0 -18
- package/build/mjs/src/contracts/index.js.map +0 -1
- package/build/mjs/src/index.d.ts +0 -3
- package/build/mjs/src/index.js +0 -20
- package/build/mjs/src/index.js.map +0 -1
- package/build/mjs/src/polkadot/PolkadotService.d.ts +0 -29
- package/build/mjs/src/polkadot/PolkadotService.js +0 -126
- package/build/mjs/src/polkadot/PolkadotService.js.map +0 -1
- package/build/mjs/src/polkadot/index.d.ts +0 -4
- package/build/mjs/src/polkadot/index.js +0 -21
- package/build/mjs/src/polkadot/index.js.map +0 -1
- package/build/mjs/src/polkadot/polkadot.api.d.ts +0 -2
- package/build/mjs/src/polkadot/polkadot.api.js +0 -33
- package/build/mjs/src/polkadot/polkadot.api.js.map +0 -1
- package/build/mjs/src/polkadot/polkadot.factory.d.ts +0 -3
- package/build/mjs/src/polkadot/polkadot.factory.js +0 -9
- package/build/mjs/src/polkadot/polkadot.factory.js.map +0 -1
- package/build/mjs/src/polkadot/polkadot.interfaces.d.ts +0 -7
- package/build/mjs/src/polkadot/polkadot.interfaces.js +0 -3
- package/build/mjs/src/polkadot/polkadot.interfaces.js.map +0 -1
- package/build/mjs/src/polkadot/polkadot.utils.d.ts +0 -1
- package/build/mjs/src/polkadot/polkadot.utils.js +0 -9
- package/build/mjs/src/polkadot/polkadot.utils.js.map +0 -1
- package/build/mjs/src/sdk/index.d.ts +0 -3
- package/build/mjs/src/sdk/index.js +0 -24
- package/build/mjs/src/sdk/index.js.map +0 -1
- package/build/mjs/src/sdk/sdk.d.ts +0 -2
- package/build/mjs/src/sdk/sdk.deposit.d.ts +0 -36
- package/build/mjs/src/sdk/sdk.deposit.js +0 -123
- package/build/mjs/src/sdk/sdk.deposit.js.map +0 -1
- package/build/mjs/src/sdk/sdk.interfaces.d.ts +0 -105
- package/build/mjs/src/sdk/sdk.interfaces.js +0 -10
- package/build/mjs/src/sdk/sdk.interfaces.js.map +0 -1
- package/build/mjs/src/sdk/sdk.js +0 -109
- package/build/mjs/src/sdk/sdk.js.map +0 -1
- package/build/mjs/src/sdk/sdk.utils.d.ts +0 -15
- package/build/mjs/src/sdk/sdk.utils.js +0 -69
- package/build/mjs/src/sdk/sdk.utils.js.map +0 -1
- package/build/mjs/src/sdk/sdk.withdraw.d.ts +0 -21
- package/build/mjs/src/sdk/sdk.withdraw.js +0 -77
- package/build/mjs/src/sdk/sdk.withdraw.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/contracts/XTokensContract/XTokensContract.ts","../src/contracts/XTokensContract/XTokensABI.json","../src/polkadot/PolkadotService.ts","../src/polkadot/polkadot.utils.ts","../src/polkadot/polkadot.factory.ts","../src/sdk/sdk.ts","../src/sdk/sdk.deposit.ts","../src/sdk/sdk.utils.ts","../src/sdk/sdk.withdraw.ts"],"sourcesContent":["export { ExtrinsicStatus } from '@moonbeam-network/xcm-utils';\nexport type {\n ExtrinsicEvent,\n ExtrinsicEventsCallback,\n ExtrinsicFailedEvent,\n ExtrinsicSentEvent,\n ExtrinsicSuccessEvent,\n} from '@moonbeam-network/xcm-utils';\nexport * from './contracts';\nexport * from './polkadot';\nexport * from './sdk';\n","import type { TransactionResponse } from '@ethersproject/abstract-provider';\nimport {\n Asset,\n AssetSymbol,\n WithdrawXTokensConfig,\n} from '@moonbeam-network/xcm-config';\nimport { Contract, Signer } from 'ethers';\n\nimport ContractInterface from './XTokensABI.json';\n\nexport class XTokensContract<Symbols extends AssetSymbol = AssetSymbol> {\n readonly address: string = '0x0000000000000000000000000000000000000804';\n\n readonly #contract: Contract;\n\n readonly #signer: Signer;\n\n constructor(signer: Signer) {\n this.#signer = signer;\n this.#contract = new Contract(this.address, ContractInterface, signer);\n }\n\n async transfer(\n account: string,\n amount: bigint,\n asset: Asset<Symbols>,\n config: WithdrawXTokensConfig<Symbols>,\n minAmount: bigint,\n ): Promise<TransactionResponse> {\n const { usesEthereumAccounts } = config.destination;\n const params = config.getParams(account, usesEthereumAccounts);\n\n if (config.xcmFeeAsset) {\n return this.#contract.transferMultiCurrencies(\n [\n [config.xcmFeeAsset.asset.erc20Id, minAmount],\n [asset.erc20Id, amount],\n ],\n 0,\n params,\n config.weight,\n );\n }\n\n return this.#contract.transfer(\n asset.erc20Id,\n amount,\n params,\n config.weight,\n );\n }\n\n async getTransferFees(\n account: string,\n amount: bigint,\n asset: Asset<Symbols>,\n config: WithdrawXTokensConfig<Symbols>,\n ) {\n const estimatedGas = (\n await this.#contract.estimateGas.transfer(\n asset.erc20Id,\n amount,\n config.getParams(account, config.destination.usesEthereumAccounts),\n config.weight,\n )\n ).toBigInt();\n const gasPrice = await this.getGasPrice();\n\n return estimatedGas * gasPrice;\n }\n\n private async getGasPrice() {\n const { gasPrice, maxPriorityFeePerGas } = await this.#signer.getFeeData();\n\n return (\n (gasPrice?.toBigInt() || 0n) + (maxPriorityFeePerGas?.toBigInt() || 0n)\n );\n }\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"currencyAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"parents\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"interior\",\n \"type\": \"bytes[]\"\n }\n ],\n \"internalType\": \"struct Xtokens.Multilocation\",\n \"name\": \"destination\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"weight\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"currencyAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Xtokens.Currency[]\",\n \"name\": \"currencies\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"feeItem\",\n \"type\": \"uint32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"parents\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"interior\",\n \"type\": \"bytes[]\"\n }\n ],\n \"internalType\": \"struct Xtokens.Multilocation\",\n \"name\": \"destination\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"weight\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"transferMultiCurrencies\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]\n","import '@polkadot/api-augment';\n\nimport {\n Asset,\n AssetSymbol,\n BalanceConfig,\n ChainKey,\n ExtrinsicConfig,\n MinBalanceConfig,\n MoonChain,\n XcmConfigBuilder,\n} from '@moonbeam-network/xcm-config';\nimport { getPolkadotApi } from '@moonbeam-network/xcm-utils';\nimport { ApiPromise } from '@polkadot/api';\nimport {\n QueryableStorageMultiArg,\n SubmittableExtrinsic,\n UnsubscribePromise,\n} from '@polkadot/api/types';\nimport { Option, u128 } from '@polkadot/types';\nimport { AccountInfo } from '@polkadot/types/interfaces';\nimport {\n PalletAssetsAssetAccount,\n PalletAssetsAssetMetadata,\n} from '@polkadot/types/lookup';\nimport _ from 'lodash';\nimport { AssetBalanceInfo, XCMType } from './polkadot.interfaces';\nimport { calculateMin } from './polkadot.utils';\n\nexport class PolkadotService<\n Symbols extends AssetSymbol = AssetSymbol,\n ChainKeys extends ChainKey = ChainKey,\n> {\n readonly #api: ApiPromise;\n\n constructor(api: ApiPromise) {\n this.#api = api;\n }\n\n static async create<\n Symbols extends AssetSymbol = AssetSymbol,\n ChainKeys extends ChainKey = ChainKey,\n >(ws: string): Promise<PolkadotService<Symbols, ChainKeys>> {\n return new PolkadotService(await getPolkadotApi(ws));\n }\n\n getMetadata() {\n return {\n decimals: this.#api.registry.chainDecimals.at(0) || 12,\n symbol: this.#api.registry.chainTokens.at(0) as Symbols,\n ss58Format: this.#api.registry.chainSS58 || 42,\n genesisHash: this.#api.genesisHash.toHex(),\n };\n }\n\n getExistentialDeposit(): bigint {\n return (\n (\n this.#api.consts.balances?.existentialDeposit as unknown as\n | u128\n | undefined\n )?.toBigInt() || 0n\n );\n }\n\n async getAssetDecimals(asset: Asset<Symbols>): Promise<number> {\n const meta = await this.getAssetMeta(asset);\n\n return meta.decimals.toNumber();\n }\n\n async getAssetMeta(\n asset: Asset<Symbols>,\n ): Promise<PalletAssetsAssetMetadata> {\n const data = await (asset.isLocalAsset\n ? this.#api.query.localAssets.metadata\n : this.#api.query.assets.metadata)(asset.id);\n\n return data as unknown as PalletAssetsAssetMetadata;\n }\n\n async subscribeToAccountInfo(\n account: string,\n callback: (info: AccountInfo) => void,\n ): UnsubscribePromise {\n return (this.#api.query.system.account as any)(account, callback);\n }\n\n async subscribeToBalance(\n account: string,\n callback: (balance: bigint) => void,\n ): UnsubscribePromise {\n return this.subscribeToAccountInfo(account, ({ data }) =>\n callback(data.free.toBigInt() - data.miscFrozen.toBigInt()),\n );\n }\n\n async getGenericBalance(\n account: string,\n { pallet, function: fn, getParams, path, calc }: BalanceConfig<Symbols>,\n ): Promise<bigint> {\n const response = await this.#api.query[pallet][fn](...getParams(account));\n\n if (response.isEmpty) {\n return 0n;\n }\n\n const unwrapped = (response as any).unwrap?.() || response;\n\n return calc(path.length ? _.get(unwrapped, path) : unwrapped);\n }\n\n async getAssetMinBalance({\n pallet,\n function: fn,\n params,\n path,\n }: MinBalanceConfig): Promise<bigint> {\n const details = (await this.#api.query[pallet][fn](\n ...params,\n )) as unknown as Option<any>;\n\n if (details.isEmpty) {\n return 0n;\n }\n\n return _.get(details.value, path).toBigInt();\n }\n\n getXcmExtrinsic(\n account: string,\n amount: bigint,\n { pallet, extrinsic, getParams }: ExtrinsicConfig<Symbols>,\n fee?: bigint,\n primaryAccount?: string,\n ): SubmittableExtrinsic<'promise'> {\n const call = this.#api.tx[pallet][extrinsic];\n\n let transferExtrinsic = call(\n ...getParams({\n account,\n amount,\n extrinsicCall: call,\n fee,\n }),\n );\n\n if (primaryAccount) {\n transferExtrinsic = this.#api.tx.proxy.proxy(\n primaryAccount,\n null,\n transferExtrinsic,\n );\n }\n\n return transferExtrinsic;\n }\n\n async getAssetFee(\n asset: Asset,\n weight: number,\n moonChain: MoonChain,\n ): Promise<bigint> {\n return calculateMin(weight, await this.getUnitsPerSecond(asset, moonChain));\n }\n\n async getUnitsPerSecond(asset: Asset, moonChain: MoonChain): Promise<bigint> {\n if (asset.isNative) {\n return moonChain.unitsPerSecond;\n }\n const type = await this.getAssetType(asset.id);\n\n if (!type) {\n return 0n;\n }\n\n const res = (await this.#api.query.assetManager.assetTypeUnitsPerSecond(\n type,\n )) as unknown as Option<u128>;\n\n return res.unwrapOrDefault().toBigInt();\n }\n\n /**\n * this is only for Moon* chains\n */\n async getAssetType(id: string): Promise<XCMType | undefined> {\n const type = (await this.#api.query.assetManager.assetIdType(\n id,\n )) as unknown as Option<any>;\n\n return type.unwrapOr(undefined);\n }\n\n async subscribeToAssetsBalanceInfo(\n account: string,\n config: XcmConfigBuilder<Symbols, ChainKeys>,\n callback: (data: AssetBalanceInfo<Symbols>[]) => void,\n ): UnsubscribePromise {\n const assetsArray = Object.values<Asset<Symbols>>(config.assets);\n const metadata = await this.getAssetsMetadata(assetsArray);\n\n return this.subscribeToAccountBalances(account, assetsArray, (data) => {\n callback(\n data.map((balance, index): AssetBalanceInfo<Symbols> => {\n const asset = assetsArray[index];\n const meta = metadata[index];\n const {\n chains: [chain],\n from,\n } = config.deposit(asset.originSymbol);\n const { origin } = from(chain.key);\n\n return {\n asset,\n balance: {\n balance: balance.balance.toBigInt(),\n decimals: asset.isNative\n ? (origin as MoonChain).decimals\n : meta.decimals.toNumber(),\n symbol: asset.isNative\n ? asset.originSymbol\n : meta.symbol.toHuman()?.toString() || '',\n },\n origin,\n };\n }),\n );\n });\n }\n\n async getAssetsMetadata(\n assetsArray: Asset<Symbols>[],\n ): Promise<PalletAssetsAssetMetadata[]> {\n const queries = assetsArray.map(\n (x) =>\n [\n x.isLocalAsset\n ? this.#api.query.localAssets.metadata\n : this.#api.query.assets.metadata,\n [x.id],\n ] as QueryableStorageMultiArg<'promise'>,\n );\n\n return this.#api.queryMulti(queries) as unknown as Promise<\n PalletAssetsAssetMetadata[]\n >;\n }\n\n async subscribeToAccountBalances(\n account: string,\n assetsArray: Asset<Symbols>[],\n callback: (balances: PalletAssetsAssetAccount[]) => void,\n ): UnsubscribePromise {\n const queries = assetsArray.map(\n (x) =>\n [\n x.isLocalAsset\n ? this.#api.query.localAssets.account\n : this.#api.query.assets.account,\n [x.id, account],\n ] as QueryableStorageMultiArg<'promise'>,\n );\n\n return this.#api.queryMulti(queries, (res: unknown) => {\n const response = (res as Array<Option<PalletAssetsAssetAccount>>).map(\n (item) => item.unwrapOrDefault(),\n );\n\n callback(response);\n });\n }\n}\n","export function calculateMin(weight: number, unitsPerSecond: bigint): bigint {\n // 10**12 weight = 1 second\n return (BigInt(weight) * unitsPerSecond) / BigInt(10 ** 12);\n}\n","import { AssetSymbol, ChainKey } from '@moonbeam-network/xcm-config';\nimport { PolkadotService } from './PolkadotService';\n\nexport async function createPolkadotServices<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n>(ws: string[]): Promise<PolkadotService<Symbols, ChainKeys>[]> {\n return Promise.all(\n ws.map((url) => PolkadotService.create<Symbols, ChainKeys>(url)),\n );\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n Asset,\n AssetSymbol,\n Chain,\n ChainKey,\n moonbase,\n MoonbaseAssets,\n MoonbaseChains,\n moonbeam,\n MoonbeamAssets,\n MoonbeamChains,\n moonriver,\n MoonriverAssets,\n MoonriverChains,\n XcmConfigBuilder,\n} from '@moonbeam-network/xcm-config';\nimport { UnsubscribePromise } from '@polkadot/api/types';\nimport { IKeyringPair } from '@polkadot/types/types';\nimport _ from 'lodash';\nimport { XTokensContract } from '../contracts';\nimport { AssetBalanceInfo, createPolkadotServices } from '../polkadot';\nimport { getDepositData } from './sdk.deposit';\nimport {\n DepositTransferData,\n SdkOptions,\n WithdrawGetParams,\n WithdrawTransferData,\n XcmSdk,\n XcmSdkByChain,\n XcmSdkDeposit,\n XcmSdkWithdraw,\n} from './sdk.interfaces';\nimport { createDummyAsset, subscribeToAssetsBalanceInfo } from './sdk.utils';\nimport { getWithdrawData } from './sdk.withdraw';\n\nexport function init(options?: SdkOptions): XcmSdkByChain {\n return {\n moonbase: initByChain<MoonbaseAssets, MoonbaseChains>(moonbase, options),\n moonbeam: initByChain<MoonbeamAssets, MoonbeamChains>(moonbeam, options),\n moonriver: initByChain<MoonriverAssets, MoonriverChains>(\n moonriver,\n options,\n ),\n };\n}\n\nfunction initByChain<Symbols extends AssetSymbol, ChainKeys extends ChainKey>(\n configBuilder: XcmConfigBuilder<Symbols, ChainKeys>,\n options?: SdkOptions,\n): XcmSdk<Symbols, ChainKeys> {\n const { symbols, assets, moonAsset, moonChain } = configBuilder;\n\n return {\n symbols,\n assets,\n moonAsset,\n moonChain,\n subscribeToAssetsBalanceInfo: async (\n account: string,\n cb: (data: AssetBalanceInfo<Symbols>[]) => void,\n ): UnsubscribePromise => {\n const [polkadot] = await createPolkadotServices<Symbols, ChainKeys>([\n configBuilder.moonChain.ws,\n ]);\n\n return subscribeToAssetsBalanceInfo({\n account,\n polkadot,\n configBuilder,\n cb,\n });\n },\n deposit: (\n symbolOrAsset: Symbols | Asset<Symbols>,\n ): XcmSdkDeposit<Symbols, ChainKeys> => {\n const { chains, from } = configBuilder.deposit(symbolOrAsset);\n\n return {\n chains,\n from: (keyOrChain: ChainKeys | Chain<ChainKeys>) => {\n const { asset, origin, config } = from(keyOrChain);\n\n return {\n get: async (\n account: string,\n sourceAccount: string | IKeyringPair,\n { primaryAccount, polkadotSigner } = {},\n ): Promise<DepositTransferData<Symbols>> => {\n const signer = polkadotSigner || options?.polkadotSigner;\n\n if (_.isString(sourceAccount) && !signer) {\n throw new Error(\n 'Polkadot Signer/KeyringPair are not provided to XCM-SDK',\n );\n }\n\n const [polkadot, foreignPolkadot] = await createPolkadotServices<\n Symbols,\n ChainKeys\n >([configBuilder.moonChain.ws, config.source.ws]);\n const meta = foreignPolkadot.getMetadata();\n const nativeAsset =\n configBuilder.assets[meta.symbol] ||\n createDummyAsset(meta.symbol);\n\n return getDepositData({\n account,\n asset,\n config,\n foreignPolkadot,\n moonChain,\n nativeAsset,\n origin,\n polkadot,\n polkadotSigner: signer,\n primaryAccount,\n sourceAccount,\n });\n },\n };\n },\n };\n },\n withdraw: (\n symbolOrAsset: Symbols | Asset<Symbols>,\n ): XcmSdkWithdraw<Symbols, ChainKeys> => {\n const { chains, to } = configBuilder.withdraw(symbolOrAsset);\n\n return {\n chains,\n to: (keyOrChain: ChainKeys | Chain<ChainKeys>) => {\n const { asset, origin, config } = to(keyOrChain);\n\n return {\n get: async (\n destinationAccount: string,\n { ethersSigner }: WithdrawGetParams = {},\n ): Promise<WithdrawTransferData<Symbols>> => {\n const signer = ethersSigner || options?.ethersSigner;\n\n if (!signer) {\n throw new Error('Ethers signer is not provided to XCM-SDK');\n }\n const originAccount = await signer.getAddress();\n\n const contract = new XTokensContract<Symbols>(signer);\n const [polkadot, destinationPolkadot] =\n await createPolkadotServices<Symbols, ChainKeys>([\n configBuilder.moonChain.ws,\n config.destination.ws,\n ]);\n const meta = destinationPolkadot.getMetadata();\n const nativeAsset = configBuilder.assets[meta.symbol];\n\n return getWithdrawData({\n asset,\n config,\n contract,\n originAccount,\n destinationAccount,\n destinationPolkadot,\n ethersSigner: signer,\n moonChain,\n nativeAsset,\n origin,\n polkadot,\n });\n },\n };\n },\n };\n },\n };\n}\n","import {\n Asset,\n AssetSymbol,\n Chain,\n ChainKey,\n DepositConfig,\n MoonChain,\n} from '@moonbeam-network/xcm-config';\nimport {\n createExtrinsicEventHandler,\n ExtrinsicEventsCallback,\n} from '@moonbeam-network/xcm-utils';\nimport type { Signer as PolkadotSigner } from '@polkadot/api/types';\nimport type { IKeyringPair } from '@polkadot/types/types';\nimport { isUndefined } from '@polkadot/util';\nimport { PolkadotService } from '../polkadot';\nimport { DepositTransferData } from './sdk.interfaces';\n\nexport interface CreateExtrinsicOptions<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n> {\n account: string;\n config: DepositConfig<Symbols>;\n fee?: bigint;\n foreignPolkadot: PolkadotService<Symbols, ChainKeys>;\n primaryAccount?: string;\n}\n\nexport function getCreateExtrinsic<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n>({\n account,\n config,\n foreignPolkadot,\n primaryAccount,\n fee,\n}: CreateExtrinsicOptions<Symbols, ChainKeys>) {\n return (amount: bigint): any =>\n foreignPolkadot.getXcmExtrinsic(\n account,\n amount,\n config.extrinsic,\n fee,\n primaryAccount,\n );\n}\n\nexport interface GetDepositDataParams<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n> {\n account: string;\n asset: Asset<Symbols>;\n config: DepositConfig<Symbols>;\n foreignPolkadot: PolkadotService<Symbols, ChainKeys>;\n moonChain: MoonChain;\n nativeAsset: Asset<Symbols>;\n origin: MoonChain | Chain<ChainKeys>;\n polkadot: PolkadotService<Symbols, ChainKeys>;\n polkadotSigner?: PolkadotSigner;\n primaryAccount?: string;\n sourceAccount: string | IKeyringPair;\n}\n\nexport async function getDepositData<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n>({\n account,\n asset,\n config,\n foreignPolkadot,\n moonChain,\n nativeAsset,\n origin,\n polkadot,\n polkadotSigner,\n primaryAccount,\n sourceAccount,\n}: GetDepositDataParams<Symbols, ChainKeys>): Promise<\n DepositTransferData<Symbols>\n> {\n const sourceAddress =\n typeof sourceAccount === 'string' ? sourceAccount : sourceAccount.address;\n const meta = foreignPolkadot.getMetadata();\n const xcmFeeAssetConfig = {\n asset: config.xcmFeeAsset?.asset ?? asset,\n balance: config.xcmFeeAsset?.balance ?? config.balance,\n };\n\n const [\n assetDecimals,\n existentialDeposit,\n sourceBalance,\n sourceFeeBalance,\n sourceMinBalance = 0n,\n xcmFee,\n xcmFeeBalance,\n xcmFeeDecimals,\n ] = await Promise.all([\n // assetDecimals\n asset.isNative ? moonChain.decimals : polkadot.getAssetDecimals(asset),\n // existentialDeposit\n foreignPolkadot.getExistentialDeposit(),\n // sourceBalance\n foreignPolkadot.getGenericBalance(\n primaryAccount || sourceAddress,\n config.balance,\n ),\n // sourceFeeBalance\n config.sourceFeeBalance\n ? foreignPolkadot.getGenericBalance(\n sourceAddress,\n config.sourceFeeBalance,\n )\n : undefined,\n // sourceMinBalance\n config.sourceMinBalance\n ? foreignPolkadot.getAssetMinBalance(config.sourceMinBalance)\n : undefined,\n // xcmFee\n polkadot.getAssetFee(\n xcmFeeAssetConfig.asset,\n config.source.weight,\n moonChain,\n ),\n // xcmFeeBalance\n foreignPolkadot.getGenericBalance(\n primaryAccount || sourceAddress,\n xcmFeeAssetConfig.balance,\n ),\n // xcmFeeDecimals\n polkadot.getAssetDecimals(xcmFeeAssetConfig.asset),\n ]);\n\n // Min is basically the XCM fee, if it's the same asset. If less is sent then\n // Moon* won't process the message.\n const min = config.xcmFeeAsset ? 0n : xcmFee;\n const createExtrinsic = getCreateExtrinsic({\n account,\n config,\n foreignPolkadot,\n primaryAccount,\n fee: xcmFee,\n });\n\n return {\n asset: { ...asset, decimals: assetDecimals },\n existentialDeposit,\n min,\n moonChainFee: {\n balance: xcmFeeBalance,\n decimals: xcmFeeAssetConfig.asset.isNative\n ? moonChain.decimals\n : xcmFeeDecimals,\n fee: xcmFee,\n symbol: xcmFeeAssetConfig.asset.originSymbol,\n },\n native: { ...nativeAsset, decimals: meta.decimals },\n origin,\n source: {\n ...config.source,\n },\n sourceBalance,\n sourceFeeBalance: !isUndefined(sourceFeeBalance)\n ? { ...meta, balance: sourceFeeBalance }\n : undefined,\n sourceMinBalance,\n getFee: async (amount = sourceBalance): Promise<bigint> => {\n const extrinsic = createExtrinsic(amount);\n const info = await extrinsic.paymentInfo(sourceAccount);\n\n return info.partialFee.toBigInt();\n },\n send: async (\n amount: bigint,\n cb?: ExtrinsicEventsCallback,\n ): Promise<string> => {\n const extrinsic = createExtrinsic(amount);\n const hash = await extrinsic.signAndSend(\n sourceAccount,\n {\n signer: polkadotSigner,\n },\n\n cb &&\n createExtrinsicEventHandler(\n config.extrinsic.pallet,\n config.extrinsic.successEvent,\n cb,\n ),\n );\n\n return hash.toString();\n },\n };\n}\n","import {\n Asset,\n AssetSymbol,\n ChainKey,\n XcmConfigBuilder,\n} from '@moonbeam-network/xcm-config';\nimport { UnsubscribePromise } from '@polkadot/api/types';\nimport { AssetBalanceInfo, PolkadotService } from '../polkadot';\nimport {\n DepositTransferData,\n WithdrawTransferData,\n XcmSdkDeposit,\n XcmSdkWithdraw,\n} from './sdk.interfaces';\n\nexport function isXcmSdkDeposit(\n config: XcmSdkDeposit | XcmSdkWithdraw,\n): config is XcmSdkDeposit {\n return !!(config as XcmSdkDeposit).from;\n}\n\nexport function isXcmSdkWithdraw(\n config: XcmSdkDeposit | XcmSdkWithdraw,\n): config is XcmSdkWithdraw {\n return !!(config as XcmSdkWithdraw).to;\n}\n\nexport function isWithdrawTransferData(\n data?: WithdrawTransferData | DepositTransferData,\n): data is WithdrawTransferData {\n return !!(data as WithdrawTransferData)?.destination;\n}\n\nexport function isDepositTransferData(\n data?: WithdrawTransferData | DepositTransferData,\n): data is DepositTransferData {\n return !!(data as DepositTransferData)?.moonChainFee;\n}\n\nexport function sortByBalanceAndChainName<Symbols extends AssetSymbol>(\n a: AssetBalanceInfo<Symbols>,\n b: AssetBalanceInfo<Symbols>,\n) {\n if (a.asset.isNative) {\n return -1;\n }\n\n if (b.asset.isNative) {\n return 1;\n }\n\n if (a.balance.balance || b.balance.balance) {\n return Number(b.balance.balance - a.balance.balance);\n }\n\n const aName = (a.origin.name + a.asset.originSymbol).toLowerCase();\n const bName = (b.origin.name + b.asset.originSymbol).toLowerCase();\n\n if (aName < bName) {\n return -1;\n }\n\n if (aName > bName) {\n return 1;\n }\n\n return 0;\n}\n\nexport interface SubscribeToAssetsBalanceInfoParams<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n> {\n account: string;\n polkadot: PolkadotService<Symbols, ChainKeys>;\n configBuilder: XcmConfigBuilder<Symbols, ChainKeys>;\n cb: (data: AssetBalanceInfo<Symbols>[]) => void;\n}\n\nexport async function subscribeToAssetsBalanceInfo<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n>({\n account,\n polkadot,\n configBuilder,\n cb,\n}: SubscribeToAssetsBalanceInfoParams<Symbols, ChainKeys>): UnsubscribePromise {\n let lastBalance = 0n;\n let lastInfo: AssetBalanceInfo<Symbols>[] = [];\n const handler = (data: bigint | AssetBalanceInfo<Symbols>[]) => {\n const isBalance = typeof data === 'bigint';\n\n lastBalance = isBalance ? data : lastBalance;\n lastInfo = (isBalance ? lastInfo : data)\n .map((info) => {\n if (info.asset.isNative) {\n // eslint-disable-next-line no-param-reassign\n info.balance.balance = lastBalance;\n }\n\n return info;\n })\n .sort(sortByBalanceAndChainName);\n\n if (lastInfo.length) {\n cb(lastInfo);\n }\n };\n\n const unsubscribeBalance = await polkadot.subscribeToBalance(\n account,\n handler,\n );\n const unsubscribeInfo = await polkadot.subscribeToAssetsBalanceInfo(\n account,\n configBuilder,\n handler,\n );\n\n return () => {\n unsubscribeBalance();\n unsubscribeInfo();\n };\n}\n\nexport function createDummyAsset(symbol: AssetSymbol): Asset<AssetSymbol> {\n return {\n id: '',\n erc20Id: '',\n originSymbol: symbol,\n };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport {\n Asset,\n AssetSymbol,\n Chain,\n ChainKey,\n MoonChain,\n WithdrawConfig,\n} from '@moonbeam-network/xcm-config';\nimport {\n createTxEventHandler,\n ExtrinsicEventsCallback,\n} from '@moonbeam-network/xcm-utils';\nimport { Signer as EthersSigner } from 'ethers';\nimport { XTokensContract } from '../contracts';\nimport { PolkadotService } from '../polkadot';\nimport { WithdrawTransferData } from './sdk.interfaces';\n\nexport interface GetWithdrawDataParams<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n> {\n asset: Asset<Symbols>;\n config: WithdrawConfig<Symbols>;\n contract: XTokensContract;\n originAccount: string;\n destinationAccount: string;\n destinationPolkadot: PolkadotService<Symbols, ChainKeys>;\n ethersSigner: EthersSigner;\n moonChain: MoonChain;\n nativeAsset: Asset<Symbols>;\n origin: MoonChain | Chain<ChainKeys>;\n polkadot: PolkadotService<Symbols, ChainKeys>;\n}\n\nexport async function getWithdrawData<\n Symbols extends AssetSymbol,\n ChainKeys extends ChainKey,\n>({\n asset,\n config,\n contract,\n originAccount,\n destinationAccount,\n destinationPolkadot,\n ethersSigner,\n moonChain,\n nativeAsset,\n origin,\n polkadot,\n}: GetWithdrawDataParams<Symbols, ChainKeys>): Promise<\n WithdrawTransferData<Symbols>\n> {\n const meta = destinationPolkadot.getMetadata();\n const xcmFeeAsset = config.xcmFeeAsset?.asset ?? asset;\n const [\n decimals,\n // destinationBalance,\n originXcmFeeAssetBalance,\n destinationBalance,\n destinationXcmFeeAssetBalance,\n existentialDeposit,\n assetMinBalance,\n xcmFeeDecimals,\n ] = await Promise.all([\n // decimals\n asset.isNative ? moonChain.decimals : polkadot.getAssetDecimals(asset),\n // originXcmFeeAssetBalance\n config.xcmFeeAsset\n ? await polkadot.getGenericBalance(\n originAccount,\n config.xcmFeeAsset?.balance.origin,\n )\n : undefined,\n // destinationBalance\n destinationPolkadot.getGenericBalance(destinationAccount, config.balance),\n // destinationXcmFeeAssetBalance\n config.xcmFeeAsset\n ? destinationPolkadot.getGenericBalance(\n destinationAccount,\n config.xcmFeeAsset.balance.destination,\n )\n : undefined,\n // existentialDeposit\n asset.isNative ? 0n : destinationPolkadot.getExistentialDeposit(),\n // assetMinBalance\n config.sourceMinBalance\n ? destinationPolkadot.getAssetMinBalance(config.sourceMinBalance)\n : 0n,\n // xcmFeeDecimals\n polkadot.getAssetDecimals(xcmFeeAsset),\n ]);\n\n const destinationFee = getFee(assetMinBalance, config);\n const min = config.xcmFeeAsset\n ? 0n\n : getMin(\n assetMinBalance || existentialDeposit,\n destinationBalance,\n destinationFee,\n );\n\n const minXcmFeeAsset =\n config.xcmFeeAsset && destinationXcmFeeAssetBalance !== undefined\n ? getMin(\n assetMinBalance || existentialDeposit,\n destinationXcmFeeAssetBalance,\n destinationFee,\n )\n : 0n;\n\n return {\n asset: { ...asset, decimals },\n destination: {\n ...config.destination,\n },\n destinationBalance,\n destinationFee,\n existentialDeposit,\n min,\n minXcmFeeAsset: {\n amount: minXcmFeeAsset,\n decimals: xcmFeeDecimals,\n symbol: xcmFeeAsset.originSymbol,\n },\n native: { ...nativeAsset, decimals: meta.decimals },\n origin,\n originXcmFeeAssetBalance,\n getFee: async (amount) =>\n contract.getTransferFees(destinationAccount, amount, asset, config),\n send: async (amount: bigint, cb?: ExtrinsicEventsCallback) => {\n const tx = await contract.transfer(\n destinationAccount,\n amount,\n asset,\n config,\n minXcmFeeAsset,\n );\n\n if (cb) {\n createTxEventHandler(ethersSigner, tx.hash, cb);\n }\n\n return tx.hash;\n },\n };\n}\n\nexport function getFee<Symbols extends AssetSymbol>(\n assetMinBalance: bigint,\n config: WithdrawConfig<Symbols>,\n) {\n const calculatedFee = BigInt(config.weight * config.feePerWeight);\n\n return assetMinBalance > calculatedFee ? assetMinBalance : calculatedFee;\n}\n\nexport function getMin(\n balanceNeeded: bigint,\n destinationBalance: bigint,\n destinationFee: bigint,\n) {\n const extra =\n destinationBalance >= balanceNeeded\n ? 0n\n : balanceNeeded - destinationBalance;\n\n return destinationFee + extra;\n}\n"],"mappings":"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","names":["ExtrinsicStatus","Contract","XTokensABI_default","XTokensContract","signer","#signer","#contract","Contract","XTokensABI_default","account","amount","asset","config","minAmount","usesEthereumAccounts","params","estimatedGas","gasPrice","maxPriorityFeePerGas","getPolkadotApi","_","calculateMin","weight","unitsPerSecond","PolkadotService","#api","api","ws","getPolkadotApi","_a","_b","asset","account","callback","data","pallet","fn","getParams","path","calc","response","unwrapped","_","params","details","amount","extrinsic","fee","primaryAccount","call","transferExtrinsic","weight","moonChain","calculateMin","type","id","config","assetsArray","metadata","balance","index","meta","chain","from","origin","queries","x","res","item","createPolkadotServices","ws","url","PolkadotService","moonbase","moonbeam","moonriver","_","createExtrinsicEventHandler","isUndefined","getCreateExtrinsic","account","config","foreignPolkadot","primaryAccount","fee","amount","getDepositData","asset","moonChain","nativeAsset","origin","polkadot","polkadotSigner","sourceAccount","_a","_b","sourceAddress","meta","xcmFeeAssetConfig","assetDecimals","existentialDeposit","sourceBalance","sourceFeeBalance","sourceMinBalance","xcmFee","xcmFeeBalance","xcmFeeDecimals","min","createExtrinsic","cb","isXcmSdkDeposit","config","isXcmSdkWithdraw","isWithdrawTransferData","data","isDepositTransferData","sortByBalanceAndChainName","a","b","aName","bName","subscribeToAssetsBalanceInfo","account","polkadot","configBuilder","cb","lastBalance","lastInfo","handler","isBalance","info","unsubscribeBalance","unsubscribeInfo","createDummyAsset","symbol","createTxEventHandler","getWithdrawData","asset","config","contract","originAccount","destinationAccount","destinationPolkadot","ethersSigner","moonChain","nativeAsset","origin","polkadot","_a","_b","meta","xcmFeeAsset","decimals","originXcmFeeAssetBalance","destinationBalance","destinationXcmFeeAssetBalance","existentialDeposit","assetMinBalance","xcmFeeDecimals","destinationFee","getFee","min","getMin","minXcmFeeAsset","amount","cb","tx","calculatedFee","balanceNeeded","extra","init","options","initByChain","moonbase","moonbeam","moonriver","configBuilder","symbols","assets","moonAsset","moonChain","account","cb","polkadot","createPolkadotServices","subscribeToAssetsBalanceInfo","symbolOrAsset","chains","from","keyOrChain","asset","origin","config","sourceAccount","primaryAccount","polkadotSigner","signer","_","foreignPolkadot","meta","nativeAsset","createDummyAsset","getDepositData","to","destinationAccount","ethersSigner","originAccount","contract","XTokensContract","destinationPolkadot","getWithdrawData"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moonbeam-network/xcm-sdk",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.0.1-dev.30",
|
|
4
|
+
"description": "The Moonbeam XCM SDK enables developers to easily deposit and withdraw assets to Moonbeam/Moonriver from the relay chain and other parachains in the Polkadot/Kusama ecosystem",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsup",
|
|
7
|
+
"dev": "npm run build -- --watch",
|
|
8
|
+
"link": "npm ln",
|
|
9
|
+
"lint": "eslint ./src --ext .js,.ts",
|
|
10
|
+
"lint:fix": "npm run lint -- --fix",
|
|
11
|
+
"test:acc": "jest --forceExit --testTimeout 300000 ./tests/acceptance",
|
|
12
|
+
"prepack": "prettier --write build/index.d.ts"
|
|
13
|
+
},
|
|
5
14
|
"author": "PureStake",
|
|
6
15
|
"license": "MIT",
|
|
7
16
|
"repository": {
|
|
@@ -17,36 +26,39 @@
|
|
|
17
26
|
"bugs": {
|
|
18
27
|
"url": "https://github.com/PureStake/xcm-sdk/issues"
|
|
19
28
|
},
|
|
20
|
-
"homepage": "https://
|
|
29
|
+
"homepage": "https://docs.moonbeam.network/builders/xcm/xcm-sdk/xcm-sdk/",
|
|
21
30
|
"files": [
|
|
22
31
|
"build"
|
|
23
32
|
],
|
|
24
|
-
"type": "
|
|
33
|
+
"type": "module",
|
|
25
34
|
"exports": {
|
|
26
35
|
".": {
|
|
27
36
|
"import": {
|
|
28
|
-
"types": "./build/
|
|
29
|
-
"default": "./build/
|
|
37
|
+
"types": "./build/index.d.ts",
|
|
38
|
+
"default": "./build/index.mjs"
|
|
30
39
|
},
|
|
31
40
|
"require": {
|
|
32
|
-
"types": "./build/
|
|
33
|
-
"default": "./build/
|
|
41
|
+
"types": "./build/index.d.ts",
|
|
42
|
+
"default": "./build/index.cjs"
|
|
34
43
|
}
|
|
35
44
|
}
|
|
36
45
|
},
|
|
37
|
-
"types": "./build/
|
|
38
|
-
"main": "./build/
|
|
46
|
+
"types": "./build/index.d.ts",
|
|
47
|
+
"main": "./build/index.cjs",
|
|
39
48
|
"dependencies": {
|
|
40
|
-
"@moonbeam-network/
|
|
41
|
-
"@moonbeam-network/xcm-
|
|
42
|
-
"@polkadot/api": "^9.1.1",
|
|
43
|
-
"@polkadot/types": "^9.1.1",
|
|
44
|
-
"@polkadot/util": "^10.1.3",
|
|
45
|
-
"ethers": "^5.6.9",
|
|
49
|
+
"@moonbeam-network/xcm-config": "*",
|
|
50
|
+
"@moonbeam-network/xcm-utils": "*",
|
|
46
51
|
"lodash": "^4.17.21",
|
|
47
|
-
"lru-cache": "^7.
|
|
52
|
+
"lru-cache": "^7.17.0"
|
|
48
53
|
},
|
|
49
54
|
"devDependencies": {
|
|
50
|
-
"@types/lodash": "^4.14.
|
|
55
|
+
"@types/lodash": "^4.14.191"
|
|
56
|
+
},
|
|
57
|
+
"peerDependencies": {
|
|
58
|
+
"@polkadot/api": "10.x",
|
|
59
|
+
"@polkadot/api-augment": "10.x",
|
|
60
|
+
"@polkadot/types": "10.x",
|
|
61
|
+
"@polkadot/util": "11.x",
|
|
62
|
+
"ethers": "5.x"
|
|
51
63
|
}
|
|
52
64
|
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "simple",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "src/index.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"start": "ts-node index.ts"
|
|
8
|
-
},
|
|
9
|
-
"keywords": [],
|
|
10
|
-
"author": "",
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"dependencies": {
|
|
13
|
-
"@moonbeam-network/xcm-config": "^0.0.23",
|
|
14
|
-
"@moonbeam-network/xcm-sdk": "^0.0.23",
|
|
15
|
-
"@polkadot/api": "^9.3.2",
|
|
16
|
-
"ethers": "^5.7.0"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"ts-node": "^10.9.1"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"inputs": [
|
|
4
|
-
{
|
|
5
|
-
"internalType": "address",
|
|
6
|
-
"name": "currency_address",
|
|
7
|
-
"type": "address"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"internalType": "uint256",
|
|
11
|
-
"name": "amount",
|
|
12
|
-
"type": "uint256"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"components": [
|
|
16
|
-
{
|
|
17
|
-
"internalType": "uint8",
|
|
18
|
-
"name": "parents",
|
|
19
|
-
"type": "uint8"
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"internalType": "bytes[]",
|
|
23
|
-
"name": "interior",
|
|
24
|
-
"type": "bytes[]"
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"internalType": "struct Xtokens.Multilocation",
|
|
28
|
-
"name": "destination",
|
|
29
|
-
"type": "tuple"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"internalType": "uint64",
|
|
33
|
-
"name": "weight",
|
|
34
|
-
"type": "uint64"
|
|
35
|
-
}
|
|
36
|
-
],
|
|
37
|
-
"name": "transfer",
|
|
38
|
-
"outputs": [],
|
|
39
|
-
"stateMutability": "nonpayable",
|
|
40
|
-
"type": "function"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"inputs": [
|
|
44
|
-
{
|
|
45
|
-
"components": [
|
|
46
|
-
{
|
|
47
|
-
"internalType": "uint8",
|
|
48
|
-
"name": "parents",
|
|
49
|
-
"type": "uint8"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"internalType": "bytes[]",
|
|
53
|
-
"name": "interior",
|
|
54
|
-
"type": "bytes[]"
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"internalType": "struct Xtokens.Multilocation",
|
|
58
|
-
"name": "asset",
|
|
59
|
-
"type": "tuple"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"internalType": "uint256",
|
|
63
|
-
"name": "amount",
|
|
64
|
-
"type": "uint256"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"components": [
|
|
68
|
-
{
|
|
69
|
-
"internalType": "uint8",
|
|
70
|
-
"name": "parents",
|
|
71
|
-
"type": "uint8"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"internalType": "bytes[]",
|
|
75
|
-
"name": "interior",
|
|
76
|
-
"type": "bytes[]"
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
"internalType": "struct Xtokens.Multilocation",
|
|
80
|
-
"name": "destination",
|
|
81
|
-
"type": "tuple"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"internalType": "uint64",
|
|
85
|
-
"name": "weight",
|
|
86
|
-
"type": "uint64"
|
|
87
|
-
}
|
|
88
|
-
],
|
|
89
|
-
"name": "transfer_multiasset",
|
|
90
|
-
"outputs": [],
|
|
91
|
-
"stateMutability": "nonpayable",
|
|
92
|
-
"type": "function"
|
|
93
|
-
}
|
|
94
|
-
]
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { TransactionResponse } from '@ethersproject/abstract-provider';
|
|
2
|
-
import { Asset, AssetSymbol, WithdrawXTokensConfig } from '@moonbeam-network/xcm-config';
|
|
3
|
-
import { Signer } from 'ethers';
|
|
4
|
-
export declare class XTokensContract<Symbols extends AssetSymbol = AssetSymbol> {
|
|
5
|
-
#private;
|
|
6
|
-
readonly address: string;
|
|
7
|
-
constructor(signer: Signer);
|
|
8
|
-
transfer(account: string, amount: bigint, asset: Asset<Symbols>, config: WithdrawXTokensConfig<Symbols>): Promise<TransactionResponse>;
|
|
9
|
-
getTransferFees(account: string, amount: bigint, asset: Asset<Symbols>, config: WithdrawXTokensConfig<Symbols>): Promise<bigint>;
|
|
10
|
-
private getGasPrice;
|
|
11
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
var _XTokensContract_contract, _XTokensContract_signer;
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.XTokensContract = void 0;
|
|
19
|
-
const ethers_1 = require("ethers");
|
|
20
|
-
const XTokensABI_json_1 = __importDefault(require("./XTokensABI.json"));
|
|
21
|
-
class XTokensContract {
|
|
22
|
-
constructor(signer) {
|
|
23
|
-
this.address = '0x0000000000000000000000000000000000000804';
|
|
24
|
-
_XTokensContract_contract.set(this, void 0);
|
|
25
|
-
_XTokensContract_signer.set(this, void 0);
|
|
26
|
-
__classPrivateFieldSet(this, _XTokensContract_signer, signer, "f");
|
|
27
|
-
__classPrivateFieldSet(this, _XTokensContract_contract, new ethers_1.Contract(this.address, XTokensABI_json_1.default, signer), "f");
|
|
28
|
-
}
|
|
29
|
-
async transfer(account, amount, asset, config) {
|
|
30
|
-
return __classPrivateFieldGet(this, _XTokensContract_contract, "f").transfer(asset.erc20Id, amount, config.getParams(account), config.weight);
|
|
31
|
-
}
|
|
32
|
-
async getTransferFees(account, amount, asset, config) {
|
|
33
|
-
const estimatedGas = (await __classPrivateFieldGet(this, _XTokensContract_contract, "f").estimateGas.transfer(asset.erc20Id, amount, config.getParams(account), config.weight)).toBigInt();
|
|
34
|
-
const gasPrice = await this.getGasPrice();
|
|
35
|
-
return estimatedGas * gasPrice;
|
|
36
|
-
}
|
|
37
|
-
async getGasPrice() {
|
|
38
|
-
const { gasPrice, maxPriorityFeePerGas } = await __classPrivateFieldGet(this, _XTokensContract_signer, "f").getFeeData();
|
|
39
|
-
return ((gasPrice?.toBigInt() || 0n) + (maxPriorityFeePerGas?.toBigInt() || 0n));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.XTokensContract = XTokensContract;
|
|
43
|
-
_XTokensContract_contract = new WeakMap(), _XTokensContract_signer = new WeakMap();
|
|
44
|
-
//# sourceMappingURL=XTokensContract.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XTokensContract.js","sourceRoot":"","sources":["../../../../../src/contracts/XTokensContract/XTokensContract.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAMA,mCAA0C;AAE1C,wEAAkD;AAElD,MAAa,eAAe;IAO1B,YAAY,MAAc;QANjB,YAAO,GAAW,4CAA4C,CAAC;QAExE,4CAA6B;QAE7B,0CAAyB;QAGvB,uBAAA,IAAI,2BAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,6BAAa,IAAI,iBAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAiB,EAAE,MAAM,CAAC,MAAA,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,OAAe,EACf,MAAc,EACd,KAAqB,EACrB,MAAsC;QAEtC,OAAO,uBAAA,IAAI,iCAAU,CAAC,QAAQ,CAC5B,KAAK,CAAC,OAAO,EACb,MAAM,EACN,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EACzB,MAAM,CAAC,MAAM,CACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,OAAe,EACf,MAAc,EACd,KAAqB,EACrB,MAAsC;QAEtC,MAAM,YAAY,GAAG,CACnB,MAAM,uBAAA,IAAI,iCAAU,CAAC,WAAW,CAAC,QAAQ,CACvC,KAAK,CAAC,OAAO,EACb,MAAM,EACN,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EACzB,MAAM,CAAC,MAAM,CACd,CACF,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAE1C,OAAO,YAAY,GAAG,QAAQ,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,uBAAA,IAAI,+BAAQ,CAAC,UAAU,EAAE,CAAC;QAE3E,OAAO,CACL,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACxE,CAAC;IACJ,CAAC;CACF;AApDD,0CAoDC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { XTokensContract } from './XTokensContract';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.XTokensContract = void 0;
|
|
4
|
-
var XTokensContract_1 = require("./XTokensContract");
|
|
5
|
-
Object.defineProperty(exports, "XTokensContract", { enumerable: true, get: function () { return XTokensContract_1.XTokensContract; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/contracts/XTokensContract/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './XTokensContract';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./XTokensContract"), exports);
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contracts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
|
package/build/cjs/src/index.d.ts
DELETED
package/build/cjs/src/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./contracts"), exports);
|
|
18
|
-
__exportStar(require("./polkadot"), exports);
|
|
19
|
-
__exportStar(require("./sdk"), exports);
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B;AAC3B,wCAAsB"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import '@moonbeam-network/api-augment';
|
|
2
|
-
import { AssetSymbol, BalanceConfig, ChainKey, ExtrinsicConfig, MinBalanceConfig, XcmConfigBuilder } from '@moonbeam-network/xcm-config';
|
|
3
|
-
import { ApiPromise } from '@polkadot/api';
|
|
4
|
-
import { SubmittableExtrinsic, UnsubscribePromise } from '@polkadot/api/types';
|
|
5
|
-
import { AccountInfo } from '@polkadot/types/interfaces';
|
|
6
|
-
import { MoonbeamRuntimeXcmConfigAssetType, PalletAssetsAssetAccount, PalletAssetsAssetMetadata } from '@polkadot/types/lookup';
|
|
7
|
-
import { AssetBalanceInfo } from './polkadot.interfaces';
|
|
8
|
-
export declare class PolkadotService<Symbols extends AssetSymbol = AssetSymbol, ChainKeys extends ChainKey = ChainKey> {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(api: ApiPromise);
|
|
11
|
-
static create<Symbols extends AssetSymbol = AssetSymbol, ChainKeys extends ChainKey = ChainKey>(ws: string): Promise<PolkadotService<Symbols, ChainKeys>>;
|
|
12
|
-
static getChainMin(weight: number, unitsPerSecond: bigint): bigint;
|
|
13
|
-
getMetadata(): {
|
|
14
|
-
decimals: number;
|
|
15
|
-
symbol: Symbols;
|
|
16
|
-
};
|
|
17
|
-
getExistentialDeposit(): bigint;
|
|
18
|
-
getAssetDecimals(assetId: string): Promise<number>;
|
|
19
|
-
getAssetMeta(assetId: string): Promise<PalletAssetsAssetMetadata>;
|
|
20
|
-
subscribeToAccountInfo(account: string, callback: (info: AccountInfo) => void): UnsubscribePromise;
|
|
21
|
-
subscribeToBalance(account: string, callback: (balance: bigint) => void): UnsubscribePromise;
|
|
22
|
-
getGenericBalance(account: string, { pallet, function: fn, getParams, path, calc }: BalanceConfig<Symbols>): Promise<bigint>;
|
|
23
|
-
getAssetMinBalance({ pallet, function: fn, params, path, }: MinBalanceConfig): Promise<bigint>;
|
|
24
|
-
getXcmExtrinsic(account: string, amount: bigint, { pallet, extrinsic, getParams }: ExtrinsicConfig<Symbols>, fee?: bigint, primaryAccount?: string): SubmittableExtrinsic<'promise'>;
|
|
25
|
-
getAssetFee(id: string, weight: number): Promise<bigint>;
|
|
26
|
-
getAssetType(id: string): Promise<MoonbeamRuntimeXcmConfigAssetType | undefined>;
|
|
27
|
-
subscribeToAssetsBalanceInfo(account: string, config: XcmConfigBuilder<Symbols, ChainKeys>, callback: (data: AssetBalanceInfo<Symbols>[]) => void): UnsubscribePromise;
|
|
28
|
-
subscribeToAccountBalances(account: string, ids: string[], callback: (balances: PalletAssetsAssetAccount[]) => void): UnsubscribePromise;
|
|
29
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _PolkadotService_api;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.PolkadotService = void 0;
|
|
16
|
-
require("@moonbeam-network/api-augment");
|
|
17
|
-
const lodash_1 = require("lodash");
|
|
18
|
-
const polkadot_api_1 = require("./polkadot.api");
|
|
19
|
-
const polkadot_utils_1 = require("./polkadot.utils");
|
|
20
|
-
class PolkadotService {
|
|
21
|
-
constructor(api) {
|
|
22
|
-
_PolkadotService_api.set(this, void 0);
|
|
23
|
-
__classPrivateFieldSet(this, _PolkadotService_api, api, "f");
|
|
24
|
-
}
|
|
25
|
-
static async create(ws) {
|
|
26
|
-
return new PolkadotService(await (0, polkadot_api_1.getPolkadotApi)(ws));
|
|
27
|
-
}
|
|
28
|
-
static getChainMin(weight, unitsPerSecond) {
|
|
29
|
-
return (0, polkadot_utils_1.calculateMin)(weight, unitsPerSecond);
|
|
30
|
-
}
|
|
31
|
-
getMetadata() {
|
|
32
|
-
return {
|
|
33
|
-
decimals: __classPrivateFieldGet(this, _PolkadotService_api, "f").registry.chainDecimals.at(0) || 12,
|
|
34
|
-
symbol: __classPrivateFieldGet(this, _PolkadotService_api, "f").registry.chainTokens.at(0),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
getExistentialDeposit() {
|
|
38
|
-
return __classPrivateFieldGet(this, _PolkadotService_api, "f").consts.balances?.existentialDeposit.toBigInt() || 0n;
|
|
39
|
-
}
|
|
40
|
-
async getAssetDecimals(assetId) {
|
|
41
|
-
const meta = await this.getAssetMeta(assetId);
|
|
42
|
-
return meta.decimals.toNumber();
|
|
43
|
-
}
|
|
44
|
-
async getAssetMeta(assetId) {
|
|
45
|
-
return __classPrivateFieldGet(this, _PolkadotService_api, "f").query.assets.metadata(assetId);
|
|
46
|
-
}
|
|
47
|
-
async subscribeToAccountInfo(account, callback) {
|
|
48
|
-
return __classPrivateFieldGet(this, _PolkadotService_api, "f").query.system.account(account, callback);
|
|
49
|
-
}
|
|
50
|
-
async subscribeToBalance(account, callback) {
|
|
51
|
-
return this.subscribeToAccountInfo(account, ({ data }) => callback(data.free.toBigInt() - data.miscFrozen.toBigInt()));
|
|
52
|
-
}
|
|
53
|
-
async getGenericBalance(account, { pallet, function: fn, getParams, path, calc }) {
|
|
54
|
-
const response = await __classPrivateFieldGet(this, _PolkadotService_api, "f").query[pallet][fn](...getParams(account));
|
|
55
|
-
if (response.isEmpty) {
|
|
56
|
-
return 0n;
|
|
57
|
-
}
|
|
58
|
-
const unwrapped = response.unwrap?.() || response;
|
|
59
|
-
return calc(path.length ? (0, lodash_1.get)(unwrapped, path) : unwrapped);
|
|
60
|
-
}
|
|
61
|
-
async getAssetMinBalance({ pallet, function: fn, params, path, }) {
|
|
62
|
-
const details = await __classPrivateFieldGet(this, _PolkadotService_api, "f").query[pallet][fn](...params);
|
|
63
|
-
if (details.isEmpty) {
|
|
64
|
-
return 0n;
|
|
65
|
-
}
|
|
66
|
-
return (0, lodash_1.get)(details.value, path).toBigInt();
|
|
67
|
-
}
|
|
68
|
-
getXcmExtrinsic(account, amount, { pallet, extrinsic, getParams }, fee, primaryAccount) {
|
|
69
|
-
let transferExtrinsic = __classPrivateFieldGet(this, _PolkadotService_api, "f").tx[pallet][extrinsic](
|
|
70
|
-
// TODO: check issue with types and if we can fix it
|
|
71
|
-
// @ts-ignore
|
|
72
|
-
...getParams(account, amount, fee));
|
|
73
|
-
if (primaryAccount) {
|
|
74
|
-
transferExtrinsic = __classPrivateFieldGet(this, _PolkadotService_api, "f").tx.proxy.proxy(primaryAccount, null, transferExtrinsic);
|
|
75
|
-
}
|
|
76
|
-
return transferExtrinsic;
|
|
77
|
-
}
|
|
78
|
-
async getAssetFee(id, weight) {
|
|
79
|
-
const type = await this.getAssetType(id);
|
|
80
|
-
if (!type) {
|
|
81
|
-
return 0n;
|
|
82
|
-
}
|
|
83
|
-
const unitsPerSecond = await __classPrivateFieldGet(this, _PolkadotService_api, "f").query.assetManager.assetTypeUnitsPerSecond(type);
|
|
84
|
-
return (0, polkadot_utils_1.calculateMin)(weight, unitsPerSecond.unwrapOrDefault().toBigInt());
|
|
85
|
-
}
|
|
86
|
-
async getAssetType(id) {
|
|
87
|
-
const type = await __classPrivateFieldGet(this, _PolkadotService_api, "f").query.assetManager.assetIdType(id);
|
|
88
|
-
return type.unwrapOr(undefined);
|
|
89
|
-
}
|
|
90
|
-
async subscribeToAssetsBalanceInfo(account, config, callback) {
|
|
91
|
-
const assetsArray = Object.values(config.assets);
|
|
92
|
-
const ids = assetsArray.map((asset) => asset.id);
|
|
93
|
-
const metadata = (await __classPrivateFieldGet(this, _PolkadotService_api, "f").query.assets.metadata.multi(ids));
|
|
94
|
-
return this.subscribeToAccountBalances(account, ids, (data) => {
|
|
95
|
-
callback(data.map((balance, index) => {
|
|
96
|
-
const asset = assetsArray[index];
|
|
97
|
-
const meta = metadata[index];
|
|
98
|
-
const { chains: [chain], from, } = config.deposit(asset.originSymbol);
|
|
99
|
-
const { origin } = from(chain.key);
|
|
100
|
-
return {
|
|
101
|
-
asset,
|
|
102
|
-
balance: {
|
|
103
|
-
balance: balance.balance.toBigInt(),
|
|
104
|
-
decimals: asset.isNative
|
|
105
|
-
? origin.decimals
|
|
106
|
-
: meta.decimals.toNumber(),
|
|
107
|
-
symbol: asset.isNative
|
|
108
|
-
? asset.originSymbol
|
|
109
|
-
: meta.symbol.toHuman()?.toString() || '',
|
|
110
|
-
},
|
|
111
|
-
origin,
|
|
112
|
-
};
|
|
113
|
-
}));
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
async subscribeToAccountBalances(account, ids, callback) {
|
|
117
|
-
const keys = ids.map((x) => [x, account]);
|
|
118
|
-
return __classPrivateFieldGet(this, _PolkadotService_api, "f").query.assets.account.multi(keys, (res) => {
|
|
119
|
-
const response = res.map((balance) => balance.unwrapOrDefault());
|
|
120
|
-
callback(response);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.PolkadotService = PolkadotService;
|
|
125
|
-
_PolkadotService_api = new WeakMap();
|
|
126
|
-
//# sourceMappingURL=PolkadotService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PolkadotService.js","sourceRoot":"","sources":["../../../../src/polkadot/PolkadotService.ts"],"names":[],"mappings":"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"}
|