@paraspell/sdk-core 8.6.1 → 8.6.2
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/dist/index.cjs +146 -117
- package/dist/index.d.ts +68 -8
- package/dist/index.mjs +146 -117
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -716,6 +716,8 @@ var NODES_WITH_RELAY_CHAINS_DOT_KSM = [].concat(NODE_NAMES_DOT_KSM, ['Polkadot',
|
|
|
716
716
|
* Supported XCM pallets.
|
|
717
717
|
*/
|
|
718
718
|
var SUPPORTED_PALLETS = ['XTokens', 'OrmlXTokens', 'PolkadotXcm', 'RelayerXcm', 'XTransfer', 'XcmPallet'];
|
|
719
|
+
var SYSTEM_NODES_POLKADOT = ['PeoplePolkadot', 'CoretimePolkadot', 'Collectives'];
|
|
720
|
+
var SYSTEM_NODES_KUSAMA = ['PeopleKusama', 'CoretimeKusama'];
|
|
719
721
|
|
|
720
722
|
/**
|
|
721
723
|
* Error thrown when multiple assets with the same symbol are found.
|
|
@@ -2362,7 +2364,10 @@ var constructRelayToParaParameters = function constructRelayToParaParameters(_re
|
|
|
2362
2364
|
return _objectSpread2({
|
|
2363
2365
|
dest: createPolkadotXcmHeader('RelayToPara', version, destination, paraId),
|
|
2364
2366
|
beneficiary: generateAddressPayload(api, 'RelayToPara', null, address, version, paraId),
|
|
2365
|
-
assets:
|
|
2367
|
+
assets: createVersionedMultiAssets(version, asset.amount, {
|
|
2368
|
+
parents: exports.Parents.ZERO,
|
|
2369
|
+
interior: 'Here'
|
|
2370
|
+
}),
|
|
2366
2371
|
fee_asset_item: DEFAULT_FEE_ASSET
|
|
2367
2372
|
}, includeFee && {
|
|
2368
2373
|
weight_limit: 'Unlimited'
|
|
@@ -2375,21 +2380,6 @@ var isTMultiLocation = function isTMultiLocation(value) {
|
|
|
2375
2380
|
var isTMultiAsset = function isTMultiAsset(value) {
|
|
2376
2381
|
return _typeof(value) === 'object' && value !== null && 'id' in value && 'fun' in value;
|
|
2377
2382
|
};
|
|
2378
|
-
var createBridgeCurrencySpec = function createBridgeCurrencySpec(amount, ecosystem) {
|
|
2379
|
-
return _defineProperty({}, exports.Version.V4, [{
|
|
2380
|
-
id: {
|
|
2381
|
-
parents: exports.Parents.TWO,
|
|
2382
|
-
interior: {
|
|
2383
|
-
X1: [{
|
|
2384
|
-
GlobalConsensus: ecosystem
|
|
2385
|
-
}]
|
|
2386
|
-
}
|
|
2387
|
-
},
|
|
2388
|
-
fun: {
|
|
2389
|
-
Fungible: amount.toString()
|
|
2390
|
-
}
|
|
2391
|
-
}]);
|
|
2392
|
-
};
|
|
2393
2383
|
var createMultiAsset = function createMultiAsset(version, amount, multiLocation) {
|
|
2394
2384
|
if (version === exports.Version.V4) {
|
|
2395
2385
|
return {
|
|
@@ -2411,22 +2401,27 @@ var createMultiAsset = function createMultiAsset(version, amount, multiLocation)
|
|
|
2411
2401
|
var addXcmVersionHeader = function addXcmVersionHeader(obj, version) {
|
|
2412
2402
|
return _defineProperty({}, version, obj);
|
|
2413
2403
|
};
|
|
2414
|
-
var
|
|
2415
|
-
var
|
|
2404
|
+
var extractVersionFromHeader = function extractVersionFromHeader(versionHeader) {
|
|
2405
|
+
var keys = Object.keys(versionHeader);
|
|
2406
|
+
if (keys.length !== 1) {
|
|
2407
|
+
throw new Error('Invalid version header: expected exactly one key.');
|
|
2408
|
+
}
|
|
2409
|
+
var version = keys[0];
|
|
2410
|
+
var value = versionHeader[version];
|
|
2411
|
+
if (value === undefined) {
|
|
2412
|
+
throw new Error('Invalid version header: value is undefined.');
|
|
2413
|
+
}
|
|
2414
|
+
return [version, value];
|
|
2415
|
+
};
|
|
2416
|
+
var maybeOverrideMultiAssets = function maybeOverrideMultiAssets(version, amount, multiAssets, overriddenCurrency) {
|
|
2416
2417
|
if (!overriddenCurrency) {
|
|
2417
|
-
return
|
|
2418
|
-
parents: parents,
|
|
2419
|
-
interior: interior
|
|
2420
|
-
})];
|
|
2418
|
+
return multiAssets;
|
|
2421
2419
|
}
|
|
2422
|
-
return isTMultiLocation(overriddenCurrency) ? [createMultiAsset(version, amount, overriddenCurrency)] :
|
|
2423
|
-
// It must be TMultiAsset if not TMultiLocation
|
|
2424
|
-
overriddenCurrency;
|
|
2420
|
+
return isTMultiLocation(overriddenCurrency) ? [createMultiAsset(version, amount, overriddenCurrency)] : overriddenCurrency;
|
|
2425
2421
|
};
|
|
2426
|
-
var
|
|
2427
|
-
var
|
|
2428
|
-
|
|
2429
|
-
return addXcmVersionHeader(currency, version);
|
|
2422
|
+
var createVersionedMultiAssets = function createVersionedMultiAssets(version, amount, multiLocation) {
|
|
2423
|
+
var multiAssets = createMultiAsset(version, amount, multiLocation);
|
|
2424
|
+
return addXcmVersionHeader([multiAssets], version);
|
|
2430
2425
|
};
|
|
2431
2426
|
var createPolkadotXcmHeader = function createPolkadotXcmHeader(scenario, version, destination, nodeId, junction, parents) {
|
|
2432
2427
|
var parentsResolved = parents !== null && parents !== void 0 ? parents : scenario === 'RelayToPara' ? exports.Parents.ZERO : exports.Parents.ONE;
|
|
@@ -2468,10 +2463,10 @@ var resolveTNodeFromMultiLocation = function resolveTNodeFromMultiLocation(relay
|
|
|
2468
2463
|
return node;
|
|
2469
2464
|
};
|
|
2470
2465
|
var throwUnsupportedCurrency = function throwUnsupportedCurrency(currency, node) {
|
|
2471
|
-
var
|
|
2466
|
+
var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
2472
2467
|
isDestination: false
|
|
2473
2468
|
},
|
|
2474
|
-
isDestination =
|
|
2469
|
+
isDestination = _ref3.isDestination;
|
|
2475
2470
|
if ('multilocation' in currency) {
|
|
2476
2471
|
throw new InvalidCurrencyError("\n Selected chain doesn't support multilocation you provided. Maybe you meant custom multilocation. If so, you need to use override option. Your selection should look like this: {multilocation: Override(".concat(JSON.stringify(currency.multilocation), ")}."));
|
|
2477
2472
|
}
|
|
@@ -2537,19 +2532,21 @@ var buildMultiLocation = function buildMultiLocation(_ref) {
|
|
|
2537
2532
|
}
|
|
2538
2533
|
};
|
|
2539
2534
|
var getModifiedCurrencySelection = function getModifiedCurrencySelection(version, input) {
|
|
2540
|
-
var amount = input.asset.amount
|
|
2535
|
+
var amount = input.asset.amount,
|
|
2536
|
+
overriddenAsset = input.overriddenAsset;
|
|
2537
|
+
if (overriddenAsset) {
|
|
2538
|
+
return addXcmVersionHeader(maybeOverrideMultiAssets(version, amount, [], overriddenAsset), version);
|
|
2539
|
+
}
|
|
2541
2540
|
var multiLocation = buildMultiLocation(input);
|
|
2542
2541
|
var multiAsset = createMultiAsset(version, amount, multiLocation);
|
|
2543
2542
|
return addXcmVersionHeader(multiAsset, version);
|
|
2544
2543
|
};
|
|
2545
2544
|
|
|
2546
|
-
var getCurrencySelection = function getCurrencySelection(input,
|
|
2547
|
-
var origin = input.origin
|
|
2548
|
-
overriddenAsset = input.overriddenAsset;
|
|
2545
|
+
var getCurrencySelection = function getCurrencySelection(input, useMultiAssets, currencySelection) {
|
|
2546
|
+
var origin = input.origin;
|
|
2549
2547
|
var _getNode = getNode(origin),
|
|
2550
2548
|
version = _getNode.version;
|
|
2551
|
-
if (
|
|
2552
|
-
if (isAssetHub) {
|
|
2549
|
+
if (useMultiAssets) {
|
|
2553
2550
|
return getModifiedCurrencySelection(version, input);
|
|
2554
2551
|
}
|
|
2555
2552
|
return currencySelection;
|
|
@@ -2557,11 +2554,11 @@ var getCurrencySelection = function getCurrencySelection(input, isAssetHub, curr
|
|
|
2557
2554
|
|
|
2558
2555
|
var getXTokensParameters = function getXTokensParameters(isMultiAssetTransfer, currencySelection, addressSelection, amount, fees, overriddenAsset) {
|
|
2559
2556
|
if (isMultiAssetTransfer) {
|
|
2560
|
-
var
|
|
2561
|
-
var feeAssetIndex =
|
|
2557
|
+
var isOverridenMultiAssets = overriddenAsset && !isTMultiLocation(overriddenAsset);
|
|
2558
|
+
var feeAssetIndex = isOverridenMultiAssets ? overriddenAsset.findIndex(function (asset) {
|
|
2562
2559
|
return asset.isFeeAsset;
|
|
2563
2560
|
}) : undefined;
|
|
2564
|
-
return _objectSpread2(_objectSpread2(_defineProperty({},
|
|
2561
|
+
return _objectSpread2(_objectSpread2(_defineProperty({}, isOverridenMultiAssets ? 'assets' : 'asset', currencySelection), isOverridenMultiAssets && {
|
|
2565
2562
|
fee_item: feeAssetIndex
|
|
2566
2563
|
}), {}, {
|
|
2567
2564
|
dest: addressSelection,
|
|
@@ -2601,10 +2598,10 @@ var XTokensTransferImpl = /*#__PURE__*/function () {
|
|
|
2601
2598
|
var isAssetHubDest = destination === 'AssetHubPolkadot' || destination === 'AssetHubKusama';
|
|
2602
2599
|
var isAstarOrShidenToRelay = scenario === 'ParaToRelay' && (origin === 'Astar' || origin === 'Shiden');
|
|
2603
2600
|
var isTuring = origin === 'Turing';
|
|
2604
|
-
var
|
|
2605
|
-
var shouldUseMultiasset = isTuring || isAstarOrShidenToRelay || isAssetHubDest && !isBifrostOrigin || !!
|
|
2601
|
+
var isOverridenMultiAssets = overriddenAsset && !isTMultiLocation(overriddenAsset);
|
|
2602
|
+
var shouldUseMultiasset = isTuring || isAstarOrShidenToRelay || isAssetHubDest && !isBifrostOrigin || !!isOverridenMultiAssets;
|
|
2606
2603
|
var modifiedCurrencySelection = getCurrencySelection(input, shouldUseMultiasset, currencySelection);
|
|
2607
|
-
var section = shouldUseMultiasset ?
|
|
2604
|
+
var section = shouldUseMultiasset ? isOverridenMultiAssets ? 'transfer_multiassets' : 'transfer_multiasset' : 'transfer';
|
|
2608
2605
|
var parameters = getXTokensParameters(shouldUseMultiasset, modifiedCurrencySelection, addressSelection, asset.amount, fees, overriddenAsset);
|
|
2609
2606
|
var call = {
|
|
2610
2607
|
module: pallet !== null && pallet !== void 0 ? pallet : 'XTokens',
|
|
@@ -4822,12 +4819,12 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
4822
4819
|
header: this.createPolkadotXcmHeader(scenario, versionOrDefault, destination, paraId),
|
|
4823
4820
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, versionOrDefault, paraId),
|
|
4824
4821
|
address: address,
|
|
4825
|
-
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset
|
|
4822
|
+
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset),
|
|
4823
|
+
overriddenAsset: overriddenAsset,
|
|
4826
4824
|
asset: asset,
|
|
4827
4825
|
scenario: scenario,
|
|
4828
4826
|
destination: destination,
|
|
4829
4827
|
paraIdTo: paraId,
|
|
4830
|
-
overriddenAsset: overriddenAsset,
|
|
4831
4828
|
version: version,
|
|
4832
4829
|
senderAddress: senderAddress,
|
|
4833
4830
|
pallet: pallet,
|
|
@@ -4874,8 +4871,11 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
4874
4871
|
}
|
|
4875
4872
|
}, {
|
|
4876
4873
|
key: "createCurrencySpec",
|
|
4877
|
-
value: function createCurrencySpec
|
|
4878
|
-
return
|
|
4874
|
+
value: function createCurrencySpec(amount, scenario, version, _asset) {
|
|
4875
|
+
return createVersionedMultiAssets(version, amount, {
|
|
4876
|
+
parents: scenario === 'ParaToRelay' ? exports.Parents.ONE : exports.Parents.ZERO,
|
|
4877
|
+
interior: 'Here'
|
|
4878
|
+
});
|
|
4879
4879
|
}
|
|
4880
4880
|
}, {
|
|
4881
4881
|
key: "createPolkadotXcmHeader",
|
|
@@ -5047,12 +5047,18 @@ var PolkadotXCMTransferImpl = /*#__PURE__*/function () {
|
|
|
5047
5047
|
value: function transferPolkadotXCM(_ref, section) {
|
|
5048
5048
|
var api = _ref.api,
|
|
5049
5049
|
header = _ref.header,
|
|
5050
|
+
asset = _ref.asset,
|
|
5050
5051
|
addressSelection = _ref.addressSelection,
|
|
5051
5052
|
currencySelection = _ref.currencySelection,
|
|
5052
5053
|
overriddenAsset = _ref.overriddenAsset,
|
|
5053
5054
|
pallet = _ref.pallet,
|
|
5054
5055
|
method = _ref.method;
|
|
5055
5056
|
var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
5057
|
+
var _extractVersionFromHe = extractVersionFromHeader(currencySelection),
|
|
5058
|
+
_extractVersionFromHe2 = _slicedToArray(_extractVersionFromHe, 2),
|
|
5059
|
+
version = _extractVersionFromHe2[0],
|
|
5060
|
+
multiAssets = _extractVersionFromHe2[1];
|
|
5061
|
+
var resolvedMultiAssets = addXcmVersionHeader(maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset), version);
|
|
5056
5062
|
var feeAssetIndex = overriddenAsset === undefined || isTMultiLocation(overriddenAsset) ? DEFAULT_FEE_ASSET : overriddenAsset.findIndex(function (asset) {
|
|
5057
5063
|
return asset.isFeeAsset;
|
|
5058
5064
|
});
|
|
@@ -5062,7 +5068,7 @@ var PolkadotXCMTransferImpl = /*#__PURE__*/function () {
|
|
|
5062
5068
|
parameters: _objectSpread2({
|
|
5063
5069
|
dest: header,
|
|
5064
5070
|
beneficiary: addressSelection,
|
|
5065
|
-
assets:
|
|
5071
|
+
assets: resolvedMultiAssets,
|
|
5066
5072
|
fee_asset_item: feeAssetIndex
|
|
5067
5073
|
}, fees !== undefined ? {
|
|
5068
5074
|
weight_limit: fees
|
|
@@ -5090,13 +5096,14 @@ var AssetHubKusama$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5090
5096
|
if (destination === 'AssetHubPolkadot') {
|
|
5091
5097
|
return Promise.resolve(getNode('AssetHubPolkadot').handleBridgeTransfer(input, 'Polkadot'));
|
|
5092
5098
|
}
|
|
5093
|
-
|
|
5099
|
+
var isSystemNode = !isTMultiLocation(destination) && SYSTEM_NODES_KUSAMA.includes(destination);
|
|
5100
|
+
if (scenario === 'ParaToPara' && asset.symbol === 'KSM' && !isForeignAsset(asset) && !isSystemNode) {
|
|
5094
5101
|
throw new ScenarioNotSupportedError(this.node, scenario, 'Para to Para scenarios for KSM transfer from AssetHub are not supported, you have to transfer KSM to Relay chain and transfer to destination chain from Relay chain.');
|
|
5095
5102
|
}
|
|
5096
5103
|
if (scenario === 'ParaToPara' && asset.symbol === 'DOT' && !isForeignAsset(asset)) {
|
|
5097
5104
|
throw new ScenarioNotSupportedError(this.node, scenario, 'Bridged DOT cannot currently be transfered from AssetHubKusama, if you are sending different DOT asset, please specify {id: <DOTID>}.');
|
|
5098
5105
|
}
|
|
5099
|
-
var section = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5106
|
+
var section = scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5100
5107
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, section, 'Unlimited'));
|
|
5101
5108
|
}
|
|
5102
5109
|
}, {
|
|
@@ -5109,8 +5116,8 @@ var AssetHubKusama$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5109
5116
|
}
|
|
5110
5117
|
}, {
|
|
5111
5118
|
key: "createCurrencySpec",
|
|
5112
|
-
value: function createCurrencySpec(amount, scenario, version, asset
|
|
5113
|
-
return getNode('AssetHubPolkadot').createCurrencySpec(amount, scenario, version, asset
|
|
5119
|
+
value: function createCurrencySpec(amount, scenario, version, asset) {
|
|
5120
|
+
return getNode('AssetHubPolkadot').createCurrencySpec(amount, scenario, version, asset);
|
|
5114
5121
|
}
|
|
5115
5122
|
}]);
|
|
5116
5123
|
}(ParachainNode);
|
|
@@ -5194,16 +5201,26 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5194
5201
|
value: function handleBridgeTransfer(input, targetChain) {
|
|
5195
5202
|
var _input$asset$symbol, _input$asset$symbol2, _input$asset$symbol3, _input$asset$symbol4;
|
|
5196
5203
|
if (targetChain === 'Kusama' && ((_input$asset$symbol = input.asset.symbol) === null || _input$asset$symbol === void 0 ? void 0 : _input$asset$symbol.toUpperCase()) === 'KSM' || targetChain === 'Polkadot' && ((_input$asset$symbol2 = input.asset.symbol) === null || _input$asset$symbol2 === void 0 ? void 0 : _input$asset$symbol2.toUpperCase()) === 'DOT') {
|
|
5204
|
+
var overriddenVersion = exports.Version.V4;
|
|
5205
|
+
var customMultiLocation = {
|
|
5206
|
+
parents: exports.Parents.TWO,
|
|
5207
|
+
interior: {
|
|
5208
|
+
X1: [{
|
|
5209
|
+
GlobalConsensus: targetChain
|
|
5210
|
+
}]
|
|
5211
|
+
}
|
|
5212
|
+
};
|
|
5197
5213
|
var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5198
|
-
header: createBridgePolkadotXcmDest(
|
|
5214
|
+
header: createBridgePolkadotXcmDest(overriddenVersion, targetChain, input.destination, input.paraIdTo),
|
|
5199
5215
|
addressSelection: generateAddressMultiLocationV4(input.api, input.address),
|
|
5200
|
-
currencySelection:
|
|
5216
|
+
currencySelection: createVersionedMultiAssets(overriddenVersion, input.asset.amount, customMultiLocation)
|
|
5201
5217
|
});
|
|
5202
5218
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited');
|
|
5203
5219
|
} else if (targetChain === 'Polkadot' && ((_input$asset$symbol3 = input.asset.symbol) === null || _input$asset$symbol3 === void 0 ? void 0 : _input$asset$symbol3.toUpperCase()) === 'KSM' || targetChain === 'Kusama' && ((_input$asset$symbol4 = input.asset.symbol) === null || _input$asset$symbol4 === void 0 ? void 0 : _input$asset$symbol4.toUpperCase()) === 'DOT') {
|
|
5220
|
+
var _overriddenVersion = exports.Version.V3;
|
|
5204
5221
|
var _modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5205
|
-
header: createBridgePolkadotXcmDest(
|
|
5206
|
-
currencySelection:
|
|
5222
|
+
header: createBridgePolkadotXcmDest(_overriddenVersion, targetChain, input.destination, input.paraIdTo),
|
|
5223
|
+
currencySelection: createVersionedMultiAssets(_overriddenVersion, input.asset.amount, DOT_MULTILOCATION)
|
|
5207
5224
|
});
|
|
5208
5225
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(_modifiedInput, 'limited_reserve_transfer_assets', 'Unlimited');
|
|
5209
5226
|
}
|
|
@@ -5230,7 +5247,7 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5230
5247
|
var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5231
5248
|
header: createPolkadotXcmHeader(scenario, this.version, destination, paraIdTo, ETHEREUM_JUNCTION, exports.Parents.TWO),
|
|
5232
5249
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, this.version, paraIdTo),
|
|
5233
|
-
currencySelection:
|
|
5250
|
+
currencySelection: createVersionedMultiAssets(exports.Version.V3, asset.amount, asset.multiLocation)
|
|
5234
5251
|
});
|
|
5235
5252
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited');
|
|
5236
5253
|
}
|
|
@@ -5240,7 +5257,6 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5240
5257
|
var api = input.api,
|
|
5241
5258
|
address = input.address,
|
|
5242
5259
|
asset = input.asset,
|
|
5243
|
-
overriddenAsset = input.overriddenAsset,
|
|
5244
5260
|
scenario = input.scenario,
|
|
5245
5261
|
destination = input.destination,
|
|
5246
5262
|
paraIdTo = input.paraIdTo;
|
|
@@ -5257,7 +5273,7 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5257
5273
|
var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5258
5274
|
header: this.createPolkadotXcmHeader(scenario, version, destination, paraId),
|
|
5259
5275
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, version, paraId),
|
|
5260
|
-
currencySelection:
|
|
5276
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, customMultiLocation)
|
|
5261
5277
|
});
|
|
5262
5278
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'limited_teleport_assets', 'Unlimited');
|
|
5263
5279
|
}
|
|
@@ -5268,7 +5284,6 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5268
5284
|
var asset = input.asset,
|
|
5269
5285
|
destination = input.destination,
|
|
5270
5286
|
paraIdTo = input.paraIdTo,
|
|
5271
|
-
overriddenAsset = input.overriddenAsset,
|
|
5272
5287
|
scenario = input.scenario,
|
|
5273
5288
|
api = input.api,
|
|
5274
5289
|
version = input.version,
|
|
@@ -5279,13 +5294,13 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5279
5294
|
return _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5280
5295
|
header: this.createPolkadotXcmHeader(scenario, versionOrDefault, destination, paraIdTo),
|
|
5281
5296
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, versionOrDefault, paraIdTo),
|
|
5282
|
-
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset
|
|
5297
|
+
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset)
|
|
5283
5298
|
});
|
|
5284
5299
|
}
|
|
5285
5300
|
if ((destination === 'Hydration' || destination === 'Polimec' || destination === 'Moonbeam' || destination === 'BifrostPolkadot') && asset.symbol === 'DOT') {
|
|
5286
5301
|
var _versionOrDefault = version !== null && version !== void 0 ? version : this.version;
|
|
5287
5302
|
return _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5288
|
-
currencySelection:
|
|
5303
|
+
currencySelection: createVersionedMultiAssets(_versionOrDefault, asset.amount, DOT_MULTILOCATION)
|
|
5289
5304
|
});
|
|
5290
5305
|
}
|
|
5291
5306
|
return input;
|
|
@@ -5293,8 +5308,9 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5293
5308
|
}, {
|
|
5294
5309
|
key: "getSection",
|
|
5295
5310
|
value: function getSection(scenario, destination) {
|
|
5311
|
+
var isSystemNode = !isTMultiLocation(destination) && SYSTEM_NODES_POLKADOT.includes(destination);
|
|
5296
5312
|
if (destination === 'Polimec' || destination === 'Moonbeam') return 'transfer_assets';
|
|
5297
|
-
return scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5313
|
+
return scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5298
5314
|
}
|
|
5299
5315
|
}, {
|
|
5300
5316
|
key: "transferPolkadotXCM",
|
|
@@ -5320,7 +5336,8 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5320
5336
|
if (destination === 'BifrostPolkadot' && isEthereumAsset) {
|
|
5321
5337
|
return Promise.resolve(this.handleBifrostEthTransfer(input));
|
|
5322
5338
|
}
|
|
5323
|
-
|
|
5339
|
+
var isSystemNode = !isTMultiLocation(destination) && SYSTEM_NODES_POLKADOT.includes(destination);
|
|
5340
|
+
if (scenario === 'ParaToPara' && asset.symbol === 'DOT' && !isForeignAsset(asset) && destination !== 'Hydration' && destination !== 'Polimec' && destination !== 'Moonbeam' && destination !== 'BifrostPolkadot' && destination !== 'PeoplePolkadot' && !isSystemNode) {
|
|
5324
5341
|
throw new ScenarioNotSupportedError(this.node, scenario, 'Para to Para scenarios for DOT transfer from AssetHub are not supported, you have to transfer DOT to Relay chain and transfer to destination chain from Relay chain.');
|
|
5325
5342
|
}
|
|
5326
5343
|
if (scenario === 'ParaToPara' && asset.symbol === 'KSM' && !isForeignAsset(asset)) {
|
|
@@ -5340,18 +5357,20 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5340
5357
|
}
|
|
5341
5358
|
}, {
|
|
5342
5359
|
key: "createCurrencySpec",
|
|
5343
|
-
value: function createCurrencySpec
|
|
5360
|
+
value: function createCurrencySpec(amount, scenario, version, asset) {
|
|
5344
5361
|
if (scenario === 'ParaToPara') {
|
|
5345
|
-
var
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
|
|
5351
|
-
|
|
5352
|
-
|
|
5353
|
-
|
|
5354
|
-
|
|
5362
|
+
var multiLocation = asset ? asset.multiLocation : undefined;
|
|
5363
|
+
return createVersionedMultiAssets(version, amount, multiLocation !== null && multiLocation !== void 0 ? multiLocation : {
|
|
5364
|
+
parents: exports.Parents.ZERO,
|
|
5365
|
+
interior: {
|
|
5366
|
+
X2: [{
|
|
5367
|
+
PalletInstance: 50
|
|
5368
|
+
}, {
|
|
5369
|
+
// TODO: Handle missing assedId
|
|
5370
|
+
GeneralIndex: asset && isForeignAsset(asset) && asset.assetId ? asset.assetId : 0
|
|
5371
|
+
}]
|
|
5372
|
+
}
|
|
5373
|
+
});
|
|
5355
5374
|
} else {
|
|
5356
5375
|
return _superPropGet(AssetHubPolkadot, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
|
|
5357
5376
|
}
|
|
@@ -5497,16 +5516,18 @@ var BifrostPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5497
5516
|
key: "transferToAssetHub",
|
|
5498
5517
|
value: function transferToAssetHub(input) {
|
|
5499
5518
|
var _getAssetId;
|
|
5500
|
-
var
|
|
5501
|
-
asset = input.asset;
|
|
5519
|
+
var asset = input.asset;
|
|
5502
5520
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
5503
|
-
currencySelection:
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
5509
|
-
|
|
5521
|
+
currencySelection: createVersionedMultiAssets(this.version, asset.amount, {
|
|
5522
|
+
parents: asset.symbol === 'DOT' ? exports.Parents.ONE : exports.Parents.TWO,
|
|
5523
|
+
interior: asset.symbol === 'WETH' ? {
|
|
5524
|
+
X2: [ETHEREUM_JUNCTION, {
|
|
5525
|
+
AccountKey20: {
|
|
5526
|
+
key: (_getAssetId = getAssetId('Ethereum', 'WETH')) !== null && _getAssetId !== void 0 ? _getAssetId : ''
|
|
5527
|
+
}
|
|
5528
|
+
}]
|
|
5529
|
+
} : 'Here'
|
|
5530
|
+
})
|
|
5510
5531
|
}), 'transfer_assets', 'Unlimited'));
|
|
5511
5532
|
}
|
|
5512
5533
|
}, {
|
|
@@ -5773,16 +5794,18 @@ var Crab$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5773
5794
|
}
|
|
5774
5795
|
}, {
|
|
5775
5796
|
key: "createCurrencySpec",
|
|
5776
|
-
value: function createCurrencySpec
|
|
5797
|
+
value: function createCurrencySpec(amount, scenario, version, _asset) {
|
|
5777
5798
|
if (scenario === 'ParaToPara') {
|
|
5778
|
-
|
|
5779
|
-
|
|
5780
|
-
|
|
5799
|
+
return createVersionedMultiAssets(version, amount, {
|
|
5800
|
+
parents: exports.Parents.ZERO,
|
|
5801
|
+
interior: {
|
|
5802
|
+
X1: {
|
|
5803
|
+
PalletInstance: 5
|
|
5804
|
+
}
|
|
5781
5805
|
}
|
|
5782
|
-
};
|
|
5783
|
-
return createCurrencySpec(amount, version, exports.Parents.ZERO, overridedMultiLocation, interior);
|
|
5806
|
+
});
|
|
5784
5807
|
} else {
|
|
5785
|
-
return _superPropGet(Crab, "createCurrencySpec", this, 3)([amount, scenario, version
|
|
5808
|
+
return _superPropGet(Crab, "createCurrencySpec", this, 3)([amount, scenario, version]);
|
|
5786
5809
|
}
|
|
5787
5810
|
}
|
|
5788
5811
|
}]);
|
|
@@ -6167,8 +6190,8 @@ var Moonbeam$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6167
6190
|
}
|
|
6168
6191
|
_inherits(Moonbeam, _ParachainNode);
|
|
6169
6192
|
return _createClass(Moonbeam, [{
|
|
6170
|
-
key: "
|
|
6171
|
-
value: function
|
|
6193
|
+
key: "getMultiLocation",
|
|
6194
|
+
value: function getMultiLocation(asset, scenario) {
|
|
6172
6195
|
if (scenario === 'ParaToRelay') return DOT_MULTILOCATION;
|
|
6173
6196
|
if (asset.symbol === this.getNativeAssetSymbol()) return {
|
|
6174
6197
|
parents: exports.Parents.ZERO,
|
|
@@ -6189,11 +6212,10 @@ var Moonbeam$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6189
6212
|
var asset = input.asset,
|
|
6190
6213
|
scenario = input.scenario,
|
|
6191
6214
|
_input$version = input.version,
|
|
6192
|
-
version = _input$version === void 0 ? this.version : _input$version
|
|
6193
|
-
|
|
6194
|
-
var multiLocation = this.getJunctions(asset, scenario);
|
|
6215
|
+
version = _input$version === void 0 ? this.version : _input$version;
|
|
6216
|
+
var multiLocation = this.getMultiLocation(asset, scenario);
|
|
6195
6217
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
6196
|
-
currencySelection:
|
|
6218
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
|
|
6197
6219
|
}), 'transfer_assets', 'Unlimited'));
|
|
6198
6220
|
}
|
|
6199
6221
|
}, {
|
|
@@ -6214,8 +6236,8 @@ var Moonriver$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6214
6236
|
}
|
|
6215
6237
|
_inherits(Moonriver, _ParachainNode);
|
|
6216
6238
|
return _createClass(Moonriver, [{
|
|
6217
|
-
key: "
|
|
6218
|
-
value: function
|
|
6239
|
+
key: "getMultiLocation",
|
|
6240
|
+
value: function getMultiLocation(asset, scenario) {
|
|
6219
6241
|
if (scenario === 'ParaToRelay') return DOT_MULTILOCATION;
|
|
6220
6242
|
if (asset.symbol === this.getNativeAssetSymbol()) return {
|
|
6221
6243
|
parents: exports.Parents.ZERO,
|
|
@@ -6236,11 +6258,10 @@ var Moonriver$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6236
6258
|
var asset = input.asset,
|
|
6237
6259
|
scenario = input.scenario,
|
|
6238
6260
|
_input$version = input.version,
|
|
6239
|
-
version = _input$version === void 0 ? this.version : _input$version
|
|
6240
|
-
|
|
6241
|
-
var multiLocation = this.getJunctions(asset, scenario);
|
|
6261
|
+
version = _input$version === void 0 ? this.version : _input$version;
|
|
6262
|
+
var multiLocation = this.getMultiLocation(asset, scenario);
|
|
6242
6263
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
6243
|
-
currencySelection:
|
|
6264
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
|
|
6244
6265
|
}), 'transfer_assets', 'Unlimited'));
|
|
6245
6266
|
}
|
|
6246
6267
|
}, {
|
|
@@ -6531,7 +6552,12 @@ var XTransferTransferImpl = /*#__PURE__*/function () {
|
|
|
6531
6552
|
if (isMultiLocationDestination) {
|
|
6532
6553
|
throw new Error('Multilocation destinations are not supported for specific transfer you are trying to create. In special cases such as xTokens or xTransfer pallet try using address multilocation instead (for both destination and address in same multilocation set (eg. X2 - Parachain, Address). For further assistance please open issue in our repository.');
|
|
6533
6554
|
}
|
|
6534
|
-
var
|
|
6555
|
+
var version = exports.Version.V1;
|
|
6556
|
+
var multiAssets = [createMultiAsset(version, asset.amount, {
|
|
6557
|
+
parents: exports.Parents.ZERO,
|
|
6558
|
+
interior: 'Here'
|
|
6559
|
+
})];
|
|
6560
|
+
var resolvedMultiAssets = maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset);
|
|
6535
6561
|
var dest = getDestination(input);
|
|
6536
6562
|
var section = 'transfer';
|
|
6537
6563
|
var destWeight = determineDestWeight(destination);
|
|
@@ -6539,7 +6565,7 @@ var XTransferTransferImpl = /*#__PURE__*/function () {
|
|
|
6539
6565
|
module: pallet !== null && pallet !== void 0 ? pallet : 'XTransfer',
|
|
6540
6566
|
section: method !== null && method !== void 0 ? method : section,
|
|
6541
6567
|
parameters: {
|
|
6542
|
-
asset:
|
|
6568
|
+
asset: resolvedMultiAssets[0],
|
|
6543
6569
|
dest: dest,
|
|
6544
6570
|
dest_weight: destWeight
|
|
6545
6571
|
}
|
|
@@ -7003,14 +7029,7 @@ var Polimec = {
|
|
|
7003
7029
|
],
|
|
7004
7030
|
otherAssets: [
|
|
7005
7031
|
{
|
|
7006
|
-
|
|
7007
|
-
symbol: "DOT",
|
|
7008
|
-
decimals: 10,
|
|
7009
|
-
existentialDeposit: "100000000"
|
|
7010
|
-
},
|
|
7011
|
-
{
|
|
7012
|
-
assetId: "1984",
|
|
7013
|
-
symbol: "USDt",
|
|
7032
|
+
symbol: "USDC",
|
|
7014
7033
|
decimals: 6,
|
|
7015
7034
|
multiLocation: {
|
|
7016
7035
|
parents: 1,
|
|
@@ -7023,7 +7042,7 @@ var Polimec = {
|
|
|
7023
7042
|
PalletInstance: 50
|
|
7024
7043
|
},
|
|
7025
7044
|
{
|
|
7026
|
-
GeneralIndex:
|
|
7045
|
+
GeneralIndex: 1337
|
|
7027
7046
|
}
|
|
7028
7047
|
]
|
|
7029
7048
|
}
|
|
@@ -7031,8 +7050,7 @@ var Polimec = {
|
|
|
7031
7050
|
existentialDeposit: "70000"
|
|
7032
7051
|
},
|
|
7033
7052
|
{
|
|
7034
|
-
|
|
7035
|
-
symbol: "USDC",
|
|
7053
|
+
symbol: "USDt",
|
|
7036
7054
|
decimals: 6,
|
|
7037
7055
|
multiLocation: {
|
|
7038
7056
|
parents: 1,
|
|
@@ -7045,12 +7063,23 @@ var Polimec = {
|
|
|
7045
7063
|
PalletInstance: 50
|
|
7046
7064
|
},
|
|
7047
7065
|
{
|
|
7048
|
-
GeneralIndex:
|
|
7066
|
+
GeneralIndex: 1984
|
|
7049
7067
|
}
|
|
7050
7068
|
]
|
|
7051
7069
|
}
|
|
7052
7070
|
},
|
|
7053
7071
|
existentialDeposit: "70000"
|
|
7072
|
+
},
|
|
7073
|
+
{
|
|
7074
|
+
symbol: "DOT",
|
|
7075
|
+
decimals: 10,
|
|
7076
|
+
multiLocation: {
|
|
7077
|
+
parents: 1,
|
|
7078
|
+
interior: {
|
|
7079
|
+
Here: null
|
|
7080
|
+
}
|
|
7081
|
+
},
|
|
7082
|
+
existentialDeposit: "100000000"
|
|
7054
7083
|
}
|
|
7055
7084
|
]
|
|
7056
7085
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -231,7 +231,7 @@ declare abstract class ParachainNode<TApi, TRes> {
|
|
|
231
231
|
transfer(options: TSendInternalOptions<TApi, TRes>): Promise<TRes>;
|
|
232
232
|
getRelayToParaOverrides(): TRelayToParaOverrides;
|
|
233
233
|
transferRelayToPara(options: TRelayToParaOptions<TApi, TRes>): TSerializedApiCall;
|
|
234
|
-
createCurrencySpec(amount: TAmount, scenario: TScenario, version: Version, _asset?: TAsset
|
|
234
|
+
createCurrencySpec(amount: TAmount, scenario: TScenario, version: Version, _asset?: TAsset): TXcmVersioned<TMultiAsset[]>;
|
|
235
235
|
createPolkadotXcmHeader(scenario: TScenario, version: Version, destination: TDestination, paraId?: number): TXcmVersioned<TMultiLocation>;
|
|
236
236
|
getNativeAssetSymbol(): string;
|
|
237
237
|
protected transferToEthereum<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
@@ -257,7 +257,27 @@ declare class AssetHubKusama<TApi, TRes> extends ParachainNode<TApi, TRes> imple
|
|
|
257
257
|
constructor();
|
|
258
258
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
259
259
|
getRelayToParaOverrides(): TRelayToParaOverrides;
|
|
260
|
-
createCurrencySpec(amount: string, scenario: TScenario, version: Version, asset?: TAsset
|
|
260
|
+
createCurrencySpec(amount: string, scenario: TScenario, version: Version, asset?: TAsset): {
|
|
261
|
+
V1: TMultiAsset[];
|
|
262
|
+
V2?: undefined;
|
|
263
|
+
V3?: undefined;
|
|
264
|
+
V4?: undefined;
|
|
265
|
+
} | {
|
|
266
|
+
V2: TMultiAsset[];
|
|
267
|
+
V1?: undefined;
|
|
268
|
+
V3?: undefined;
|
|
269
|
+
V4?: undefined;
|
|
270
|
+
} | {
|
|
271
|
+
V3: TMultiAsset[];
|
|
272
|
+
V1?: undefined;
|
|
273
|
+
V2?: undefined;
|
|
274
|
+
V4?: undefined;
|
|
275
|
+
} | {
|
|
276
|
+
V4: TMultiAsset[];
|
|
277
|
+
V1?: undefined;
|
|
278
|
+
V2?: undefined;
|
|
279
|
+
V3?: undefined;
|
|
280
|
+
};
|
|
261
281
|
}
|
|
262
282
|
|
|
263
283
|
declare class AssetHubPolkadot<TApi, TRes> extends ParachainNode<TApi, TRes> implements IPolkadotXCMTransfer {
|
|
@@ -270,7 +290,27 @@ declare class AssetHubPolkadot<TApi, TRes> extends ParachainNode<TApi, TRes> imp
|
|
|
270
290
|
private getSection;
|
|
271
291
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
272
292
|
getRelayToParaOverrides(): TRelayToParaOverrides;
|
|
273
|
-
createCurrencySpec(amount: TAmount, scenario: TScenario, version: Version, asset?: TAsset
|
|
293
|
+
createCurrencySpec(amount: TAmount, scenario: TScenario, version: Version, asset?: TAsset): {
|
|
294
|
+
V1: TMultiAsset[];
|
|
295
|
+
V2?: undefined;
|
|
296
|
+
V3?: undefined;
|
|
297
|
+
V4?: undefined;
|
|
298
|
+
} | {
|
|
299
|
+
V2: TMultiAsset[];
|
|
300
|
+
V1?: undefined;
|
|
301
|
+
V3?: undefined;
|
|
302
|
+
V4?: undefined;
|
|
303
|
+
} | {
|
|
304
|
+
V3: TMultiAsset[];
|
|
305
|
+
V1?: undefined;
|
|
306
|
+
V2?: undefined;
|
|
307
|
+
V4?: undefined;
|
|
308
|
+
} | {
|
|
309
|
+
V4: TMultiAsset[];
|
|
310
|
+
V1?: undefined;
|
|
311
|
+
V2?: undefined;
|
|
312
|
+
V3?: undefined;
|
|
313
|
+
};
|
|
274
314
|
}
|
|
275
315
|
|
|
276
316
|
declare class Astar<TApi, TRes> extends ParachainNode<TApi, TRes> implements IPolkadotXCMTransfer, IXTokensTransfer {
|
|
@@ -406,7 +446,27 @@ declare class Crab<TApi, TRes> extends ParachainNode<TApi, TRes> implements IPol
|
|
|
406
446
|
constructor();
|
|
407
447
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
408
448
|
transferRelayToPara(): TSerializedApiCall;
|
|
409
|
-
createCurrencySpec(amount: string, scenario: TScenario, version: Version, _asset?: TAsset
|
|
449
|
+
createCurrencySpec(amount: string, scenario: TScenario, version: Version, _asset?: TAsset): {
|
|
450
|
+
V1: TMultiAsset[];
|
|
451
|
+
V2?: undefined;
|
|
452
|
+
V3?: undefined;
|
|
453
|
+
V4?: undefined;
|
|
454
|
+
} | {
|
|
455
|
+
V2: TMultiAsset[];
|
|
456
|
+
V1?: undefined;
|
|
457
|
+
V3?: undefined;
|
|
458
|
+
V4?: undefined;
|
|
459
|
+
} | {
|
|
460
|
+
V3: TMultiAsset[];
|
|
461
|
+
V1?: undefined;
|
|
462
|
+
V2?: undefined;
|
|
463
|
+
V4?: undefined;
|
|
464
|
+
} | {
|
|
465
|
+
V4: TMultiAsset[];
|
|
466
|
+
V1?: undefined;
|
|
467
|
+
V2?: undefined;
|
|
468
|
+
V3?: undefined;
|
|
469
|
+
};
|
|
410
470
|
}
|
|
411
471
|
|
|
412
472
|
declare class Crust<TApi, TRes> extends ParachainNode<TApi, TRes> implements IXTokensTransfer {
|
|
@@ -489,14 +549,14 @@ declare class Manta<TApi, TRes> extends ParachainNode<TApi, TRes> implements IXT
|
|
|
489
549
|
|
|
490
550
|
declare class Moonbeam<TApi, TRes> extends ParachainNode<TApi, TRes> implements IPolkadotXCMTransfer {
|
|
491
551
|
constructor();
|
|
492
|
-
private
|
|
552
|
+
private getMultiLocation;
|
|
493
553
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
494
554
|
getRelayToParaOverrides(): TRelayToParaOverrides;
|
|
495
555
|
}
|
|
496
556
|
|
|
497
557
|
declare class Moonriver<TApi, TRes> extends ParachainNode<TApi, TRes> implements IPolkadotXCMTransfer {
|
|
498
558
|
constructor();
|
|
499
|
-
private
|
|
559
|
+
private getMultiLocation;
|
|
500
560
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
501
561
|
getRelayToParaOverrides(): TRelayToParaOverrides;
|
|
502
562
|
}
|
|
@@ -696,11 +756,11 @@ type TPolkadotXCMTransferOptions<TApi, TRes> = {
|
|
|
696
756
|
addressSelection: TXcmVersioned<TMultiLocation>;
|
|
697
757
|
address: TAddress;
|
|
698
758
|
currencySelection: TXcmVersioned<TMultiAsset[]>;
|
|
759
|
+
overriddenAsset?: TMultiLocation | TMultiAssetWithFee[];
|
|
699
760
|
scenario: TScenario;
|
|
700
761
|
asset: WithAmount<TAsset>;
|
|
701
762
|
destination: TDestination;
|
|
702
763
|
paraIdTo?: number;
|
|
703
|
-
overriddenAsset?: TMultiLocation | TMultiAssetWithFee[];
|
|
704
764
|
version?: Version;
|
|
705
765
|
senderAddress?: string;
|
|
706
766
|
pallet?: string;
|
|
@@ -715,7 +775,7 @@ type TXTokensTransferOptions<TApi, TRes> = {
|
|
|
715
775
|
origin: TNodePolkadotKusama;
|
|
716
776
|
destination: TDestination;
|
|
717
777
|
paraIdTo?: number;
|
|
718
|
-
overriddenAsset?: TMultiLocation |
|
|
778
|
+
overriddenAsset?: TMultiLocation | TMultiAssetWithFee[];
|
|
719
779
|
pallet?: string;
|
|
720
780
|
method?: string;
|
|
721
781
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -714,6 +714,8 @@ var NODES_WITH_RELAY_CHAINS_DOT_KSM = [].concat(NODE_NAMES_DOT_KSM, ['Polkadot',
|
|
|
714
714
|
* Supported XCM pallets.
|
|
715
715
|
*/
|
|
716
716
|
var SUPPORTED_PALLETS = ['XTokens', 'OrmlXTokens', 'PolkadotXcm', 'RelayerXcm', 'XTransfer', 'XcmPallet'];
|
|
717
|
+
var SYSTEM_NODES_POLKADOT = ['PeoplePolkadot', 'CoretimePolkadot', 'Collectives'];
|
|
718
|
+
var SYSTEM_NODES_KUSAMA = ['PeopleKusama', 'CoretimeKusama'];
|
|
717
719
|
|
|
718
720
|
/**
|
|
719
721
|
* Error thrown when multiple assets with the same symbol are found.
|
|
@@ -2360,7 +2362,10 @@ var constructRelayToParaParameters = function constructRelayToParaParameters(_re
|
|
|
2360
2362
|
return _objectSpread2({
|
|
2361
2363
|
dest: createPolkadotXcmHeader('RelayToPara', version, destination, paraId),
|
|
2362
2364
|
beneficiary: generateAddressPayload(api, 'RelayToPara', null, address, version, paraId),
|
|
2363
|
-
assets:
|
|
2365
|
+
assets: createVersionedMultiAssets(version, asset.amount, {
|
|
2366
|
+
parents: Parents.ZERO,
|
|
2367
|
+
interior: 'Here'
|
|
2368
|
+
}),
|
|
2364
2369
|
fee_asset_item: DEFAULT_FEE_ASSET
|
|
2365
2370
|
}, includeFee && {
|
|
2366
2371
|
weight_limit: 'Unlimited'
|
|
@@ -2373,21 +2378,6 @@ var isTMultiLocation = function isTMultiLocation(value) {
|
|
|
2373
2378
|
var isTMultiAsset = function isTMultiAsset(value) {
|
|
2374
2379
|
return _typeof(value) === 'object' && value !== null && 'id' in value && 'fun' in value;
|
|
2375
2380
|
};
|
|
2376
|
-
var createBridgeCurrencySpec = function createBridgeCurrencySpec(amount, ecosystem) {
|
|
2377
|
-
return _defineProperty({}, Version.V4, [{
|
|
2378
|
-
id: {
|
|
2379
|
-
parents: Parents.TWO,
|
|
2380
|
-
interior: {
|
|
2381
|
-
X1: [{
|
|
2382
|
-
GlobalConsensus: ecosystem
|
|
2383
|
-
}]
|
|
2384
|
-
}
|
|
2385
|
-
},
|
|
2386
|
-
fun: {
|
|
2387
|
-
Fungible: amount.toString()
|
|
2388
|
-
}
|
|
2389
|
-
}]);
|
|
2390
|
-
};
|
|
2391
2381
|
var createMultiAsset = function createMultiAsset(version, amount, multiLocation) {
|
|
2392
2382
|
if (version === Version.V4) {
|
|
2393
2383
|
return {
|
|
@@ -2409,22 +2399,27 @@ var createMultiAsset = function createMultiAsset(version, amount, multiLocation)
|
|
|
2409
2399
|
var addXcmVersionHeader = function addXcmVersionHeader(obj, version) {
|
|
2410
2400
|
return _defineProperty({}, version, obj);
|
|
2411
2401
|
};
|
|
2412
|
-
var
|
|
2413
|
-
var
|
|
2402
|
+
var extractVersionFromHeader = function extractVersionFromHeader(versionHeader) {
|
|
2403
|
+
var keys = Object.keys(versionHeader);
|
|
2404
|
+
if (keys.length !== 1) {
|
|
2405
|
+
throw new Error('Invalid version header: expected exactly one key.');
|
|
2406
|
+
}
|
|
2407
|
+
var version = keys[0];
|
|
2408
|
+
var value = versionHeader[version];
|
|
2409
|
+
if (value === undefined) {
|
|
2410
|
+
throw new Error('Invalid version header: value is undefined.');
|
|
2411
|
+
}
|
|
2412
|
+
return [version, value];
|
|
2413
|
+
};
|
|
2414
|
+
var maybeOverrideMultiAssets = function maybeOverrideMultiAssets(version, amount, multiAssets, overriddenCurrency) {
|
|
2414
2415
|
if (!overriddenCurrency) {
|
|
2415
|
-
return
|
|
2416
|
-
parents: parents,
|
|
2417
|
-
interior: interior
|
|
2418
|
-
})];
|
|
2416
|
+
return multiAssets;
|
|
2419
2417
|
}
|
|
2420
|
-
return isTMultiLocation(overriddenCurrency) ? [createMultiAsset(version, amount, overriddenCurrency)] :
|
|
2421
|
-
// It must be TMultiAsset if not TMultiLocation
|
|
2422
|
-
overriddenCurrency;
|
|
2418
|
+
return isTMultiLocation(overriddenCurrency) ? [createMultiAsset(version, amount, overriddenCurrency)] : overriddenCurrency;
|
|
2423
2419
|
};
|
|
2424
|
-
var
|
|
2425
|
-
var
|
|
2426
|
-
|
|
2427
|
-
return addXcmVersionHeader(currency, version);
|
|
2420
|
+
var createVersionedMultiAssets = function createVersionedMultiAssets(version, amount, multiLocation) {
|
|
2421
|
+
var multiAssets = createMultiAsset(version, amount, multiLocation);
|
|
2422
|
+
return addXcmVersionHeader([multiAssets], version);
|
|
2428
2423
|
};
|
|
2429
2424
|
var createPolkadotXcmHeader = function createPolkadotXcmHeader(scenario, version, destination, nodeId, junction, parents) {
|
|
2430
2425
|
var parentsResolved = parents !== null && parents !== void 0 ? parents : scenario === 'RelayToPara' ? Parents.ZERO : Parents.ONE;
|
|
@@ -2466,10 +2461,10 @@ var resolveTNodeFromMultiLocation = function resolveTNodeFromMultiLocation(relay
|
|
|
2466
2461
|
return node;
|
|
2467
2462
|
};
|
|
2468
2463
|
var throwUnsupportedCurrency = function throwUnsupportedCurrency(currency, node) {
|
|
2469
|
-
var
|
|
2464
|
+
var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
2470
2465
|
isDestination: false
|
|
2471
2466
|
},
|
|
2472
|
-
isDestination =
|
|
2467
|
+
isDestination = _ref3.isDestination;
|
|
2473
2468
|
if ('multilocation' in currency) {
|
|
2474
2469
|
throw new InvalidCurrencyError("\n Selected chain doesn't support multilocation you provided. Maybe you meant custom multilocation. If so, you need to use override option. Your selection should look like this: {multilocation: Override(".concat(JSON.stringify(currency.multilocation), ")}."));
|
|
2475
2470
|
}
|
|
@@ -2535,19 +2530,21 @@ var buildMultiLocation = function buildMultiLocation(_ref) {
|
|
|
2535
2530
|
}
|
|
2536
2531
|
};
|
|
2537
2532
|
var getModifiedCurrencySelection = function getModifiedCurrencySelection(version, input) {
|
|
2538
|
-
var amount = input.asset.amount
|
|
2533
|
+
var amount = input.asset.amount,
|
|
2534
|
+
overriddenAsset = input.overriddenAsset;
|
|
2535
|
+
if (overriddenAsset) {
|
|
2536
|
+
return addXcmVersionHeader(maybeOverrideMultiAssets(version, amount, [], overriddenAsset), version);
|
|
2537
|
+
}
|
|
2539
2538
|
var multiLocation = buildMultiLocation(input);
|
|
2540
2539
|
var multiAsset = createMultiAsset(version, amount, multiLocation);
|
|
2541
2540
|
return addXcmVersionHeader(multiAsset, version);
|
|
2542
2541
|
};
|
|
2543
2542
|
|
|
2544
|
-
var getCurrencySelection = function getCurrencySelection(input,
|
|
2545
|
-
var origin = input.origin
|
|
2546
|
-
overriddenAsset = input.overriddenAsset;
|
|
2543
|
+
var getCurrencySelection = function getCurrencySelection(input, useMultiAssets, currencySelection) {
|
|
2544
|
+
var origin = input.origin;
|
|
2547
2545
|
var _getNode = getNode(origin),
|
|
2548
2546
|
version = _getNode.version;
|
|
2549
|
-
if (
|
|
2550
|
-
if (isAssetHub) {
|
|
2547
|
+
if (useMultiAssets) {
|
|
2551
2548
|
return getModifiedCurrencySelection(version, input);
|
|
2552
2549
|
}
|
|
2553
2550
|
return currencySelection;
|
|
@@ -2555,11 +2552,11 @@ var getCurrencySelection = function getCurrencySelection(input, isAssetHub, curr
|
|
|
2555
2552
|
|
|
2556
2553
|
var getXTokensParameters = function getXTokensParameters(isMultiAssetTransfer, currencySelection, addressSelection, amount, fees, overriddenAsset) {
|
|
2557
2554
|
if (isMultiAssetTransfer) {
|
|
2558
|
-
var
|
|
2559
|
-
var feeAssetIndex =
|
|
2555
|
+
var isOverridenMultiAssets = overriddenAsset && !isTMultiLocation(overriddenAsset);
|
|
2556
|
+
var feeAssetIndex = isOverridenMultiAssets ? overriddenAsset.findIndex(function (asset) {
|
|
2560
2557
|
return asset.isFeeAsset;
|
|
2561
2558
|
}) : undefined;
|
|
2562
|
-
return _objectSpread2(_objectSpread2(_defineProperty({},
|
|
2559
|
+
return _objectSpread2(_objectSpread2(_defineProperty({}, isOverridenMultiAssets ? 'assets' : 'asset', currencySelection), isOverridenMultiAssets && {
|
|
2563
2560
|
fee_item: feeAssetIndex
|
|
2564
2561
|
}), {}, {
|
|
2565
2562
|
dest: addressSelection,
|
|
@@ -2599,10 +2596,10 @@ var XTokensTransferImpl = /*#__PURE__*/function () {
|
|
|
2599
2596
|
var isAssetHubDest = destination === 'AssetHubPolkadot' || destination === 'AssetHubKusama';
|
|
2600
2597
|
var isAstarOrShidenToRelay = scenario === 'ParaToRelay' && (origin === 'Astar' || origin === 'Shiden');
|
|
2601
2598
|
var isTuring = origin === 'Turing';
|
|
2602
|
-
var
|
|
2603
|
-
var shouldUseMultiasset = isTuring || isAstarOrShidenToRelay || isAssetHubDest && !isBifrostOrigin || !!
|
|
2599
|
+
var isOverridenMultiAssets = overriddenAsset && !isTMultiLocation(overriddenAsset);
|
|
2600
|
+
var shouldUseMultiasset = isTuring || isAstarOrShidenToRelay || isAssetHubDest && !isBifrostOrigin || !!isOverridenMultiAssets;
|
|
2604
2601
|
var modifiedCurrencySelection = getCurrencySelection(input, shouldUseMultiasset, currencySelection);
|
|
2605
|
-
var section = shouldUseMultiasset ?
|
|
2602
|
+
var section = shouldUseMultiasset ? isOverridenMultiAssets ? 'transfer_multiassets' : 'transfer_multiasset' : 'transfer';
|
|
2606
2603
|
var parameters = getXTokensParameters(shouldUseMultiasset, modifiedCurrencySelection, addressSelection, asset.amount, fees, overriddenAsset);
|
|
2607
2604
|
var call = {
|
|
2608
2605
|
module: pallet !== null && pallet !== void 0 ? pallet : 'XTokens',
|
|
@@ -4820,12 +4817,12 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
4820
4817
|
header: this.createPolkadotXcmHeader(scenario, versionOrDefault, destination, paraId),
|
|
4821
4818
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, versionOrDefault, paraId),
|
|
4822
4819
|
address: address,
|
|
4823
|
-
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset
|
|
4820
|
+
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset),
|
|
4821
|
+
overriddenAsset: overriddenAsset,
|
|
4824
4822
|
asset: asset,
|
|
4825
4823
|
scenario: scenario,
|
|
4826
4824
|
destination: destination,
|
|
4827
4825
|
paraIdTo: paraId,
|
|
4828
|
-
overriddenAsset: overriddenAsset,
|
|
4829
4826
|
version: version,
|
|
4830
4827
|
senderAddress: senderAddress,
|
|
4831
4828
|
pallet: pallet,
|
|
@@ -4872,8 +4869,11 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
4872
4869
|
}
|
|
4873
4870
|
}, {
|
|
4874
4871
|
key: "createCurrencySpec",
|
|
4875
|
-
value: function createCurrencySpec
|
|
4876
|
-
return
|
|
4872
|
+
value: function createCurrencySpec(amount, scenario, version, _asset) {
|
|
4873
|
+
return createVersionedMultiAssets(version, amount, {
|
|
4874
|
+
parents: scenario === 'ParaToRelay' ? Parents.ONE : Parents.ZERO,
|
|
4875
|
+
interior: 'Here'
|
|
4876
|
+
});
|
|
4877
4877
|
}
|
|
4878
4878
|
}, {
|
|
4879
4879
|
key: "createPolkadotXcmHeader",
|
|
@@ -5045,12 +5045,18 @@ var PolkadotXCMTransferImpl = /*#__PURE__*/function () {
|
|
|
5045
5045
|
value: function transferPolkadotXCM(_ref, section) {
|
|
5046
5046
|
var api = _ref.api,
|
|
5047
5047
|
header = _ref.header,
|
|
5048
|
+
asset = _ref.asset,
|
|
5048
5049
|
addressSelection = _ref.addressSelection,
|
|
5049
5050
|
currencySelection = _ref.currencySelection,
|
|
5050
5051
|
overriddenAsset = _ref.overriddenAsset,
|
|
5051
5052
|
pallet = _ref.pallet,
|
|
5052
5053
|
method = _ref.method;
|
|
5053
5054
|
var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
5055
|
+
var _extractVersionFromHe = extractVersionFromHeader(currencySelection),
|
|
5056
|
+
_extractVersionFromHe2 = _slicedToArray(_extractVersionFromHe, 2),
|
|
5057
|
+
version = _extractVersionFromHe2[0],
|
|
5058
|
+
multiAssets = _extractVersionFromHe2[1];
|
|
5059
|
+
var resolvedMultiAssets = addXcmVersionHeader(maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset), version);
|
|
5054
5060
|
var feeAssetIndex = overriddenAsset === undefined || isTMultiLocation(overriddenAsset) ? DEFAULT_FEE_ASSET : overriddenAsset.findIndex(function (asset) {
|
|
5055
5061
|
return asset.isFeeAsset;
|
|
5056
5062
|
});
|
|
@@ -5060,7 +5066,7 @@ var PolkadotXCMTransferImpl = /*#__PURE__*/function () {
|
|
|
5060
5066
|
parameters: _objectSpread2({
|
|
5061
5067
|
dest: header,
|
|
5062
5068
|
beneficiary: addressSelection,
|
|
5063
|
-
assets:
|
|
5069
|
+
assets: resolvedMultiAssets,
|
|
5064
5070
|
fee_asset_item: feeAssetIndex
|
|
5065
5071
|
}, fees !== undefined ? {
|
|
5066
5072
|
weight_limit: fees
|
|
@@ -5088,13 +5094,14 @@ var AssetHubKusama$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5088
5094
|
if (destination === 'AssetHubPolkadot') {
|
|
5089
5095
|
return Promise.resolve(getNode('AssetHubPolkadot').handleBridgeTransfer(input, 'Polkadot'));
|
|
5090
5096
|
}
|
|
5091
|
-
|
|
5097
|
+
var isSystemNode = !isTMultiLocation(destination) && SYSTEM_NODES_KUSAMA.includes(destination);
|
|
5098
|
+
if (scenario === 'ParaToPara' && asset.symbol === 'KSM' && !isForeignAsset(asset) && !isSystemNode) {
|
|
5092
5099
|
throw new ScenarioNotSupportedError(this.node, scenario, 'Para to Para scenarios for KSM transfer from AssetHub are not supported, you have to transfer KSM to Relay chain and transfer to destination chain from Relay chain.');
|
|
5093
5100
|
}
|
|
5094
5101
|
if (scenario === 'ParaToPara' && asset.symbol === 'DOT' && !isForeignAsset(asset)) {
|
|
5095
5102
|
throw new ScenarioNotSupportedError(this.node, scenario, 'Bridged DOT cannot currently be transfered from AssetHubKusama, if you are sending different DOT asset, please specify {id: <DOTID>}.');
|
|
5096
5103
|
}
|
|
5097
|
-
var section = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5104
|
+
var section = scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5098
5105
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, section, 'Unlimited'));
|
|
5099
5106
|
}
|
|
5100
5107
|
}, {
|
|
@@ -5107,8 +5114,8 @@ var AssetHubKusama$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5107
5114
|
}
|
|
5108
5115
|
}, {
|
|
5109
5116
|
key: "createCurrencySpec",
|
|
5110
|
-
value: function createCurrencySpec(amount, scenario, version, asset
|
|
5111
|
-
return getNode('AssetHubPolkadot').createCurrencySpec(amount, scenario, version, asset
|
|
5117
|
+
value: function createCurrencySpec(amount, scenario, version, asset) {
|
|
5118
|
+
return getNode('AssetHubPolkadot').createCurrencySpec(amount, scenario, version, asset);
|
|
5112
5119
|
}
|
|
5113
5120
|
}]);
|
|
5114
5121
|
}(ParachainNode);
|
|
@@ -5192,16 +5199,26 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5192
5199
|
value: function handleBridgeTransfer(input, targetChain) {
|
|
5193
5200
|
var _input$asset$symbol, _input$asset$symbol2, _input$asset$symbol3, _input$asset$symbol4;
|
|
5194
5201
|
if (targetChain === 'Kusama' && ((_input$asset$symbol = input.asset.symbol) === null || _input$asset$symbol === void 0 ? void 0 : _input$asset$symbol.toUpperCase()) === 'KSM' || targetChain === 'Polkadot' && ((_input$asset$symbol2 = input.asset.symbol) === null || _input$asset$symbol2 === void 0 ? void 0 : _input$asset$symbol2.toUpperCase()) === 'DOT') {
|
|
5202
|
+
var overriddenVersion = Version.V4;
|
|
5203
|
+
var customMultiLocation = {
|
|
5204
|
+
parents: Parents.TWO,
|
|
5205
|
+
interior: {
|
|
5206
|
+
X1: [{
|
|
5207
|
+
GlobalConsensus: targetChain
|
|
5208
|
+
}]
|
|
5209
|
+
}
|
|
5210
|
+
};
|
|
5195
5211
|
var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5196
|
-
header: createBridgePolkadotXcmDest(
|
|
5212
|
+
header: createBridgePolkadotXcmDest(overriddenVersion, targetChain, input.destination, input.paraIdTo),
|
|
5197
5213
|
addressSelection: generateAddressMultiLocationV4(input.api, input.address),
|
|
5198
|
-
currencySelection:
|
|
5214
|
+
currencySelection: createVersionedMultiAssets(overriddenVersion, input.asset.amount, customMultiLocation)
|
|
5199
5215
|
});
|
|
5200
5216
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited');
|
|
5201
5217
|
} else if (targetChain === 'Polkadot' && ((_input$asset$symbol3 = input.asset.symbol) === null || _input$asset$symbol3 === void 0 ? void 0 : _input$asset$symbol3.toUpperCase()) === 'KSM' || targetChain === 'Kusama' && ((_input$asset$symbol4 = input.asset.symbol) === null || _input$asset$symbol4 === void 0 ? void 0 : _input$asset$symbol4.toUpperCase()) === 'DOT') {
|
|
5218
|
+
var _overriddenVersion = Version.V3;
|
|
5202
5219
|
var _modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5203
|
-
header: createBridgePolkadotXcmDest(
|
|
5204
|
-
currencySelection:
|
|
5220
|
+
header: createBridgePolkadotXcmDest(_overriddenVersion, targetChain, input.destination, input.paraIdTo),
|
|
5221
|
+
currencySelection: createVersionedMultiAssets(_overriddenVersion, input.asset.amount, DOT_MULTILOCATION)
|
|
5205
5222
|
});
|
|
5206
5223
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(_modifiedInput, 'limited_reserve_transfer_assets', 'Unlimited');
|
|
5207
5224
|
}
|
|
@@ -5228,7 +5245,7 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5228
5245
|
var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5229
5246
|
header: createPolkadotXcmHeader(scenario, this.version, destination, paraIdTo, ETHEREUM_JUNCTION, Parents.TWO),
|
|
5230
5247
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, this.version, paraIdTo),
|
|
5231
|
-
currencySelection:
|
|
5248
|
+
currencySelection: createVersionedMultiAssets(Version.V3, asset.amount, asset.multiLocation)
|
|
5232
5249
|
});
|
|
5233
5250
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited');
|
|
5234
5251
|
}
|
|
@@ -5238,7 +5255,6 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5238
5255
|
var api = input.api,
|
|
5239
5256
|
address = input.address,
|
|
5240
5257
|
asset = input.asset,
|
|
5241
|
-
overriddenAsset = input.overriddenAsset,
|
|
5242
5258
|
scenario = input.scenario,
|
|
5243
5259
|
destination = input.destination,
|
|
5244
5260
|
paraIdTo = input.paraIdTo;
|
|
@@ -5255,7 +5271,7 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5255
5271
|
var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5256
5272
|
header: this.createPolkadotXcmHeader(scenario, version, destination, paraId),
|
|
5257
5273
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, version, paraId),
|
|
5258
|
-
currencySelection:
|
|
5274
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, customMultiLocation)
|
|
5259
5275
|
});
|
|
5260
5276
|
return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'limited_teleport_assets', 'Unlimited');
|
|
5261
5277
|
}
|
|
@@ -5266,7 +5282,6 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5266
5282
|
var asset = input.asset,
|
|
5267
5283
|
destination = input.destination,
|
|
5268
5284
|
paraIdTo = input.paraIdTo,
|
|
5269
|
-
overriddenAsset = input.overriddenAsset,
|
|
5270
5285
|
scenario = input.scenario,
|
|
5271
5286
|
api = input.api,
|
|
5272
5287
|
version = input.version,
|
|
@@ -5277,13 +5292,13 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5277
5292
|
return _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5278
5293
|
header: this.createPolkadotXcmHeader(scenario, versionOrDefault, destination, paraIdTo),
|
|
5279
5294
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, versionOrDefault, paraIdTo),
|
|
5280
|
-
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset
|
|
5295
|
+
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset)
|
|
5281
5296
|
});
|
|
5282
5297
|
}
|
|
5283
5298
|
if ((destination === 'Hydration' || destination === 'Polimec' || destination === 'Moonbeam' || destination === 'BifrostPolkadot') && asset.symbol === 'DOT') {
|
|
5284
5299
|
var _versionOrDefault = version !== null && version !== void 0 ? version : this.version;
|
|
5285
5300
|
return _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5286
|
-
currencySelection:
|
|
5301
|
+
currencySelection: createVersionedMultiAssets(_versionOrDefault, asset.amount, DOT_MULTILOCATION)
|
|
5287
5302
|
});
|
|
5288
5303
|
}
|
|
5289
5304
|
return input;
|
|
@@ -5291,8 +5306,9 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5291
5306
|
}, {
|
|
5292
5307
|
key: "getSection",
|
|
5293
5308
|
value: function getSection(scenario, destination) {
|
|
5309
|
+
var isSystemNode = !isTMultiLocation(destination) && SYSTEM_NODES_POLKADOT.includes(destination);
|
|
5294
5310
|
if (destination === 'Polimec' || destination === 'Moonbeam') return 'transfer_assets';
|
|
5295
|
-
return scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5311
|
+
return scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5296
5312
|
}
|
|
5297
5313
|
}, {
|
|
5298
5314
|
key: "transferPolkadotXCM",
|
|
@@ -5318,7 +5334,8 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5318
5334
|
if (destination === 'BifrostPolkadot' && isEthereumAsset) {
|
|
5319
5335
|
return Promise.resolve(this.handleBifrostEthTransfer(input));
|
|
5320
5336
|
}
|
|
5321
|
-
|
|
5337
|
+
var isSystemNode = !isTMultiLocation(destination) && SYSTEM_NODES_POLKADOT.includes(destination);
|
|
5338
|
+
if (scenario === 'ParaToPara' && asset.symbol === 'DOT' && !isForeignAsset(asset) && destination !== 'Hydration' && destination !== 'Polimec' && destination !== 'Moonbeam' && destination !== 'BifrostPolkadot' && destination !== 'PeoplePolkadot' && !isSystemNode) {
|
|
5322
5339
|
throw new ScenarioNotSupportedError(this.node, scenario, 'Para to Para scenarios for DOT transfer from AssetHub are not supported, you have to transfer DOT to Relay chain and transfer to destination chain from Relay chain.');
|
|
5323
5340
|
}
|
|
5324
5341
|
if (scenario === 'ParaToPara' && asset.symbol === 'KSM' && !isForeignAsset(asset)) {
|
|
@@ -5338,18 +5355,20 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5338
5355
|
}
|
|
5339
5356
|
}, {
|
|
5340
5357
|
key: "createCurrencySpec",
|
|
5341
|
-
value: function createCurrencySpec
|
|
5358
|
+
value: function createCurrencySpec(amount, scenario, version, asset) {
|
|
5342
5359
|
if (scenario === 'ParaToPara') {
|
|
5343
|
-
var
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
|
|
5349
|
-
|
|
5350
|
-
|
|
5351
|
-
|
|
5352
|
-
|
|
5360
|
+
var multiLocation = asset ? asset.multiLocation : undefined;
|
|
5361
|
+
return createVersionedMultiAssets(version, amount, multiLocation !== null && multiLocation !== void 0 ? multiLocation : {
|
|
5362
|
+
parents: Parents.ZERO,
|
|
5363
|
+
interior: {
|
|
5364
|
+
X2: [{
|
|
5365
|
+
PalletInstance: 50
|
|
5366
|
+
}, {
|
|
5367
|
+
// TODO: Handle missing assedId
|
|
5368
|
+
GeneralIndex: asset && isForeignAsset(asset) && asset.assetId ? asset.assetId : 0
|
|
5369
|
+
}]
|
|
5370
|
+
}
|
|
5371
|
+
});
|
|
5353
5372
|
} else {
|
|
5354
5373
|
return _superPropGet(AssetHubPolkadot, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
|
|
5355
5374
|
}
|
|
@@ -5495,16 +5514,18 @@ var BifrostPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5495
5514
|
key: "transferToAssetHub",
|
|
5496
5515
|
value: function transferToAssetHub(input) {
|
|
5497
5516
|
var _getAssetId;
|
|
5498
|
-
var
|
|
5499
|
-
asset = input.asset;
|
|
5517
|
+
var asset = input.asset;
|
|
5500
5518
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
5501
|
-
currencySelection:
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5519
|
+
currencySelection: createVersionedMultiAssets(this.version, asset.amount, {
|
|
5520
|
+
parents: asset.symbol === 'DOT' ? Parents.ONE : Parents.TWO,
|
|
5521
|
+
interior: asset.symbol === 'WETH' ? {
|
|
5522
|
+
X2: [ETHEREUM_JUNCTION, {
|
|
5523
|
+
AccountKey20: {
|
|
5524
|
+
key: (_getAssetId = getAssetId('Ethereum', 'WETH')) !== null && _getAssetId !== void 0 ? _getAssetId : ''
|
|
5525
|
+
}
|
|
5526
|
+
}]
|
|
5527
|
+
} : 'Here'
|
|
5528
|
+
})
|
|
5508
5529
|
}), 'transfer_assets', 'Unlimited'));
|
|
5509
5530
|
}
|
|
5510
5531
|
}, {
|
|
@@ -5771,16 +5792,18 @@ var Crab$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5771
5792
|
}
|
|
5772
5793
|
}, {
|
|
5773
5794
|
key: "createCurrencySpec",
|
|
5774
|
-
value: function createCurrencySpec
|
|
5795
|
+
value: function createCurrencySpec(amount, scenario, version, _asset) {
|
|
5775
5796
|
if (scenario === 'ParaToPara') {
|
|
5776
|
-
|
|
5777
|
-
|
|
5778
|
-
|
|
5797
|
+
return createVersionedMultiAssets(version, amount, {
|
|
5798
|
+
parents: Parents.ZERO,
|
|
5799
|
+
interior: {
|
|
5800
|
+
X1: {
|
|
5801
|
+
PalletInstance: 5
|
|
5802
|
+
}
|
|
5779
5803
|
}
|
|
5780
|
-
};
|
|
5781
|
-
return createCurrencySpec(amount, version, Parents.ZERO, overridedMultiLocation, interior);
|
|
5804
|
+
});
|
|
5782
5805
|
} else {
|
|
5783
|
-
return _superPropGet(Crab, "createCurrencySpec", this, 3)([amount, scenario, version
|
|
5806
|
+
return _superPropGet(Crab, "createCurrencySpec", this, 3)([amount, scenario, version]);
|
|
5784
5807
|
}
|
|
5785
5808
|
}
|
|
5786
5809
|
}]);
|
|
@@ -6165,8 +6188,8 @@ var Moonbeam$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6165
6188
|
}
|
|
6166
6189
|
_inherits(Moonbeam, _ParachainNode);
|
|
6167
6190
|
return _createClass(Moonbeam, [{
|
|
6168
|
-
key: "
|
|
6169
|
-
value: function
|
|
6191
|
+
key: "getMultiLocation",
|
|
6192
|
+
value: function getMultiLocation(asset, scenario) {
|
|
6170
6193
|
if (scenario === 'ParaToRelay') return DOT_MULTILOCATION;
|
|
6171
6194
|
if (asset.symbol === this.getNativeAssetSymbol()) return {
|
|
6172
6195
|
parents: Parents.ZERO,
|
|
@@ -6187,11 +6210,10 @@ var Moonbeam$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6187
6210
|
var asset = input.asset,
|
|
6188
6211
|
scenario = input.scenario,
|
|
6189
6212
|
_input$version = input.version,
|
|
6190
|
-
version = _input$version === void 0 ? this.version : _input$version
|
|
6191
|
-
|
|
6192
|
-
var multiLocation = this.getJunctions(asset, scenario);
|
|
6213
|
+
version = _input$version === void 0 ? this.version : _input$version;
|
|
6214
|
+
var multiLocation = this.getMultiLocation(asset, scenario);
|
|
6193
6215
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
6194
|
-
currencySelection:
|
|
6216
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
|
|
6195
6217
|
}), 'transfer_assets', 'Unlimited'));
|
|
6196
6218
|
}
|
|
6197
6219
|
}, {
|
|
@@ -6212,8 +6234,8 @@ var Moonriver$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6212
6234
|
}
|
|
6213
6235
|
_inherits(Moonriver, _ParachainNode);
|
|
6214
6236
|
return _createClass(Moonriver, [{
|
|
6215
|
-
key: "
|
|
6216
|
-
value: function
|
|
6237
|
+
key: "getMultiLocation",
|
|
6238
|
+
value: function getMultiLocation(asset, scenario) {
|
|
6217
6239
|
if (scenario === 'ParaToRelay') return DOT_MULTILOCATION;
|
|
6218
6240
|
if (asset.symbol === this.getNativeAssetSymbol()) return {
|
|
6219
6241
|
parents: Parents.ZERO,
|
|
@@ -6234,11 +6256,10 @@ var Moonriver$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6234
6256
|
var asset = input.asset,
|
|
6235
6257
|
scenario = input.scenario,
|
|
6236
6258
|
_input$version = input.version,
|
|
6237
|
-
version = _input$version === void 0 ? this.version : _input$version
|
|
6238
|
-
|
|
6239
|
-
var multiLocation = this.getJunctions(asset, scenario);
|
|
6259
|
+
version = _input$version === void 0 ? this.version : _input$version;
|
|
6260
|
+
var multiLocation = this.getMultiLocation(asset, scenario);
|
|
6240
6261
|
return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
6241
|
-
currencySelection:
|
|
6262
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
|
|
6242
6263
|
}), 'transfer_assets', 'Unlimited'));
|
|
6243
6264
|
}
|
|
6244
6265
|
}, {
|
|
@@ -6529,7 +6550,12 @@ var XTransferTransferImpl = /*#__PURE__*/function () {
|
|
|
6529
6550
|
if (isMultiLocationDestination) {
|
|
6530
6551
|
throw new Error('Multilocation destinations are not supported for specific transfer you are trying to create. In special cases such as xTokens or xTransfer pallet try using address multilocation instead (for both destination and address in same multilocation set (eg. X2 - Parachain, Address). For further assistance please open issue in our repository.');
|
|
6531
6552
|
}
|
|
6532
|
-
var
|
|
6553
|
+
var version = Version.V1;
|
|
6554
|
+
var multiAssets = [createMultiAsset(version, asset.amount, {
|
|
6555
|
+
parents: Parents.ZERO,
|
|
6556
|
+
interior: 'Here'
|
|
6557
|
+
})];
|
|
6558
|
+
var resolvedMultiAssets = maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset);
|
|
6533
6559
|
var dest = getDestination(input);
|
|
6534
6560
|
var section = 'transfer';
|
|
6535
6561
|
var destWeight = determineDestWeight(destination);
|
|
@@ -6537,7 +6563,7 @@ var XTransferTransferImpl = /*#__PURE__*/function () {
|
|
|
6537
6563
|
module: pallet !== null && pallet !== void 0 ? pallet : 'XTransfer',
|
|
6538
6564
|
section: method !== null && method !== void 0 ? method : section,
|
|
6539
6565
|
parameters: {
|
|
6540
|
-
asset:
|
|
6566
|
+
asset: resolvedMultiAssets[0],
|
|
6541
6567
|
dest: dest,
|
|
6542
6568
|
dest_weight: destWeight
|
|
6543
6569
|
}
|
|
@@ -7001,14 +7027,7 @@ var Polimec = {
|
|
|
7001
7027
|
],
|
|
7002
7028
|
otherAssets: [
|
|
7003
7029
|
{
|
|
7004
|
-
|
|
7005
|
-
symbol: "DOT",
|
|
7006
|
-
decimals: 10,
|
|
7007
|
-
existentialDeposit: "100000000"
|
|
7008
|
-
},
|
|
7009
|
-
{
|
|
7010
|
-
assetId: "1984",
|
|
7011
|
-
symbol: "USDt",
|
|
7030
|
+
symbol: "USDC",
|
|
7012
7031
|
decimals: 6,
|
|
7013
7032
|
multiLocation: {
|
|
7014
7033
|
parents: 1,
|
|
@@ -7021,7 +7040,7 @@ var Polimec = {
|
|
|
7021
7040
|
PalletInstance: 50
|
|
7022
7041
|
},
|
|
7023
7042
|
{
|
|
7024
|
-
GeneralIndex:
|
|
7043
|
+
GeneralIndex: 1337
|
|
7025
7044
|
}
|
|
7026
7045
|
]
|
|
7027
7046
|
}
|
|
@@ -7029,8 +7048,7 @@ var Polimec = {
|
|
|
7029
7048
|
existentialDeposit: "70000"
|
|
7030
7049
|
},
|
|
7031
7050
|
{
|
|
7032
|
-
|
|
7033
|
-
symbol: "USDC",
|
|
7051
|
+
symbol: "USDt",
|
|
7034
7052
|
decimals: 6,
|
|
7035
7053
|
multiLocation: {
|
|
7036
7054
|
parents: 1,
|
|
@@ -7043,12 +7061,23 @@ var Polimec = {
|
|
|
7043
7061
|
PalletInstance: 50
|
|
7044
7062
|
},
|
|
7045
7063
|
{
|
|
7046
|
-
GeneralIndex:
|
|
7064
|
+
GeneralIndex: 1984
|
|
7047
7065
|
}
|
|
7048
7066
|
]
|
|
7049
7067
|
}
|
|
7050
7068
|
},
|
|
7051
7069
|
existentialDeposit: "70000"
|
|
7070
|
+
},
|
|
7071
|
+
{
|
|
7072
|
+
symbol: "DOT",
|
|
7073
|
+
decimals: 10,
|
|
7074
|
+
multiLocation: {
|
|
7075
|
+
parents: 1,
|
|
7076
|
+
interior: {
|
|
7077
|
+
Here: null
|
|
7078
|
+
}
|
|
7079
|
+
},
|
|
7080
|
+
existentialDeposit: "100000000"
|
|
7052
7081
|
}
|
|
7053
7082
|
]
|
|
7054
7083
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paraspell/sdk-core",
|
|
3
|
-
"version": "8.6.
|
|
3
|
+
"version": "8.6.2",
|
|
4
4
|
"description": "SDK core for ParaSpell XCM/XCMP tool for developers",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@rollup/plugin-json": "^6.1.0",
|
|
37
37
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
38
38
|
"@vitest/coverage-v8": "^3.0.7",
|
|
39
|
-
"axios": "^1.8.
|
|
39
|
+
"axios": "^1.8.2",
|
|
40
40
|
"dotenv": "^16.4.7",
|
|
41
41
|
"prettier": "^3.5.2",
|
|
42
42
|
"rollup": "^4.34.8",
|