UNPKG

picasso-sdk

Version:

Picasso sdk for cosmos, ethereum, solana, and polkadot ibc transfer

527 lines (526 loc) 20.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildPolkadotXcmTransferV3 = exports.buildPolkadotXcmTransferV2 = exports.buildXcmLimitedReserveTransferV2 = exports.buildXcmVersionedMultiAssetV3 = exports.buildXTokensTransferV3X2 = exports.buildXTokensTransferV3 = exports.buildXTokensMoonbeamTransferV2 = exports.buildXTokensTransferV2 = exports.buildXTokensTransferV1 = exports.buildXcmPalletTransferV2 = exports.buildBatchTransfer = exports.buildXcmPalletTransferV1 = void 0; var bech32_1 = require("bech32"); var buildXcmPalletTransferV1 = function (fromApi, chainInfo, convertedToAddr, amount) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V1: { parents: 0, interior: { X1: { Parachain: chainInfo.chainId, }, }, }, }); var beneficiary = fromApi.createType('XcmVersionedMultiLocation', { V1: fromApi.createType('XcmV1MultiLocation', { parents: 0, interior: { X1: { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), network: 'Any', }, }, }, }), }); var assets = fromApi.createType('XcmVersionedMultiAssets', { V1: [ { id: { Concrete: { parents: 0, interior: 'Here', }, }, fun: { Fungible: amount.toString(), }, }, ], }); var feeAssetItem = fromApi.createType('u32', 0); return function () { return fromApi.tx.xcmPallet.reserveTransferAssets(dest, beneficiary, assets, feeAssetItem); }; }; exports.buildXcmPalletTransferV1 = buildXcmPalletTransferV1; var buildBatchTransfer = function (fromApi, path, amount, polkadotAddr, parachainId) { var dest = fromApi.createType('XcmVersionedLocation', { V2: { parents: 0, interior: { X1: { Parachain: parachainId, }, }, }, }); var list = [ { PalletInstance: 192 }, { GeneralIndex: path.index }, { AccountId32: { id: fromApi.createType('AccountId32', polkadotAddr), network: 'Any', }, }, ]; path.paths.forEach(function (p) { list.push({ AccountId32: { network: 'Any', id: fromApi.createType('AccountId32', p.chainHop === 'CosmosIbc' ? bech32_1.bech32.decode(p.address || '').words : polkadotAddr), }, }); }); var interior = {}; interior["X".concat(path.paths.length + 3)] = list; var beneficiary = fromApi.createType('XcmVersionedLocation', { V2: fromApi.createType('XcmV2MultiLocation', { parents: 0, interior: fromApi.createType('XcmV2MultilocationJunctions', interior), }), }); var assets = fromApi.createType('XcmVersionedAssets', { V2: [ { id: { Concrete: { parents: 0, interior: 'Here', }, }, fun: { Fungible: amount, }, }, ], }); return function () { return fromApi.tx.xcmPallet.reserveTransferAssets(dest, beneficiary, assets, fromApi.createType('u32', 0)); }; }; exports.buildBatchTransfer = buildBatchTransfer; var buildXcmPalletTransferV2 = function (fromApi, chainInfo, convertedToAddr, amount) { var dest = fromApi.createType('XcmVersionedLocation', { V2: { parents: 0, interior: { X1: { Parachain: chainInfo.chainId, }, }, }, }); var beneficiary = fromApi.createType('XcmVersionedLocation', { V2: fromApi.createType('XcmV2MultiLocation', { parents: 0, interior: { X1: { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), network: 'Any', }, }, }, }), }); var assets = fromApi.createType('XcmVersionedAssets', { V2: [ { id: { Concrete: { parents: 0, interior: 'Here', }, }, fun: { Fungible: amount.toString(), }, }, ], }); var feeAssetItem = fromApi.createType('u32', 0); return function () { return fromApi.tx.xcmPallet.reserveTransferAssets(dest, beneficiary, assets, feeAssetItem); }; }; exports.buildXcmPalletTransferV2 = buildXcmPalletTransferV2; var buildXTokensTransferV1 = function (fromApi, convertedToAddr, assetId, amount, toChainId, type) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V1: fromApi.createType('XcmV1MultiLocation', { parents: 1, interior: fromApi.createType('XcmV1MultilocationJunctions', { X2: [ fromApi.createType('XcmV1Junction', { Parachain: fromApi.createType('u32', toChainId), }), fromApi.createType('XcmV1Junction', { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), network: 'Any', }, }), ], }), }), destWeightLimit: fromApi.createType('XcmV2WeightLimit', 'Unlimited'), }); var getCurrencyId = function () { if (type === 'VToken') { return fromApi.createType('NodePrimitivesCurrencyCurrencyId', { VToken: fromApi.createType('NodePrimitivesCurrencyTokenSymbol', 'KSM'), }); } else if (type === 'Native') { return fromApi.createType('NodePrimitivesCurrencyCurrencyId', { Native: fromApi.createType('NodePrimitivesCurrencyTokenSymbol', 'BNC'), }); } else if (type === 'VToken2') { return fromApi.createType('NodePrimitivesCurrencyCurrencyId', { VToken2: fromApi.createType('NodePrimitivesCurrencyTokenSymbol', 0), }); } return assetId; }; return function () { return fromApi.tx.xTokens.transfer(getCurrencyId(), amount, dest, 'unlimited'); }; }; exports.buildXTokensTransferV1 = buildXTokensTransferV1; var buildXTokensTransferV2 = function (fromApi, convertedToAddr, assetId, amount, toChainId, type, addrType) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V2: fromApi.createType('XcmV2MultiLocation', { parents: 1, interior: fromApi.createType('XcmV2MultilocationJunctions', { X2: [ fromApi.createType('XcmV2Junction', { Parachain: fromApi.createType('u32', toChainId), }), fromApi.createType('XcmV2Junction', addrType === 'AccountId32' ? { AccountId32: { id: fromApi.createType(addrType, convertedToAddr), network: 'Any', }, } : { AccountKey20: { key: convertedToAddr, network: 'Any', }, }), ], }), }), destWeightLimit: fromApi.createType('XcmV2WeightLimit', 'Unlimited'), }); var getCurrencyId = function () { if (type === 'VToken') { return fromApi.createType('NodePrimitivesCurrencyCurrencyId', { VToken: fromApi.createType('NodePrimitivesCurrencyTokenSymbol', 'KSM'), }); } else if (type === 'Native') { return fromApi.createType('NodePrimitivesCurrencyCurrencyId', { Native: fromApi.createType('NodePrimitivesCurrencyTokenSymbol', 'BNC'), }); } else if (type === 'VToken2') { return fromApi.createType('NodePrimitivesCurrencyCurrencyId', { VToken2: fromApi.createType('u8', 0), }); } return assetId; }; return function () { return fromApi.tx.xTokens.transfer(getCurrencyId(), amount, dest, 'unlimited'); }; }; exports.buildXTokensTransferV2 = buildXTokensTransferV2; var buildXTokensMoonbeamTransferV2 = function (fromApi, convertedToAddr, assetId, amount, toChainId) { var list = [ fromApi.createType('StagingXcmV2Junction', { Parachain: fromApi.createType('u32', toChainId), }), fromApi.createType('StagingXcmV2Junction', { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), network: 'Any', }, }), ]; var interior = {}; interior["X2"] = list; var getCurrencyId = function () { if (assetId === '792281' || assetId === '167283') { return null; } return fromApi.createType(toChainId === '2019' ? 'MoonbeamRuntimeXcmConfigCurrencyId' : 'MoonriverRuntimeXcmConfigCurrencyId', { ForeignAsset: fromApi.createType('u128', assetId), }); }; var dest = fromApi.createType('StagingXcmVersionedMultiLocation', { V2: fromApi.createType('StagingXcmV2MultiLocation', { parents: 1, interior: fromApi.createType('StagingXcmV2MultilocationJunctions', interior), }), destWeightLimit: fromApi.createType('StagingXcmV3WeightLimit', 'Unlimited'), }); return function () { return fromApi.tx.xTokens.transfer(getCurrencyId(), amount, dest, 'unlimited'); }; }; exports.buildXTokensMoonbeamTransferV2 = buildXTokensMoonbeamTransferV2; var buildXTokensTransferV3 = function (fromApi, convertedToAddr, assetId, amount) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V3: fromApi.createType('XcmV3MultiLocation', { parents: 1, interior: fromApi.createType('XcmV3Junctions', { X1: fromApi.createType('XcmV3Junction', { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), }, }), }), }), }); return function () { return fromApi.tx.xTokens.transfer(assetId, amount, dest, 'unlimited'); }; }; exports.buildXTokensTransferV3 = buildXTokensTransferV3; var buildXTokensTransferV3X2 = function (fromApi, convertedToAddr, assetId, amount, toChainId) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V3: fromApi.createType('StagingXcmV3MultiLocation', { parents: 1, interior: fromApi.createType('XcmV3Junctions', { X2: [ fromApi.createType('XcmV3Junction', { Parachain: fromApi.createType('u32', toChainId), }), fromApi.createType('XcmV3Junction', { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), }, }), ], }), }), }); return function () { return fromApi.tx.xTokens.transfer(assetId, amount, dest, 'unlimited'); }; }; exports.buildXTokensTransferV3X2 = buildXTokensTransferV3X2; var buildXcmVersionedMultiAssetV3 = function (fromApi, convertedToAddr, toChainId, amount, general_index, para_chain_id) { var asset = fromApi.createType('XcmVersionedMultiAsset', { V3: fromApi.createType('XcmV3MultiAsset', { id: fromApi.createType('XcmV3MultiassetAssetId', { Concrete: fromApi.createType('XcmV3MultiLocation', { parents: fromApi.createType('u8', 1), interior: fromApi.createType('XcmV3Junctions', { X3: [ fromApi.createType('XcmV3Junction', { Parachain: fromApi.createType('u32', toChainId), }), fromApi.createType('XcmV3Junction', { PalletInstance: fromApi.createType('u8', 50), }), fromApi.createType('XcmV3Junction', { GeneralIndex: fromApi.createType('u128', general_index), }), ], }), }), }), fun: fromApi.createType('XcmV3MultiassetFungibility', { Fungible: amount, }), }), }); var dest = fromApi.createType('XcmVersionedMultiLocation', { V3: fromApi.createType('XcmV3MultiLocation', { parents: fromApi.createType('u8', 1), interior: fromApi.createType('XcmV3Junctions', { X2: [ fromApi.createType('XcmV3Junction', { Parachain: fromApi.createType('Compact<u32>', toChainId), }), fromApi.createType('XcmV3Junction', { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), }, }), fromApi.createType('XcmV3Junction', { Parachain: fromApi.createType('Compact<u32>', para_chain_id), }), ], }), }), }); return function () { return fromApi.tx.xTokens.transferMultiasset(asset, dest, 'unlimited'); }; }; exports.buildXcmVersionedMultiAssetV3 = buildXcmVersionedMultiAssetV3; var buildXcmLimitedReserveTransferV2 = function (fromApi, convertedToAddr, toChainId, assetId, amount) { var dest = fromApi.createType('XcmVersionedLocation', { V2: fromApi.createType('XcmV2MultiLocation', { parents: 0, interior: { X1: { Parachain: toChainId, }, }, }), }); var beneficiary = fromApi.createType('XcmVersionedLocation', { V2: { parents: 0, interior: { X1: { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), network: 'Any', }, }, }, }, }); var assets = fromApi.createType('XcmVersionedAssets', { V2: [ { id: { Concrete: { parents: 0, interior: 'Here', }, }, fun: { Fungible: amount, }, }, ], }); var feeAssetItem = fromApi.createType('u32', 0); return function () { return fromApi.tx.xcmPallet.limitedReserveTransferAssets(dest, beneficiary, assets, feeAssetItem, 'unlimited'); }; }; exports.buildXcmLimitedReserveTransferV2 = buildXcmLimitedReserveTransferV2; var buildPolkadotXcmTransferV2 = function (fromApi, convertedToAddr, toChainId, assetId, amount, general_index) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V2: fromApi.createType('XcmV2MultiLocation', { parents: 1, interior: { X1: { Parachain: toChainId, }, }, }), }); var beneficiary = fromApi.createType('XcmVersionedMultiLocation', { V2: { parents: 0, interior: { X1: { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), network: 'Any', }, }, }, }, }); var assets = fromApi.createType('XcmVersionedMultiAssets', { V2: assetId === '130' && !!general_index ? [ { id: { Concrete: { parents: 0, interior: { X2: [ { PalletInstance: 50, }, { GeneralIndex: fromApi.createType('u128', general_index), }, ], }, }, }, fun: { Fungible: amount, }, }, ] : [ { id: { Concrete: { parents: assetId === '79228162514264337593543952342' ? 0 : 1, interior: 'Here', }, }, fun: { Fungible: amount, }, }, ], }); var feeAssetItem = fromApi.createType('u32', 0); return function () { return fromApi.tx.polkadotXcm.limitedReserveTransferAssets(dest, beneficiary, assets, feeAssetItem, 'unlimited'); }; }; exports.buildPolkadotXcmTransferV2 = buildPolkadotXcmTransferV2; var buildPolkadotXcmTransferV3 = function (fromApi, convertedToAddr, toChainId, amount) { var dest = fromApi.createType('XcmVersionedMultiLocation', { V3: fromApi.createType('XcmV3MultiLocation', { parents: 1, interior: { X1: { Parachain: toChainId, }, }, }), }); var beneficiary = fromApi.createType('XcmVersionedMultiLocation', { V3: fromApi.createType('XcmV3MultiLocation', { parents: 0, interior: fromApi.createType('XcmV3Junctions', { X1: fromApi.createType('XcmV3Junction', { AccountId32: { id: fromApi.createType('AccountId32', convertedToAddr), }, }), }), }), }); var assets = fromApi.createType('XcmVersionedMultiAssets', { V3: [ fromApi.createType('XcmV3MultiAsset', { id: fromApi.createType('XcmV3MultiassetAssetId', { Concrete: { parents: 0, interior: fromApi.createType('XcmV3Junctions', 'Here'), }, }), fun: fromApi.createType('XcmV3MultiassetFungibility', { Fungible: fromApi.createType('u128', amount), }), }), ], }); var feeAssetItem = fromApi.createType('u32', 0); var destWeightLimit = fromApi.createType('XcmV3WeightLimit', 'Unlimited'); return function () { return fromApi.tx.polkadotXcm.limitedReserveTransferAssets(dest, beneficiary, assets, feeAssetItem, destWeightLimit); }; }; exports.buildPolkadotXcmTransferV3 = buildPolkadotXcmTransferV3;