@paraspell/sdk-core 8.6.2 → 8.7.1
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 +334 -97
- package/dist/index.d.ts +30 -7
- package/dist/index.mjs +333 -98
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2471,10 +2471,71 @@ var throwUnsupportedCurrency = function throwUnsupportedCurrency(currency, node)
|
|
|
2471
2471
|
throw new InvalidCurrencyError("".concat(isDestination ? 'Destination' : 'Origin', " node ").concat(node, " does not support currency ").concat(JSON.stringify(currency), "."));
|
|
2472
2472
|
};
|
|
2473
2473
|
|
|
2474
|
+
var isPrimitive = function isPrimitive(obj) {
|
|
2475
|
+
return obj !== Object(obj);
|
|
2476
|
+
};
|
|
2477
|
+
var _deepEqual = function deepEqual(obj1, obj2) {
|
|
2478
|
+
if (obj1 === obj2) return true;
|
|
2479
|
+
if (isPrimitive(obj1) && isPrimitive(obj2)) return obj1 === obj2;
|
|
2480
|
+
if (_typeof(obj1) !== 'object' || obj1 === null || _typeof(obj2) !== 'object' || obj2 === null) {
|
|
2481
|
+
return false;
|
|
2482
|
+
}
|
|
2483
|
+
if (Array.isArray(obj1) !== Array.isArray(obj2)) {
|
|
2484
|
+
return false;
|
|
2485
|
+
}
|
|
2486
|
+
var obj1Keys = Object.keys(obj1).map(function (key) {
|
|
2487
|
+
return key.toLowerCase();
|
|
2488
|
+
});
|
|
2489
|
+
var obj2Keys = Object.keys(obj2).map(function (key) {
|
|
2490
|
+
return key.toLowerCase();
|
|
2491
|
+
});
|
|
2492
|
+
if (obj1Keys.length !== obj2Keys.length) return false;
|
|
2493
|
+
var _iterator = _createForOfIteratorHelper(obj1Keys),
|
|
2494
|
+
_step;
|
|
2495
|
+
try {
|
|
2496
|
+
var _loop = function _loop() {
|
|
2497
|
+
var key = _step.value;
|
|
2498
|
+
var keyInObj2 = obj2Keys.find(function (k) {
|
|
2499
|
+
return k === key;
|
|
2500
|
+
});
|
|
2501
|
+
if (!keyInObj2) return {
|
|
2502
|
+
v: false
|
|
2503
|
+
};
|
|
2504
|
+
var obj1Value = obj1[Object.keys(obj1).find(function (k) {
|
|
2505
|
+
return k.toLowerCase() === key;
|
|
2506
|
+
})];
|
|
2507
|
+
var obj2Value = obj2[Object.keys(obj2).find(function (k) {
|
|
2508
|
+
return k.toLowerCase() === key;
|
|
2509
|
+
})];
|
|
2510
|
+
if (!_deepEqual(obj1Value, obj2Value)) return {
|
|
2511
|
+
v: false
|
|
2512
|
+
};
|
|
2513
|
+
},
|
|
2514
|
+
_ret;
|
|
2515
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
2516
|
+
_ret = _loop();
|
|
2517
|
+
if (_ret) return _ret.v;
|
|
2518
|
+
}
|
|
2519
|
+
} catch (err) {
|
|
2520
|
+
_iterator.e(err);
|
|
2521
|
+
} finally {
|
|
2522
|
+
_iterator.f();
|
|
2523
|
+
}
|
|
2524
|
+
return true;
|
|
2525
|
+
};
|
|
2526
|
+
|
|
2474
2527
|
var isForeignAsset = function isForeignAsset(asset) {
|
|
2475
2528
|
return _typeof(asset) === 'object' && asset !== null && ('assetId' in asset || 'multiLocation' in asset) && !('isNative' in asset);
|
|
2476
2529
|
};
|
|
2477
2530
|
|
|
2531
|
+
var isAssetEqual = function isAssetEqual(asset1, asset2) {
|
|
2532
|
+
var ml1 = asset1.multiLocation;
|
|
2533
|
+
var ml2 = asset2.multiLocation;
|
|
2534
|
+
if (ml1 && ml2 && _deepEqual(ml1, ml2)) return true;
|
|
2535
|
+
if (isForeignAsset(asset1) && isForeignAsset(asset2) && asset1.assetId === asset2.assetId) return true;
|
|
2536
|
+
return asset1.symbol.toLowerCase() === asset2.symbol.toLowerCase();
|
|
2537
|
+
};
|
|
2538
|
+
|
|
2478
2539
|
var isSymbolSpecifier = function isSymbolSpecifier(currencySymbolValue) {
|
|
2479
2540
|
return _typeof(currencySymbolValue) === 'object' && 'type' in currencySymbolValue && 'value' in currencySymbolValue;
|
|
2480
2541
|
};
|
|
@@ -3666,6 +3727,14 @@ var resolveAsset = function resolveAsset(currency, origin, destination, assetChe
|
|
|
3666
3727
|
return assetCheckEnabled ? getAssetBySymbolOrId(origin, currency, !isTMultiLocation(destination) ? destination : null) : null;
|
|
3667
3728
|
};
|
|
3668
3729
|
|
|
3730
|
+
var resolveFeeAsset = function resolveFeeAsset(feeAsset, origin, destination) {
|
|
3731
|
+
var asset = getAssetBySymbolOrId(origin, feeAsset, !isTMultiLocation(destination) ? destination : null);
|
|
3732
|
+
if (!asset) {
|
|
3733
|
+
throwUnsupportedCurrency(feeAsset, origin);
|
|
3734
|
+
}
|
|
3735
|
+
return asset !== null && asset !== void 0 ? asset : undefined;
|
|
3736
|
+
};
|
|
3737
|
+
|
|
3669
3738
|
var AssetHubPolkadot$2 = {
|
|
3670
3739
|
defaultPallet: "PolkadotXcm",
|
|
3671
3740
|
supportedPallets: [
|
|
@@ -4474,7 +4543,7 @@ var getSupportedPalletsDetails = function getSupportedPalletsDetails(node) {
|
|
|
4474
4543
|
return palletsMap[node].supportedPallets;
|
|
4475
4544
|
};
|
|
4476
4545
|
|
|
4477
|
-
var validateCurrency = function validateCurrency(currency) {
|
|
4546
|
+
var validateCurrency = function validateCurrency(currency, feeAsset) {
|
|
4478
4547
|
if ('multiasset' in currency) {
|
|
4479
4548
|
if (currency.multiasset.length === 0) {
|
|
4480
4549
|
throw new InvalidCurrencyError('Overridden multi assets cannot be empty');
|
|
@@ -4482,16 +4551,9 @@ var validateCurrency = function validateCurrency(currency) {
|
|
|
4482
4551
|
if (currency.multiasset.length === 1) {
|
|
4483
4552
|
throw new InvalidCurrencyError('Please provide more than one multi asset');
|
|
4484
4553
|
}
|
|
4485
|
-
if (currency.multiasset.length > 1 && !
|
|
4486
|
-
return asset.isFeeAsset;
|
|
4487
|
-
})) {
|
|
4554
|
+
if (currency.multiasset.length > 1 && !feeAsset) {
|
|
4488
4555
|
throw new InvalidCurrencyError('Overridden multi assets cannot be used without specifying fee asset');
|
|
4489
4556
|
}
|
|
4490
|
-
if (currency.multiasset.length > 1 && currency.multiasset.filter(function (asset) {
|
|
4491
|
-
return asset.isFeeAsset;
|
|
4492
|
-
}).length > 1) {
|
|
4493
|
-
throw new InvalidCurrencyError('Overridden multi assets cannot have more than one fee asset');
|
|
4494
|
-
}
|
|
4495
4557
|
}
|
|
4496
4558
|
};
|
|
4497
4559
|
var validateDestination = function validateDestination(origin, destination) {
|
|
@@ -4551,7 +4613,7 @@ var validateAssetSupport = function validateAssetSupport(_ref, assetCheckEnabled
|
|
|
4551
4613
|
}
|
|
4552
4614
|
};
|
|
4553
4615
|
|
|
4554
|
-
var resolveOverriddenAsset = function resolveOverriddenAsset(options, isBridge, assetCheckEnabled) {
|
|
4616
|
+
var resolveOverriddenAsset = function resolveOverriddenAsset(options, isBridge, assetCheckEnabled, feeAsset) {
|
|
4555
4617
|
var currency = options.currency,
|
|
4556
4618
|
origin = options.from,
|
|
4557
4619
|
destination = options.to;
|
|
@@ -4559,6 +4621,9 @@ var resolveOverriddenAsset = function resolveOverriddenAsset(options, isBridge,
|
|
|
4559
4621
|
return currency.multilocation.value;
|
|
4560
4622
|
}
|
|
4561
4623
|
if ('multiasset' in currency) {
|
|
4624
|
+
if (!feeAsset) {
|
|
4625
|
+
throw new InvalidCurrencyError('Overridden multi assets cannot be used without specifying fee asset');
|
|
4626
|
+
}
|
|
4562
4627
|
if (currency.multiasset.every(function (asset) {
|
|
4563
4628
|
return isTMultiAsset(asset);
|
|
4564
4629
|
})) {
|
|
@@ -4566,18 +4631,30 @@ var resolveOverriddenAsset = function resolveOverriddenAsset(options, isBridge,
|
|
|
4566
4631
|
}
|
|
4567
4632
|
// MultiAsset is an array of TCurrencyCore, search for assets
|
|
4568
4633
|
var assets = currency.multiasset.map(function (currency) {
|
|
4569
|
-
var _currency$isFeeAsset;
|
|
4570
4634
|
var asset = getAssetBySymbolOrId(origin, currency, !isTMultiLocation(destination) ? destination : null);
|
|
4571
4635
|
if (asset && (!isForeignAsset(asset) || !asset.multiLocation)) {
|
|
4572
4636
|
throw new InvalidCurrencyError("Asset ".concat(JSON.stringify(currency), " does not have a multiLocation"));
|
|
4573
4637
|
}
|
|
4638
|
+
if (!asset) {
|
|
4639
|
+
throw new InvalidCurrencyError("Origin node ".concat(origin, " does not support currency ").concat(JSON.stringify(currency)));
|
|
4640
|
+
}
|
|
4574
4641
|
validateAssetSupport(options, assetCheckEnabled, isBridge, asset);
|
|
4575
4642
|
var originTyped = origin;
|
|
4576
4643
|
var originNode = getNode(originTyped);
|
|
4577
4644
|
return _objectSpread2({
|
|
4578
|
-
isFeeAsset: (
|
|
4579
|
-
}, createMultiAsset(originNode.version, currency.amount, asset
|
|
4645
|
+
isFeeAsset: isAssetEqual(feeAsset, asset)
|
|
4646
|
+
}, createMultiAsset(originNode.version, currency.amount, asset.multiLocation));
|
|
4580
4647
|
});
|
|
4648
|
+
if (assets.filter(function (asset) {
|
|
4649
|
+
return asset.isFeeAsset;
|
|
4650
|
+
}).length > 1) {
|
|
4651
|
+
throw new InvalidCurrencyError("Fee asset matches multiple assets in multiassets");
|
|
4652
|
+
}
|
|
4653
|
+
if (assets.filter(function (asset) {
|
|
4654
|
+
return asset.isFeeAsset;
|
|
4655
|
+
}).length === 0) {
|
|
4656
|
+
throw new InvalidCurrencyError("Fee asset not found in multiassets");
|
|
4657
|
+
}
|
|
4581
4658
|
return assets;
|
|
4582
4659
|
}
|
|
4583
4660
|
return undefined;
|
|
@@ -4606,12 +4683,12 @@ var validateDestinationAddress = function validateDestinationAddress(address, de
|
|
|
4606
4683
|
|
|
4607
4684
|
var send = /*#__PURE__*/function () {
|
|
4608
4685
|
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
|
|
4609
|
-
var api, origin, currency, address, destination, paraIdTo, version, senderAddress, pallet, method, isBridge, assetCheckEnabled, asset, overriddenAsset, resolvedAsset, originNode;
|
|
4686
|
+
var api, origin, currency, feeAsset, address, destination, paraIdTo, version, senderAddress, pallet, method, isBridge, assetCheckEnabled, asset, resolvedFeeAsset, overriddenAsset, resolvedAsset, originNode;
|
|
4610
4687
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
4611
4688
|
while (1) switch (_context.prev = _context.next) {
|
|
4612
4689
|
case 0:
|
|
4613
|
-
api = options.api, origin = options.from, currency = options.currency, address = options.address, destination = options.to, paraIdTo = options.paraIdTo, version = options.version, senderAddress = options.senderAddress, pallet = options.pallet, method = options.method;
|
|
4614
|
-
validateCurrency(currency);
|
|
4690
|
+
api = options.api, origin = options.from, currency = options.currency, feeAsset = options.feeAsset, address = options.address, destination = options.to, paraIdTo = options.paraIdTo, version = options.version, senderAddress = options.senderAddress, pallet = options.pallet, method = options.method;
|
|
4691
|
+
validateCurrency(currency, feeAsset);
|
|
4615
4692
|
validateDestination(origin, destination);
|
|
4616
4693
|
validateDestinationAddress(address, destination);
|
|
4617
4694
|
if (senderAddress) validateAddress(senderAddress, origin, false);
|
|
@@ -4625,23 +4702,24 @@ var send = /*#__PURE__*/function () {
|
|
|
4625
4702
|
assetCheckEnabled = determineAssetCheckEnabled(origin, currency, isBridge);
|
|
4626
4703
|
validateAssetSpecifiers(assetCheckEnabled, currency);
|
|
4627
4704
|
asset = resolveAsset(currency, origin, destination, assetCheckEnabled);
|
|
4705
|
+
resolvedFeeAsset = feeAsset ? resolveFeeAsset(feeAsset, origin, destination) : undefined;
|
|
4628
4706
|
validateAssetSupport(options, assetCheckEnabled, isBridge, asset);
|
|
4629
4707
|
if (!isRelayChain(origin)) {
|
|
4630
|
-
_context.next =
|
|
4708
|
+
_context.next = 19;
|
|
4631
4709
|
break;
|
|
4632
4710
|
}
|
|
4633
4711
|
if (!(destination === 'Ethereum')) {
|
|
4634
|
-
_context.next =
|
|
4712
|
+
_context.next = 16;
|
|
4635
4713
|
break;
|
|
4636
4714
|
}
|
|
4637
4715
|
throw new Error('Transfers from relay chain to Ethereum are not supported.');
|
|
4638
|
-
case
|
|
4716
|
+
case 16:
|
|
4639
4717
|
if (asset) {
|
|
4640
|
-
_context.next =
|
|
4718
|
+
_context.next = 18;
|
|
4641
4719
|
break;
|
|
4642
4720
|
}
|
|
4643
4721
|
throw new Error('Asset is required for relay chain to relay chain transfers.');
|
|
4644
|
-
case
|
|
4722
|
+
case 18:
|
|
4645
4723
|
return _context.abrupt("return", transferRelayToPara({
|
|
4646
4724
|
api: api,
|
|
4647
4725
|
origin: origin,
|
|
@@ -4655,11 +4733,11 @@ var send = /*#__PURE__*/function () {
|
|
|
4655
4733
|
pallet: pallet,
|
|
4656
4734
|
method: method
|
|
4657
4735
|
}));
|
|
4658
|
-
case
|
|
4659
|
-
overriddenAsset = resolveOverriddenAsset(options, isBridge, assetCheckEnabled);
|
|
4660
|
-
_context.next =
|
|
4736
|
+
case 19:
|
|
4737
|
+
overriddenAsset = resolveOverriddenAsset(options, isBridge, assetCheckEnabled, resolvedFeeAsset);
|
|
4738
|
+
_context.next = 22;
|
|
4661
4739
|
return api.init(origin);
|
|
4662
|
-
case
|
|
4740
|
+
case 22:
|
|
4663
4741
|
// In case asset check is disabled, we create asset object from currency symbol
|
|
4664
4742
|
resolvedAsset = asset !== null && asset !== void 0 ? asset : {
|
|
4665
4743
|
symbol: 'symbol' in currency ? currency.symbol : undefined
|
|
@@ -4670,6 +4748,7 @@ var send = /*#__PURE__*/function () {
|
|
|
4670
4748
|
asset: _objectSpread2(_objectSpread2({}, resolvedAsset), {}, {
|
|
4671
4749
|
amount: 'multiasset' in currency ? 0 : currency.amount
|
|
4672
4750
|
}),
|
|
4751
|
+
feeAsset: resolvedFeeAsset,
|
|
4673
4752
|
address: address,
|
|
4674
4753
|
to: destination,
|
|
4675
4754
|
paraIdTo: paraIdTo,
|
|
@@ -4679,7 +4758,7 @@ var send = /*#__PURE__*/function () {
|
|
|
4679
4758
|
pallet: pallet,
|
|
4680
4759
|
method: method
|
|
4681
4760
|
}));
|
|
4682
|
-
case
|
|
4761
|
+
case 25:
|
|
4683
4762
|
case "end":
|
|
4684
4763
|
return _context.stop();
|
|
4685
4764
|
}
|
|
@@ -4749,11 +4828,11 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
4749
4828
|
key: "transfer",
|
|
4750
4829
|
value: function () {
|
|
4751
4830
|
var _transfer = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
|
|
4752
|
-
var api, asset, address, destination, paraIdTo, overriddenAsset, version, senderAddress, pallet, method, isRelayDestination, scenario, paraId, versionOrDefault, isBifrostOrigin, isAssetHubDest, shouldUseMultiasset, input;
|
|
4831
|
+
var api, asset, feeAsset, address, destination, paraIdTo, overriddenAsset, version, senderAddress, pallet, method, isRelayDestination, scenario, paraId, versionOrDefault, isBifrostOrigin, isAssetHubDest, shouldUseMultiasset, input;
|
|
4753
4832
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
4754
4833
|
while (1) switch (_context.prev = _context.next) {
|
|
4755
4834
|
case 0:
|
|
4756
|
-
api = options.api, asset = options.asset, address = options.address, destination = options.to, paraIdTo = options.paraIdTo, overriddenAsset = options.overriddenAsset, version = options.version, senderAddress = options.senderAddress, pallet = options.pallet, method = options.method;
|
|
4835
|
+
api = options.api, asset = options.asset, feeAsset = options.feeAsset, address = options.address, destination = options.to, paraIdTo = options.paraIdTo, overriddenAsset = options.overriddenAsset, version = options.version, senderAddress = options.senderAddress, pallet = options.pallet, method = options.method;
|
|
4757
4836
|
isRelayDestination = !isTMultiLocation(destination) && isRelayChain(destination);
|
|
4758
4837
|
scenario = isRelayDestination ? 'ParaToRelay' : 'ParaToPara';
|
|
4759
4838
|
paraId = resolveParaId(paraIdTo, destination);
|
|
@@ -4820,6 +4899,7 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
4820
4899
|
currencySelection: this.createCurrencySpec(asset.amount, scenario, versionOrDefault, asset),
|
|
4821
4900
|
overriddenAsset: overriddenAsset,
|
|
4822
4901
|
asset: asset,
|
|
4902
|
+
feeAsset: feeAsset,
|
|
4823
4903
|
scenario: scenario,
|
|
4824
4904
|
destination: destination,
|
|
4825
4905
|
paraIdTo: paraId,
|
|
@@ -5120,6 +5200,118 @@ var AssetHubKusama$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5120
5200
|
}]);
|
|
5121
5201
|
}(ParachainNode);
|
|
5122
5202
|
|
|
5203
|
+
var transformMultiLocation = function transformMultiLocation(multiLocation) {
|
|
5204
|
+
var newInterior;
|
|
5205
|
+
if (multiLocation.interior === 'Here') {
|
|
5206
|
+
newInterior = 'Here';
|
|
5207
|
+
} else {
|
|
5208
|
+
var junctions = Object.values(multiLocation.interior).flat().filter(function (junction) {
|
|
5209
|
+
return _typeof(junction) === 'object' && junction !== null;
|
|
5210
|
+
});
|
|
5211
|
+
var filteredJunctions = junctions.filter(function (junction) {
|
|
5212
|
+
return !('Parachain' in junction);
|
|
5213
|
+
});
|
|
5214
|
+
if (filteredJunctions.length === 0) {
|
|
5215
|
+
newInterior = 'Here';
|
|
5216
|
+
} else {
|
|
5217
|
+
newInterior = _defineProperty({}, "X".concat(filteredJunctions.length), filteredJunctions);
|
|
5218
|
+
}
|
|
5219
|
+
}
|
|
5220
|
+
return _objectSpread2(_objectSpread2({}, multiLocation), {}, {
|
|
5221
|
+
parents: Parents.ZERO,
|
|
5222
|
+
interior: newInterior
|
|
5223
|
+
});
|
|
5224
|
+
};
|
|
5225
|
+
|
|
5226
|
+
var createExecuteXcm = function createExecuteXcm(input, weight, executionFee) {
|
|
5227
|
+
var api = input.api,
|
|
5228
|
+
_input$version = input.version,
|
|
5229
|
+
version = _input$version === void 0 ? Version.V4 : _input$version,
|
|
5230
|
+
asset = input.asset,
|
|
5231
|
+
scenario = input.scenario,
|
|
5232
|
+
destination = input.destination,
|
|
5233
|
+
paraIdTo = input.paraIdTo,
|
|
5234
|
+
address = input.address;
|
|
5235
|
+
var destWithHeader = createPolkadotXcmHeader(scenario, version, destination, paraIdTo);
|
|
5236
|
+
var _extractVersionFromHe = extractVersionFromHeader(destWithHeader),
|
|
5237
|
+
_extractVersionFromHe2 = _slicedToArray(_extractVersionFromHe, 2);
|
|
5238
|
+
_extractVersionFromHe2[0];
|
|
5239
|
+
var dest = _extractVersionFromHe2[1];
|
|
5240
|
+
var beneficiaryWithHeader = generateAddressPayload(api, scenario, 'PolkadotXcm', address, version, paraIdTo);
|
|
5241
|
+
var _extractVersionFromHe3 = extractVersionFromHeader(beneficiaryWithHeader),
|
|
5242
|
+
_extractVersionFromHe4 = _slicedToArray(_extractVersionFromHe3, 2);
|
|
5243
|
+
_extractVersionFromHe4[0];
|
|
5244
|
+
var beneficiary = _extractVersionFromHe4[1];
|
|
5245
|
+
var transformedMultiLocation = transformMultiLocation(asset.multiLocation);
|
|
5246
|
+
var amountWithoutFee = BigInt(asset.amount) - executionFee;
|
|
5247
|
+
var call = {
|
|
5248
|
+
module: 'PolkadotXcm',
|
|
5249
|
+
section: 'execute',
|
|
5250
|
+
parameters: {
|
|
5251
|
+
message: _defineProperty({}, version, [{
|
|
5252
|
+
WithdrawAsset: [{
|
|
5253
|
+
id: transformedMultiLocation,
|
|
5254
|
+
fun: {
|
|
5255
|
+
Fungible: asset.amount
|
|
5256
|
+
}
|
|
5257
|
+
}]
|
|
5258
|
+
}, {
|
|
5259
|
+
BuyExecution: {
|
|
5260
|
+
fees: {
|
|
5261
|
+
id: transformedMultiLocation,
|
|
5262
|
+
fun: {
|
|
5263
|
+
Fungible: executionFee
|
|
5264
|
+
}
|
|
5265
|
+
},
|
|
5266
|
+
weight_limit: {
|
|
5267
|
+
Limited: {
|
|
5268
|
+
ref_time: 100n,
|
|
5269
|
+
proof_size: 0n
|
|
5270
|
+
}
|
|
5271
|
+
}
|
|
5272
|
+
}
|
|
5273
|
+
}, {
|
|
5274
|
+
DepositReserveAsset: {
|
|
5275
|
+
assets: {
|
|
5276
|
+
Definite: [{
|
|
5277
|
+
id: transformedMultiLocation,
|
|
5278
|
+
fun: {
|
|
5279
|
+
Fungible: amountWithoutFee
|
|
5280
|
+
}
|
|
5281
|
+
}]
|
|
5282
|
+
},
|
|
5283
|
+
dest: dest,
|
|
5284
|
+
xcm: [{
|
|
5285
|
+
BuyExecution: {
|
|
5286
|
+
fees: {
|
|
5287
|
+
id: asset.multiLocation,
|
|
5288
|
+
fun: {
|
|
5289
|
+
Fungible: amountWithoutFee
|
|
5290
|
+
}
|
|
5291
|
+
},
|
|
5292
|
+
weight_limit: 'Unlimited'
|
|
5293
|
+
}
|
|
5294
|
+
}, {
|
|
5295
|
+
DepositAsset: {
|
|
5296
|
+
assets: {
|
|
5297
|
+
Wild: {
|
|
5298
|
+
AllCounted: 1
|
|
5299
|
+
}
|
|
5300
|
+
},
|
|
5301
|
+
beneficiary: beneficiary
|
|
5302
|
+
}
|
|
5303
|
+
}]
|
|
5304
|
+
}
|
|
5305
|
+
}]),
|
|
5306
|
+
max_weight: {
|
|
5307
|
+
ref_time: weight.refTime,
|
|
5308
|
+
proof_size: weight.proofSize
|
|
5309
|
+
}
|
|
5310
|
+
}
|
|
5311
|
+
};
|
|
5312
|
+
return api.callTxMethod(call);
|
|
5313
|
+
};
|
|
5314
|
+
|
|
5123
5315
|
var generateAddressMultiLocationV4 = function generateAddressMultiLocationV4(api, address) {
|
|
5124
5316
|
var isMultiLocation = _typeof(address) === 'object';
|
|
5125
5317
|
if (isMultiLocation) {
|
|
@@ -5164,7 +5356,8 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5164
5356
|
_this.handleBifrostEthTransfer = function (input) {
|
|
5165
5357
|
var api = input.api,
|
|
5166
5358
|
scenario = input.scenario,
|
|
5167
|
-
version = input.version,
|
|
5359
|
+
_input$version = input.version,
|
|
5360
|
+
version = _input$version === void 0 ? _this.version : _input$version,
|
|
5168
5361
|
destination = input.destination,
|
|
5169
5362
|
asset = input.asset;
|
|
5170
5363
|
if (!isForeignAsset(asset)) {
|
|
@@ -5173,19 +5366,18 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5173
5366
|
if (!asset.multiLocation) {
|
|
5174
5367
|
throw new InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no multiLocation"));
|
|
5175
5368
|
}
|
|
5176
|
-
var versionOrDefault = version !== null && version !== void 0 ? version : _this.version;
|
|
5177
5369
|
var call = {
|
|
5178
5370
|
module: 'PolkadotXcm',
|
|
5179
5371
|
section: 'transfer_assets_using_type_and_then',
|
|
5180
5372
|
parameters: {
|
|
5181
|
-
dest: _this.createPolkadotXcmHeader(scenario,
|
|
5182
|
-
assets: _defineProperty({},
|
|
5373
|
+
dest: _this.createPolkadotXcmHeader(scenario, version, destination, getParaId('BifrostPolkadot')),
|
|
5374
|
+
assets: _defineProperty({}, version, [createMultiAsset(version, asset.amount, asset.multiLocation)]),
|
|
5183
5375
|
assets_transfer_type: 'LocalReserve',
|
|
5184
|
-
remote_fees_id: _defineProperty({},
|
|
5376
|
+
remote_fees_id: _defineProperty({}, version, {
|
|
5185
5377
|
Concrete: asset.multiLocation
|
|
5186
5378
|
}),
|
|
5187
5379
|
fees_transfer_type: 'LocalReserve',
|
|
5188
|
-
custom_xcm_on_dest: createCustomXcmToBifrost(input,
|
|
5380
|
+
custom_xcm_on_dest: createCustomXcmToBifrost(input, version),
|
|
5189
5381
|
weight_limit: 'Unlimited'
|
|
5190
5382
|
}
|
|
5191
5383
|
};
|
|
@@ -5284,11 +5476,12 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5284
5476
|
paraIdTo = input.paraIdTo,
|
|
5285
5477
|
scenario = input.scenario,
|
|
5286
5478
|
api = input.api,
|
|
5287
|
-
|
|
5479
|
+
_input$version2 = input.version,
|
|
5480
|
+
version = _input$version2 === void 0 ? this.version : _input$version2,
|
|
5288
5481
|
address = input.address;
|
|
5289
5482
|
if ((((_asset$symbol = asset.symbol) === null || _asset$symbol === void 0 ? void 0 : _asset$symbol.toUpperCase()) === 'USDT' || ((_asset$symbol2 = asset.symbol) === null || _asset$symbol2 === void 0 ? void 0 : _asset$symbol2.toUpperCase()) === 'USDC') && destination === 'BifrostPolkadot') {
|
|
5290
|
-
var _input$
|
|
5291
|
-
var versionOrDefault = (_input$
|
|
5483
|
+
var _input$version3;
|
|
5484
|
+
var versionOrDefault = (_input$version3 = input.version) !== null && _input$version3 !== void 0 ? _input$version3 : Version.V2;
|
|
5292
5485
|
return _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5293
5486
|
header: this.createPolkadotXcmHeader(scenario, versionOrDefault, destination, paraIdTo),
|
|
5294
5487
|
addressSelection: generateAddressPayload(api, scenario, 'PolkadotXcm', address, versionOrDefault, paraIdTo),
|
|
@@ -5296,9 +5489,8 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5296
5489
|
});
|
|
5297
5490
|
}
|
|
5298
5491
|
if ((destination === 'Hydration' || destination === 'Polimec' || destination === 'Moonbeam' || destination === 'BifrostPolkadot') && asset.symbol === 'DOT') {
|
|
5299
|
-
var _versionOrDefault = version !== null && version !== void 0 ? version : this.version;
|
|
5300
5492
|
return _objectSpread2(_objectSpread2({}, input), {}, {
|
|
5301
|
-
currencySelection: createVersionedMultiAssets(
|
|
5493
|
+
currencySelection: createVersionedMultiAssets(version, asset.amount, DOT_MULTILOCATION)
|
|
5302
5494
|
});
|
|
5303
5495
|
}
|
|
5304
5496
|
return input;
|
|
@@ -5310,12 +5502,92 @@ var AssetHubPolkadot$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
5310
5502
|
if (destination === 'Polimec' || destination === 'Moonbeam') return 'transfer_assets';
|
|
5311
5503
|
return scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
|
|
5312
5504
|
}
|
|
5505
|
+
}, {
|
|
5506
|
+
key: "handleExecuteTransfer",
|
|
5507
|
+
value: function () {
|
|
5508
|
+
var _handleExecuteTransfer = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(input) {
|
|
5509
|
+
var api, senderAddress, asset, MIN_FEE, maxU64, dummyTx, dryRunResult, feeDotShifted, toMl, feeConverted, feeConvertedPadded;
|
|
5510
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
5511
|
+
while (1) switch (_context.prev = _context.next) {
|
|
5512
|
+
case 0:
|
|
5513
|
+
api = input.api, senderAddress = input.senderAddress, asset = input.asset;
|
|
5514
|
+
if (senderAddress) {
|
|
5515
|
+
_context.next = 3;
|
|
5516
|
+
break;
|
|
5517
|
+
}
|
|
5518
|
+
throw new Error('Please provide senderAddress');
|
|
5519
|
+
case 3:
|
|
5520
|
+
validateAddress(senderAddress, this.node, false);
|
|
5521
|
+
MIN_FEE = 150000n;
|
|
5522
|
+
maxU64 = (1n << 64n) - 1n;
|
|
5523
|
+
dummyTx = createExecuteXcm(input, {
|
|
5524
|
+
refTime: maxU64,
|
|
5525
|
+
proofSize: maxU64
|
|
5526
|
+
}, MIN_FEE);
|
|
5527
|
+
_context.next = 9;
|
|
5528
|
+
return api.getDryRun({
|
|
5529
|
+
node: this.node,
|
|
5530
|
+
tx: dummyTx,
|
|
5531
|
+
address: senderAddress
|
|
5532
|
+
});
|
|
5533
|
+
case 9:
|
|
5534
|
+
dryRunResult = _context.sent;
|
|
5535
|
+
if (dryRunResult.success) {
|
|
5536
|
+
_context.next = 12;
|
|
5537
|
+
break;
|
|
5538
|
+
}
|
|
5539
|
+
throw new Error("Dry run failed: ".concat(dryRunResult.failureReason));
|
|
5540
|
+
case 12:
|
|
5541
|
+
if (dryRunResult.weight) {
|
|
5542
|
+
_context.next = 14;
|
|
5543
|
+
break;
|
|
5544
|
+
}
|
|
5545
|
+
throw new Error('Dry run failed: weight not found');
|
|
5546
|
+
case 14:
|
|
5547
|
+
feeDotShifted = dryRunResult.fee / 10n;
|
|
5548
|
+
toMl = transformMultiLocation(asset.multiLocation);
|
|
5549
|
+
_context.next = 18;
|
|
5550
|
+
return api.quoteAhPrice(DOT_MULTILOCATION, toMl, feeDotShifted);
|
|
5551
|
+
case 18:
|
|
5552
|
+
feeConverted = _context.sent;
|
|
5553
|
+
if (feeConverted) {
|
|
5554
|
+
_context.next = 21;
|
|
5555
|
+
break;
|
|
5556
|
+
}
|
|
5557
|
+
throw new Error("Pool DOT -> ".concat(asset.symbol, " not found."));
|
|
5558
|
+
case 21:
|
|
5559
|
+
if (!(BigInt(asset.amount) - feeConverted < 0)) {
|
|
5560
|
+
_context.next = 23;
|
|
5561
|
+
break;
|
|
5562
|
+
}
|
|
5563
|
+
throw new Error("Insufficient balance. Fee: ".concat(feeConverted, ", Amount: ").concat(asset.amount));
|
|
5564
|
+
case 23:
|
|
5565
|
+
feeConvertedPadded = feeConverted * 3n / 2n; // increases fee by 50%
|
|
5566
|
+
return _context.abrupt("return", createExecuteXcm(input, dryRunResult.weight, feeConvertedPadded));
|
|
5567
|
+
case 25:
|
|
5568
|
+
case "end":
|
|
5569
|
+
return _context.stop();
|
|
5570
|
+
}
|
|
5571
|
+
}, _callee, this);
|
|
5572
|
+
}));
|
|
5573
|
+
function handleExecuteTransfer(_x) {
|
|
5574
|
+
return _handleExecuteTransfer.apply(this, arguments);
|
|
5575
|
+
}
|
|
5576
|
+
return handleExecuteTransfer;
|
|
5577
|
+
}()
|
|
5313
5578
|
}, {
|
|
5314
5579
|
key: "transferPolkadotXCM",
|
|
5315
5580
|
value: function transferPolkadotXCM(input) {
|
|
5316
5581
|
var scenario = input.scenario,
|
|
5317
5582
|
asset = input.asset,
|
|
5318
|
-
destination = input.destination
|
|
5583
|
+
destination = input.destination,
|
|
5584
|
+
feeAsset = input.feeAsset;
|
|
5585
|
+
if (feeAsset) {
|
|
5586
|
+
if (!isAssetEqual(feeAsset, asset)) {
|
|
5587
|
+
throw new InvalidCurrencyError("Fee asset does not match transfer asset.");
|
|
5588
|
+
}
|
|
5589
|
+
return Promise.resolve(this.handleExecuteTransfer(input));
|
|
5590
|
+
}
|
|
5319
5591
|
if (destination === 'AssetHubKusama') {
|
|
5320
5592
|
return Promise.resolve(this.handleBridgeTransfer(input, 'Kusama'));
|
|
5321
5593
|
}
|
|
@@ -6735,7 +7007,10 @@ var Polimec$1 = /*#__PURE__*/function (_ParachainNode) {
|
|
|
6735
7007
|
section: 'transfer_assets_using_type_and_then',
|
|
6736
7008
|
parameters: {
|
|
6737
7009
|
dest: this.createPolkadotXcmHeader('RelayToPara', version, destination, getParaId('AssetHubPolkadot')),
|
|
6738
|
-
assets: _defineProperty({}, version, [createMultiAsset(version, asset.amount,
|
|
7010
|
+
assets: _defineProperty({}, version, [createMultiAsset(version, asset.amount, {
|
|
7011
|
+
parents: Parents.ZERO,
|
|
7012
|
+
interior: 'Here'
|
|
7013
|
+
})]),
|
|
6739
7014
|
assets_transfer_type: 'Teleport',
|
|
6740
7015
|
remote_fees_id: _defineProperty({}, version, {
|
|
6741
7016
|
Concrete: {
|
|
@@ -19030,13 +19305,13 @@ var getBalanceForeignPolkadotXcm = /*#__PURE__*/function () {
|
|
|
19030
19305
|
_context.next = 12;
|
|
19031
19306
|
break;
|
|
19032
19307
|
}
|
|
19033
|
-
if (!(asset.
|
|
19308
|
+
if (!(asset.multiLocation === undefined)) {
|
|
19034
19309
|
_context.next = 11;
|
|
19035
19310
|
break;
|
|
19036
19311
|
}
|
|
19037
|
-
throw new InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no
|
|
19312
|
+
throw new InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no multi-location"));
|
|
19038
19313
|
case 11:
|
|
19039
|
-
return _context.abrupt("return", api.
|
|
19314
|
+
return _context.abrupt("return", api.getAssetHubForeignBalance(address, asset.multiLocation));
|
|
19040
19315
|
case 12:
|
|
19041
19316
|
if (!(node === 'AssetHubPolkadot')) {
|
|
19042
19317
|
_context.next = 18;
|
|
@@ -19846,59 +20121,6 @@ var createApiInstanceForNode = /*#__PURE__*/function () {
|
|
|
19846
20121
|
};
|
|
19847
20122
|
}();
|
|
19848
20123
|
|
|
19849
|
-
var isPrimitive = function isPrimitive(obj) {
|
|
19850
|
-
return obj !== Object(obj);
|
|
19851
|
-
};
|
|
19852
|
-
var _deepEqual = function deepEqual(obj1, obj2) {
|
|
19853
|
-
if (obj1 === obj2) return true;
|
|
19854
|
-
if (isPrimitive(obj1) && isPrimitive(obj2)) return obj1 === obj2;
|
|
19855
|
-
if (_typeof(obj1) !== 'object' || obj1 === null || _typeof(obj2) !== 'object' || obj2 === null) {
|
|
19856
|
-
return false;
|
|
19857
|
-
}
|
|
19858
|
-
if (Array.isArray(obj1) !== Array.isArray(obj2)) {
|
|
19859
|
-
return false;
|
|
19860
|
-
}
|
|
19861
|
-
var obj1Keys = Object.keys(obj1).map(function (key) {
|
|
19862
|
-
return key.toLowerCase();
|
|
19863
|
-
});
|
|
19864
|
-
var obj2Keys = Object.keys(obj2).map(function (key) {
|
|
19865
|
-
return key.toLowerCase();
|
|
19866
|
-
});
|
|
19867
|
-
if (obj1Keys.length !== obj2Keys.length) return false;
|
|
19868
|
-
var _iterator = _createForOfIteratorHelper(obj1Keys),
|
|
19869
|
-
_step;
|
|
19870
|
-
try {
|
|
19871
|
-
var _loop = function _loop() {
|
|
19872
|
-
var key = _step.value;
|
|
19873
|
-
var keyInObj2 = obj2Keys.find(function (k) {
|
|
19874
|
-
return k === key;
|
|
19875
|
-
});
|
|
19876
|
-
if (!keyInObj2) return {
|
|
19877
|
-
v: false
|
|
19878
|
-
};
|
|
19879
|
-
var obj1Value = obj1[Object.keys(obj1).find(function (k) {
|
|
19880
|
-
return k.toLowerCase() === key;
|
|
19881
|
-
})];
|
|
19882
|
-
var obj2Value = obj2[Object.keys(obj2).find(function (k) {
|
|
19883
|
-
return k.toLowerCase() === key;
|
|
19884
|
-
})];
|
|
19885
|
-
if (!_deepEqual(obj1Value, obj2Value)) return {
|
|
19886
|
-
v: false
|
|
19887
|
-
};
|
|
19888
|
-
},
|
|
19889
|
-
_ret;
|
|
19890
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
19891
|
-
_ret = _loop();
|
|
19892
|
-
if (_ret) return _ret.v;
|
|
19893
|
-
}
|
|
19894
|
-
} catch (err) {
|
|
19895
|
-
_iterator.e(err);
|
|
19896
|
-
} finally {
|
|
19897
|
-
_iterator.f();
|
|
19898
|
-
}
|
|
19899
|
-
return true;
|
|
19900
|
-
};
|
|
19901
|
-
|
|
19902
20124
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
19903
20125
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
19904
20126
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
@@ -20421,6 +20643,19 @@ var GeneralBuilder = /*#__PURE__*/function () {
|
|
|
20421
20643
|
method: method
|
|
20422
20644
|
}));
|
|
20423
20645
|
}
|
|
20646
|
+
/**
|
|
20647
|
+
* Optional fee asset for the transaction.
|
|
20648
|
+
*
|
|
20649
|
+
* @param currency - The currency to be used for the fee.
|
|
20650
|
+
* @returns An instance of the Builder
|
|
20651
|
+
*/
|
|
20652
|
+
}, {
|
|
20653
|
+
key: "feeAsset",
|
|
20654
|
+
value: function feeAsset(currency) {
|
|
20655
|
+
return new GeneralBuilder(this.api, this.batchManager, _objectSpread2(_objectSpread2({}, this._options), {}, {
|
|
20656
|
+
feeAsset: currency
|
|
20657
|
+
}));
|
|
20658
|
+
}
|
|
20424
20659
|
/**
|
|
20425
20660
|
* Adds the transfer transaction to the batch.
|
|
20426
20661
|
*
|
|
@@ -20563,4 +20798,4 @@ var Builder = function Builder(api) {
|
|
|
20563
20798
|
return new GeneralBuilder(api, new BatchTransactionManager());
|
|
20564
20799
|
};
|
|
20565
20800
|
|
|
20566
|
-
export { AssetClaimBuilder, BatchMode, Builder, DuplicateAssetError, DuplicateAssetIdError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, Foreign, ForeignAbstract, GeneralBuilder, IncompatibleNodesError, InvalidAddressError, InvalidCurrencyError, NODES_WITH_RELAY_CHAINS, NODES_WITH_RELAY_CHAINS_DOT_KSM, NODE_NAMES, NODE_NAMES_DOT_KSM, Native, NoXCMSupportImplementedError, NodeNotSupportedError, Override, Parents, PolkadotXcmError, SUPPORTED_PALLETS, ScenarioNotSupportedError, Version, XTokensError, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, createApiInstanceForNode, createX1Payload, _deepEqual as deepEqual, determineRelayChain, findAssetById, findAssetByMultiLocation, findAssetBySymbol, findBestMatches, generateAddressMultiLocationV4, generateAddressPayload, getAllAssetsSymbols, getAssetBalance, getAssetBalanceInternal, getAssetBySymbolOrId, getAssetDecimals, getAssetId, getAssetMultiLocation, getAssets, getAssetsObject, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getDefaultPallet, getDryRun, getExistentialDeposit, getFees, getMaxForeignTransferableAmount, getMaxNativeTransferableAmount, getNativeAssetSymbol, getNativeAssets, getNode, getNodeConfig, getNodeProviders, getOriginFeeDetails, getOriginFeeDetailsInternal, getOtherAssets, getParaEthTransferFees, getParaId, getRelayChainSymbol, getSupportedAssets, getSupportedPallets, getSupportedPalletsDetails, getTNode, getTransferInfo, getTransferableAmount, hasDryRunSupport, hasSupportForAsset, isEthersContract, isEthersSigner, isForeignAsset, isNodeEvm, isOverrideMultiLocationSpecifier, isRelayChain, isSymbolSpecifier, normalizeSymbol, resolveModuleError, resolveParaId, send, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, validateAddress, verifyEdOnDestination };
|
|
20801
|
+
export { AssetClaimBuilder, BatchMode, Builder, DuplicateAssetError, DuplicateAssetIdError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, Foreign, ForeignAbstract, GeneralBuilder, IncompatibleNodesError, InvalidAddressError, InvalidCurrencyError, NODES_WITH_RELAY_CHAINS, NODES_WITH_RELAY_CHAINS_DOT_KSM, NODE_NAMES, NODE_NAMES_DOT_KSM, Native, NoXCMSupportImplementedError, NodeNotSupportedError, Override, Parents, PolkadotXcmError, SUPPORTED_PALLETS, ScenarioNotSupportedError, Version, XTokensError, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, createApiInstanceForNode, createX1Payload, _deepEqual as deepEqual, determineRelayChain, findAssetById, findAssetByMultiLocation, findAssetBySymbol, findBestMatches, generateAddressMultiLocationV4, generateAddressPayload, getAllAssetsSymbols, getAssetBalance, getAssetBalanceInternal, getAssetBySymbolOrId, getAssetDecimals, getAssetId, getAssetMultiLocation, getAssets, getAssetsObject, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getDefaultPallet, getDryRun, getExistentialDeposit, getFees, getMaxForeignTransferableAmount, getMaxNativeTransferableAmount, getNativeAssetSymbol, getNativeAssets, getNode, getNodeConfig, getNodeProviders, getOriginFeeDetails, getOriginFeeDetailsInternal, getOtherAssets, getParaEthTransferFees, getParaId, getRelayChainSymbol, getSupportedAssets, getSupportedPallets, getSupportedPalletsDetails, getTNode, getTransferInfo, getTransferableAmount, hasDryRunSupport, hasSupportForAsset, isAssetEqual, isEthersContract, isEthersSigner, isForeignAsset, isNodeEvm, isOverrideMultiLocationSpecifier, isRelayChain, isSymbolSpecifier, normalizeSymbol, resolveModuleError, resolveParaId, send, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, transformMultiLocation, validateAddress, verifyEdOnDestination };
|