@paraspell/sdk-core 10.4.8 → 10.4.9

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 CHANGED
@@ -68,7 +68,7 @@ function _defineProperties(e, r) {
68
68
  }
69
69
  }
70
70
  function _createClass(e, r, t) {
71
- return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
71
+ return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
72
72
  writable: false
73
73
  }), e;
74
74
  }
@@ -704,6 +704,23 @@ var MAX_WEIGHT = {
704
704
  refTime: MAX_U64
705
705
  };
706
706
 
707
+ var ERR_MULTILOCATION_DEST_NOT_SUPPORTED = '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.';
708
+
709
+ var addXcmVersionHeader = function addXcmVersionHeader(obj, version) {
710
+ return _defineProperty({}, version, obj);
711
+ };
712
+
713
+ var assertToIsString = function assertToIsString(to, overrideMsg) {
714
+ if (sdkCommon.isTMultiLocation(to)) {
715
+ throw new InvalidParameterError(overrideMsg !== null && overrideMsg !== void 0 ? overrideMsg : 'Multi-Location destination is not supported for XCM fee calculation.');
716
+ }
717
+ };
718
+ var assertAddressIsString = function assertAddressIsString(address) {
719
+ if (sdkCommon.isTMultiLocation(address)) {
720
+ throw new InvalidParameterError('Multi-Location address is not supported for XCM fee calculation.');
721
+ }
722
+ };
723
+
707
724
  var AssetHubPolkadot$1 = {
708
725
  name: "AssetHub",
709
726
  info: "PolkadotAssetHub",
@@ -2433,66 +2450,6 @@ var determineRelayChain = function determineRelayChain(node) {
2433
2450
  return assets.getRelayChainSymbol(node) === 'KSM' ? 'Kusama' : 'Polkadot';
2434
2451
  };
2435
2452
 
2436
- var findParachainJunction = function findParachainJunction(multilocation) {
2437
- var interior = multilocation.interior;
2438
- if (interior === 'Here') {
2439
- return null;
2440
- }
2441
- for (var key in interior) {
2442
- var junctions = interior[key];
2443
- if (Array.isArray(junctions)) {
2444
- var _iterator = _createForOfIteratorHelper(junctions),
2445
- _step;
2446
- try {
2447
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
2448
- var junction = _step.value;
2449
- if ('Parachain' in junction) {
2450
- return Number(junction.Parachain);
2451
- }
2452
- }
2453
- } catch (err) {
2454
- _iterator.e(err);
2455
- } finally {
2456
- _iterator.f();
2457
- }
2458
- } else if (_typeof(junctions) === 'object' && junctions !== null && 'Parachain' in junctions) {
2459
- return Number(junctions.Parachain);
2460
- }
2461
- }
2462
- return null;
2463
- };
2464
-
2465
- var constructRelayToParaParameters = function constructRelayToParaParameters(_ref, version) {
2466
- var api = _ref.api,
2467
- destination = _ref.destination,
2468
- asset = _ref.asset,
2469
- address = _ref.address,
2470
- paraIdTo = _ref.paraIdTo;
2471
- var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
2472
- includeFee: false
2473
- },
2474
- includeFee = _ref2.includeFee;
2475
- var paraId = resolveParaId(paraIdTo, destination);
2476
- return _objectSpread2({
2477
- dest: createVersionedDestination('RelayToPara', version, destination, paraId),
2478
- beneficiary: createVersionedBeneficiary({
2479
- api: api,
2480
- scenario: 'RelayToPara',
2481
- pallet: null,
2482
- recipientAddress: address,
2483
- version: version,
2484
- paraId: paraId
2485
- }),
2486
- assets: createVersionedMultiAssets(version, asset.amount, {
2487
- parents: sdkCommon.Parents.ZERO,
2488
- interior: 'Here'
2489
- }),
2490
- fee_asset_item: DEFAULT_FEE_ASSET
2491
- }, includeFee && {
2492
- weight_limit: 'Unlimited'
2493
- });
2494
- };
2495
-
2496
2453
  var createMultiAsset = function createMultiAsset(version, amount, multiLocation) {
2497
2454
  if (version === sdkCommon.Version.V4 || version === sdkCommon.Version.V5) {
2498
2455
  return {
@@ -2511,83 +2468,28 @@ var createMultiAsset = function createMultiAsset(version, amount, multiLocation)
2511
2468
  }
2512
2469
  };
2513
2470
  };
2514
- var addXcmVersionHeader = function addXcmVersionHeader(obj, version) {
2515
- return _defineProperty({}, version, obj);
2516
- };
2517
- var extractVersionFromHeader = function extractVersionFromHeader(versionHeader) {
2518
- var keys = Object.keys(versionHeader);
2519
- if (keys.length !== 1) {
2520
- throw new InvalidParameterError('Invalid version header: expected exactly one key.');
2521
- }
2522
- var version = keys[0];
2523
- var value = versionHeader[version];
2524
- if (value === undefined) {
2525
- throw new InvalidParameterError('Invalid version header: value is undefined.');
2526
- }
2527
- return [version, value];
2471
+ var createVersionedMultiAssets = function createVersionedMultiAssets(version, amount, multiLocation) {
2472
+ var multiAsset = createMultiAsset(version, amount, multiLocation);
2473
+ return addXcmVersionHeader([multiAsset], version);
2528
2474
  };
2475
+
2529
2476
  var maybeOverrideMultiAssets = function maybeOverrideMultiAssets(version, amount, multiAssets, overriddenCurrency) {
2530
2477
  if (!overriddenCurrency) {
2531
2478
  return multiAssets;
2532
2479
  }
2533
2480
  return sdkCommon.isTMultiLocation(overriddenCurrency) ? [createMultiAsset(version, amount, overriddenCurrency)] : overriddenCurrency;
2534
2481
  };
2535
- var createVersionedMultiAssets = function createVersionedMultiAssets(version, amount, multiLocation) {
2536
- var multiAssets = createMultiAsset(version, amount, multiLocation);
2537
- return addXcmVersionHeader([multiAssets], version);
2538
- };
2539
- var createDestination = function createDestination(scenario, version, destination, nodeId, junction, parents) {
2540
- var parentsResolved = parents !== null && parents !== void 0 ? parents : scenario === 'RelayToPara' ? sdkCommon.Parents.ZERO : sdkCommon.Parents.ONE;
2541
- var interior = scenario === 'ParaToRelay' ? 'Here' : createX1Payload(version, junction !== null && junction !== void 0 ? junction : {
2542
- Parachain: nodeId
2543
- });
2544
- var isMultiLocationDestination = sdkCommon.isTMultiLocation(destination);
2545
- return isMultiLocationDestination ? destination : {
2546
- parents: parentsResolved,
2547
- interior: interior
2548
- };
2549
- };
2550
- var createVersionedDestination = function createVersionedDestination(scenario, version, destination, nodeId, junction, parents) {
2551
- var plainDestination = createDestination(scenario, version, destination, nodeId, junction, parents);
2552
- return addXcmVersionHeader(plainDestination, version);
2553
- };
2554
- var createBridgePolkadotXcmDest = function createBridgePolkadotXcmDest(version, ecosystem, destination, nodeId) {
2555
- var multiLocation = {
2556
- parents: sdkCommon.Parents.TWO,
2557
- interior: {
2558
- X2: [{
2559
- GlobalConsensus: ecosystem
2560
- }, {
2561
- Parachain: nodeId
2562
- }]
2563
- }
2564
- };
2565
- var isMultiLocationDestination = sdkCommon.isTMultiLocation(destination);
2566
- return addXcmVersionHeader(isMultiLocationDestination ? destination : multiLocation, version);
2567
- };
2568
- var resolveTNodeFromMultiLocation = function resolveTNodeFromMultiLocation(relayChain, multiLocation) {
2569
- var _NODE_NAMES_DOT_KSM$f;
2570
- var parachainId = findParachainJunction(multiLocation);
2571
- if (parachainId === null) {
2572
- throw new InvalidParameterError('Parachain ID not found in destination multi location.');
2573
- }
2574
- var node = (_NODE_NAMES_DOT_KSM$f = sdkCommon.NODE_NAMES_DOT_KSM.find(function (nodeName) {
2575
- return getParaId(nodeName) === parachainId && determineRelayChain(nodeName) === relayChain;
2576
- })) !== null && _NODE_NAMES_DOT_KSM$f !== void 0 ? _NODE_NAMES_DOT_KSM$f : null;
2577
- if (node === null) {
2578
- throw new InvalidParameterError('Node with specified paraId not found in destination multi location.');
2482
+ var maybeOverrideMultiAsset = function maybeOverrideMultiAsset(version, amount, multiAsset, overriddenCurrency) {
2483
+ if (!overriddenCurrency) {
2484
+ return multiAsset;
2579
2485
  }
2580
- return node;
2581
- };
2582
- var throwUnsupportedCurrency = function throwUnsupportedCurrency(currency, node) {
2583
- var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
2584
- isDestination: false
2585
- },
2586
- isDestination = _ref2.isDestination;
2587
- if ('multilocation' in currency) {
2588
- throw new assets.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), ")}."));
2486
+ if (Array.isArray(overriddenCurrency)) {
2487
+ if (overriddenCurrency.length !== 1) {
2488
+ throw new InvalidParameterError('Expected a single TMultiAsset in overriddenCurrency array.');
2489
+ }
2490
+ return overriddenCurrency[0];
2589
2491
  }
2590
- throw new assets.InvalidCurrencyError("".concat(isDestination ? 'Destination' : 'Origin', " node ").concat(node, " does not support currency ").concat(JSON.stringify(currency, sdkCommon.replaceBigInt), "."));
2492
+ return createMultiAsset(version, amount, overriddenCurrency);
2591
2493
  };
2592
2494
 
2593
2495
  var resolveMultiLocationFromDest = function resolveMultiLocationFromDest(destination, asset) {
@@ -2653,12 +2555,13 @@ var getModifiedCurrencySelection = function getModifiedCurrencySelection(input)
2653
2555
  return createDefaultCurrencySelection(input);
2654
2556
  };
2655
2557
 
2656
- var getXTokensParameters = function getXTokensParameters(isMultiAssetTransfer, currencySelection, addressSelection, amount, fees, overriddenAsset) {
2558
+ var getXTokensParameters = function getXTokensParameters(isMultiAssetTransfer, currencySelection, destLocation, amount, fees, version, overriddenAsset) {
2559
+ var versionedDestLocation = addXcmVersionHeader(destLocation, version);
2657
2560
  if (!isMultiAssetTransfer) {
2658
2561
  return {
2659
2562
  currency_id: currencySelection,
2660
2563
  amount: BigInt(amount),
2661
- dest: addressSelection,
2564
+ dest: versionedDestLocation,
2662
2565
  dest_weight_limit: fees
2663
2566
  };
2664
2567
  }
@@ -2671,7 +2574,7 @@ var getXTokensParameters = function getXTokensParameters(isMultiAssetTransfer, c
2671
2574
  return _objectSpread2(_objectSpread2(_defineProperty({}, assetKey, currencySelection), isOverriddenMultiAssets && {
2672
2575
  fee_item: feeIndexWithFallback
2673
2576
  }), {}, {
2674
- dest: addressSelection,
2577
+ dest: versionedDestLocation,
2675
2578
  dest_weight_limit: fees
2676
2579
  });
2677
2580
  };
@@ -2695,14 +2598,15 @@ var getXTokensMethod = function getXTokensMethod(useMultiAsset, overriddenAsset)
2695
2598
  };
2696
2599
  var buildXTokensCall = function buildXTokensCall(input, currencySelection, fees) {
2697
2600
  var overriddenAsset = input.overriddenAsset,
2698
- addressSelection = input.addressSelection,
2601
+ destLocation = input.destLocation,
2699
2602
  asset = input.asset,
2700
2603
  pallet = input.pallet,
2604
+ version = input.version,
2701
2605
  methodOverride = input.method;
2702
2606
  var useMultiAsset = shouldUseMultiAssetTransfer(input);
2703
2607
  var modifiedCurrencySelection = useMultiAsset ? getModifiedCurrencySelection(input) : currencySelection;
2704
2608
  var method = getXTokensMethod(useMultiAsset, overriddenAsset);
2705
- var parameters = getXTokensParameters(useMultiAsset, modifiedCurrencySelection, addressSelection, asset.amount, fees, overriddenAsset);
2609
+ var parameters = getXTokensParameters(useMultiAsset, modifiedCurrencySelection, destLocation, asset.amount, fees, version, overriddenAsset);
2706
2610
  return {
2707
2611
  module: pallet !== null && pallet !== void 0 ? pallet : 'XTokens',
2708
2612
  method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
@@ -2710,22 +2614,129 @@ var buildXTokensCall = function buildXTokensCall(input, currencySelection, fees)
2710
2614
  };
2711
2615
  };
2712
2616
 
2713
- var ERR_MULTILOCATION_DEST_NOT_SUPPORTED = '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.';
2714
- var validateDestination$1 = function validateDestination(destination) {
2715
- var isMultiLocationDestination = _typeof(destination) === 'object';
2716
- if (isMultiLocationDestination) {
2717
- throw new InvalidParameterError(ERR_MULTILOCATION_DEST_NOT_SUPPORTED);
2718
- }
2719
- };
2617
+ // Contains basic structure of xTokens call
2720
2618
  var transferXTokens = function transferXTokens(input, currencySelection) {
2721
2619
  var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_FEE;
2722
2620
  var api = input.api,
2723
2621
  destination = input.destination;
2724
- validateDestination$1(destination);
2622
+ assertToIsString(destination, ERR_MULTILOCATION_DEST_NOT_SUPPORTED);
2725
2623
  var call = buildXTokensCall(input, currencySelection, fees);
2726
2624
  return api.callTxMethod(call);
2727
2625
  };
2728
2626
 
2627
+ var findParachainJunction = function findParachainJunction(multilocation) {
2628
+ var interior = multilocation.interior;
2629
+ if (interior === 'Here') {
2630
+ return null;
2631
+ }
2632
+ for (var key in interior) {
2633
+ var junctions = interior[key];
2634
+ if (Array.isArray(junctions)) {
2635
+ var _iterator = _createForOfIteratorHelper(junctions),
2636
+ _step;
2637
+ try {
2638
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
2639
+ var junction = _step.value;
2640
+ if ('Parachain' in junction) {
2641
+ return Number(junction.Parachain);
2642
+ }
2643
+ }
2644
+ } catch (err) {
2645
+ _iterator.e(err);
2646
+ } finally {
2647
+ _iterator.f();
2648
+ }
2649
+ } else if (_typeof(junctions) === 'object' && junctions !== null && 'Parachain' in junctions) {
2650
+ return Number(junctions.Parachain);
2651
+ }
2652
+ }
2653
+ return null;
2654
+ };
2655
+
2656
+ var constructRelayToParaParameters = function constructRelayToParaParameters(_ref, version) {
2657
+ var api = _ref.api,
2658
+ destination = _ref.destination,
2659
+ asset = _ref.asset,
2660
+ address = _ref.address,
2661
+ paraIdTo = _ref.paraIdTo;
2662
+ var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
2663
+ includeFee: false
2664
+ },
2665
+ includeFee = _ref2.includeFee;
2666
+ var paraId = resolveParaId(paraIdTo, destination);
2667
+ return _objectSpread2({
2668
+ dest: createVersionedDestination('RelayToPara', version, destination, paraId),
2669
+ beneficiary: createVersionedBeneficiary({
2670
+ api: api,
2671
+ scenario: 'RelayToPara',
2672
+ pallet: null,
2673
+ recipientAddress: address,
2674
+ version: version,
2675
+ paraId: paraId
2676
+ }),
2677
+ assets: createVersionedMultiAssets(version, asset.amount, {
2678
+ parents: sdkCommon.Parents.ZERO,
2679
+ interior: 'Here'
2680
+ }),
2681
+ fee_asset_item: DEFAULT_FEE_ASSET
2682
+ }, includeFee && {
2683
+ weight_limit: 'Unlimited'
2684
+ });
2685
+ };
2686
+
2687
+ var createDestination = function createDestination(scenario, version, destination, nodeId, junction, parents) {
2688
+ var parentsResolved = parents !== null && parents !== void 0 ? parents : scenario === 'RelayToPara' ? sdkCommon.Parents.ZERO : sdkCommon.Parents.ONE;
2689
+ var interior = scenario === 'ParaToRelay' ? 'Here' : createX1Payload(version, junction !== null && junction !== void 0 ? junction : {
2690
+ Parachain: nodeId
2691
+ });
2692
+ var isMultiLocationDestination = sdkCommon.isTMultiLocation(destination);
2693
+ return isMultiLocationDestination ? destination : {
2694
+ parents: parentsResolved,
2695
+ interior: interior
2696
+ };
2697
+ };
2698
+ var createVersionedDestination = function createVersionedDestination(scenario, version, destination, nodeId, junction, parents) {
2699
+ var plainDestination = createDestination(scenario, version, destination, nodeId, junction, parents);
2700
+ return addXcmVersionHeader(plainDestination, version);
2701
+ };
2702
+ var createBridgeDestination = function createBridgeDestination(ecosystem, destination, nodeId) {
2703
+ var multiLocation = {
2704
+ parents: sdkCommon.Parents.TWO,
2705
+ interior: {
2706
+ X2: [{
2707
+ GlobalConsensus: ecosystem
2708
+ }, {
2709
+ Parachain: nodeId
2710
+ }]
2711
+ }
2712
+ };
2713
+ return sdkCommon.isTMultiLocation(destination) ? destination : multiLocation;
2714
+ };
2715
+ var resolveTNodeFromMultiLocation = function resolveTNodeFromMultiLocation(relayChain, multiLocation) {
2716
+ var _NODE_NAMES_DOT_KSM$f;
2717
+ var parachainId = findParachainJunction(multiLocation);
2718
+ if (parachainId === null) {
2719
+ throw new InvalidParameterError('Parachain ID not found in destination multi location.');
2720
+ }
2721
+ var node = (_NODE_NAMES_DOT_KSM$f = sdkCommon.NODE_NAMES_DOT_KSM.find(function (nodeName) {
2722
+ return getParaId(nodeName) === parachainId && determineRelayChain(nodeName) === relayChain;
2723
+ })) !== null && _NODE_NAMES_DOT_KSM$f !== void 0 ? _NODE_NAMES_DOT_KSM$f : null;
2724
+ if (node === null) {
2725
+ throw new InvalidParameterError('Node with specified paraId not found in destination multi location.');
2726
+ }
2727
+ return node;
2728
+ };
2729
+ var throwUnsupportedCurrency = function throwUnsupportedCurrency(currency, node) {
2730
+ var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
2731
+ isDestination: false
2732
+ },
2733
+ isDestination = _ref.isDestination;
2734
+ if ('multilocation' in currency) {
2735
+ throw new assets.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), ")}."));
2736
+ }
2737
+ throw new assets.InvalidCurrencyError("".concat(isDestination ? 'Destination' : 'Origin', " node ").concat(node, " does not support currency ").concat(JSON.stringify(currency, sdkCommon.replaceBigInt), "."));
2738
+ };
2739
+
2729
2740
  /**
2730
2741
  * Retrieves the node name corresponding to a specified parachain ID.
2731
2742
  *
@@ -5910,7 +5921,8 @@ var ParachainNode = /*#__PURE__*/function () {
5910
5921
  input = {
5911
5922
  api: api,
5912
5923
  asset: asset,
5913
- addressSelection: createVersionedBeneficiary({
5924
+ // Refactor this
5925
+ destLocation: createBeneficiary({
5914
5926
  api: api,
5915
5927
  scenario: scenario,
5916
5928
  pallet: 'XTokens',
@@ -5944,7 +5956,8 @@ var ParachainNode = /*#__PURE__*/function () {
5944
5956
  api: api,
5945
5957
  asset: asset,
5946
5958
  recipientAddress: address,
5947
- paraId: paraId,
5959
+ paraIdTo: paraId,
5960
+ scenario: scenario,
5948
5961
  origin: this.node,
5949
5962
  destination: destination,
5950
5963
  overriddenAsset: overriddenAsset,
@@ -5958,8 +5971,8 @@ var ParachainNode = /*#__PURE__*/function () {
5958
5971
  }
5959
5972
  _options = {
5960
5973
  api: api,
5961
- header: this.createVersionedDestination(scenario, version, destination, paraId),
5962
- addressSelection: createVersionedBeneficiary({
5974
+ destLocation: createDestination(scenario, version, destination, paraId),
5975
+ beneficiaryLocation: createBeneficiary({
5963
5976
  api: api,
5964
5977
  scenario: scenario,
5965
5978
  pallet: 'PolkadotXcm',
@@ -5968,7 +5981,7 @@ var ParachainNode = /*#__PURE__*/function () {
5968
5981
  paraId: paraId
5969
5982
  }),
5970
5983
  address: address,
5971
- currencySelection: this.createCurrencySpec(asset.amount, scenario, version, asset, overriddenAsset !== undefined),
5984
+ multiAsset: this.createCurrencySpec(asset.amount, scenario, version, asset, overriddenAsset !== undefined),
5972
5985
  overriddenAsset: overriddenAsset,
5973
5986
  asset: asset,
5974
5987
  currency: currency,
@@ -6039,16 +6052,11 @@ var ParachainNode = /*#__PURE__*/function () {
6039
6052
  }, {
6040
6053
  key: "createCurrencySpec",
6041
6054
  value: function createCurrencySpec(amount, scenario, version, _asset, _isOverridenAsset) {
6042
- return createVersionedMultiAssets(version, amount, {
6055
+ return createMultiAsset(version, amount, {
6043
6056
  parents: scenario === 'ParaToRelay' ? sdkCommon.Parents.ONE : sdkCommon.Parents.ZERO,
6044
6057
  interior: 'Here'
6045
6058
  });
6046
6059
  }
6047
- }, {
6048
- key: "createVersionedDestination",
6049
- value: function createVersionedDestination$1(scenario, version, destination, paraId) {
6050
- return createVersionedDestination(scenario, version, destination, paraId);
6051
- }
6052
6060
  }, {
6053
6061
  key: "getNativeAssetSymbol",
6054
6062
  value: function getNativeAssetSymbol() {
@@ -6165,7 +6173,7 @@ var ParachainNode = /*#__PURE__*/function () {
6165
6173
  module: 'PolkadotXcm',
6166
6174
  method: 'transfer_assets_using_type_and_then',
6167
6175
  parameters: {
6168
- dest: this.createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6176
+ dest: createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6169
6177
  assets: addXcmVersionHeader([].concat(_toConsumableArray(!feeAsset ? [createMultiAsset(version, PARA_TO_PARA_FEE_DOT, DOT_MULTILOCATION)] : []), [ethMultiAsset]), version),
6170
6178
  assets_transfer_type: 'DestinationReserve',
6171
6179
  remote_fees_id: addXcmVersionHeader((_feeAsset$multiLocati = feeAsset === null || feeAsset === void 0 ? void 0 : feeAsset.multiLocation) !== null && _feeAsset$multiLocati !== void 0 ? _feeAsset$multiLocati : DOT_MULTILOCATION, version),
@@ -6222,7 +6230,7 @@ var ParachainNode = /*#__PURE__*/function () {
6222
6230
  };
6223
6231
  return _context2.a(2, api.callTxMethod(call));
6224
6232
  }
6225
- }, _callee2, this);
6233
+ }, _callee2);
6226
6234
  }));
6227
6235
  function transferEthAssetViaAH(_x2) {
6228
6236
  return _transferEthAssetViaAH.apply(this, arguments);
@@ -6350,7 +6358,7 @@ var ParachainNode = /*#__PURE__*/function () {
6350
6358
  module: 'PolkadotXcm',
6351
6359
  method: 'transfer_assets_using_type_and_then',
6352
6360
  parameters: {
6353
- dest: this.createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6361
+ dest: createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6354
6362
  assets: addXcmVersionHeader([].concat(_toConsumableArray(!feeAsset ? [createMultiAsset(version, fee, DOT_MULTILOCATION)] : []), [ethMultiAsset]), version),
6355
6363
  assets_transfer_type: 'DestinationReserve',
6356
6364
  remote_fees_id: addXcmVersionHeader((_feeAsset$multiLocati2 = feeAsset === null || feeAsset === void 0 ? void 0 : feeAsset.multiLocation) !== null && _feeAsset$multiLocati2 !== void 0 ? _feeAsset$multiLocati2 : DOT_MULTILOCATION, version),
@@ -6435,46 +6443,35 @@ var Acala = /*#__PURE__*/function (_ParachainNode) {
6435
6443
  }]);
6436
6444
  }(ParachainNode);
6437
6445
 
6438
- var PolkadotXCMTransferImpl = /*#__PURE__*/function () {
6439
- function PolkadotXCMTransferImpl() {
6440
- _classCallCheck(this, PolkadotXCMTransferImpl);
6441
- }
6442
- return _createClass(PolkadotXCMTransferImpl, null, [{
6443
- key: "transferPolkadotXCM",
6444
- value: function transferPolkadotXCM(_ref, method) {
6445
- var api = _ref.api,
6446
- header = _ref.header,
6447
- asset = _ref.asset,
6448
- addressSelection = _ref.addressSelection,
6449
- currencySelection = _ref.currencySelection,
6450
- overriddenAsset = _ref.overriddenAsset,
6451
- pallet = _ref.pallet,
6452
- methodOverride = _ref.method;
6453
- var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
6454
- var _extractVersionFromHe = extractVersionFromHeader(currencySelection),
6455
- _extractVersionFromHe2 = _slicedToArray(_extractVersionFromHe, 2),
6456
- version = _extractVersionFromHe2[0],
6457
- multiAssets = _extractVersionFromHe2[1];
6458
- var resolvedMultiAssets = addXcmVersionHeader(maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset), version);
6459
- var feeAssetIndex = overriddenAsset === undefined || sdkCommon.isTMultiLocation(overriddenAsset) ? DEFAULT_FEE_ASSET : overriddenAsset.findIndex(function (asset) {
6460
- return asset.isFeeAsset;
6461
- });
6462
- var call = {
6463
- module: pallet !== null && pallet !== void 0 ? pallet : 'PolkadotXcm',
6464
- method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
6465
- parameters: _objectSpread2({
6466
- dest: header,
6467
- beneficiary: addressSelection,
6468
- assets: resolvedMultiAssets,
6469
- fee_asset_item: feeAssetIndex
6470
- }, fees !== undefined ? {
6471
- weight_limit: fees
6472
- } : {})
6473
- };
6474
- return api.callTxMethod(call);
6475
- }
6476
- }]);
6477
- }();
6446
+ var transferPolkadotXcm = function transferPolkadotXcm(_ref, method) {
6447
+ var api = _ref.api,
6448
+ destLocation = _ref.destLocation,
6449
+ asset = _ref.asset,
6450
+ beneficiaryLocation = _ref.beneficiaryLocation,
6451
+ multiAsset = _ref.multiAsset,
6452
+ overriddenAsset = _ref.overriddenAsset,
6453
+ pallet = _ref.pallet,
6454
+ version = _ref.version,
6455
+ methodOverride = _ref.method;
6456
+ var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
6457
+ var resolvedMultiAssets = maybeOverrideMultiAssets(version, asset.amount, [multiAsset], overriddenAsset);
6458
+ var feeAssetIndex = overriddenAsset === undefined || sdkCommon.isTMultiLocation(overriddenAsset) ? DEFAULT_FEE_ASSET : overriddenAsset.findIndex(function (asset) {
6459
+ return asset.isFeeAsset;
6460
+ });
6461
+ var call = {
6462
+ module: pallet !== null && pallet !== void 0 ? pallet : 'PolkadotXcm',
6463
+ method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
6464
+ parameters: _objectSpread2({
6465
+ dest: addXcmVersionHeader(destLocation, version),
6466
+ beneficiary: addXcmVersionHeader(beneficiaryLocation, version),
6467
+ assets: addXcmVersionHeader(resolvedMultiAssets, version),
6468
+ fee_asset_item: feeAssetIndex
6469
+ }, fees !== undefined ? {
6470
+ weight_limit: fees
6471
+ } : {})
6472
+ };
6473
+ return Promise.resolve(api.callTxMethod(call));
6474
+ };
6478
6475
 
6479
6476
  var Ajuna = /*#__PURE__*/function (_ParachainNode) {
6480
6477
  function Ajuna() {
@@ -6498,7 +6495,7 @@ var Ajuna = /*#__PURE__*/function (_ParachainNode) {
6498
6495
  }, {
6499
6496
  key: "transferPolkadotXCM",
6500
6497
  value: function transferPolkadotXCM(input) {
6501
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'transfer_assets', 'Unlimited'));
6498
+ return transferPolkadotXcm(input, 'transfer_assets', 'Unlimited');
6502
6499
  }
6503
6500
  }, {
6504
6501
  key: "canUseXTokens",
@@ -6626,7 +6623,7 @@ var AssetHubKusama = /*#__PURE__*/function (_ParachainNode) {
6626
6623
  // TESTED https://kusama.subscan.io/xcm_message/kusama-ddc2a48f0d8e0337832d7aae26f6c3053e1f4ffd
6627
6624
  // TESTED https://kusama.subscan.io/xcm_message/kusama-8e423130a4d8b61679af95dbea18a55124f99672
6628
6625
  if (destination === 'AssetHubPolkadot') {
6629
- return Promise.resolve(getNode('AssetHubPolkadot').handleBridgeTransfer(input, 'Polkadot'));
6626
+ return getNode('AssetHubPolkadot').handleBridgeTransfer(input, 'Polkadot');
6630
6627
  }
6631
6628
  var isSystemNode = !sdkCommon.isTMultiLocation(destination) && SYSTEM_NODES_KUSAMA.includes(destination);
6632
6629
  if (scenario === 'ParaToPara' && asset.symbol === 'KSM' && !assets.isForeignAsset(asset) && !isSystemNode) {
@@ -6636,7 +6633,7 @@ var AssetHubKusama = /*#__PURE__*/function (_ParachainNode) {
6636
6633
  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>}.');
6637
6634
  }
6638
6635
  var method = scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
6639
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
6636
+ return transferPolkadotXcm(input, method, 'Unlimited');
6640
6637
  }
6641
6638
  }, {
6642
6639
  key: "getRelayToParaOverrides",
@@ -6995,7 +6992,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
6995
6992
  module: 'PolkadotXcm',
6996
6993
  method: 'transfer_assets_using_type_and_then',
6997
6994
  parameters: {
6998
- dest: _this.createVersionedDestination(scenario, version, destination, paraIdTo),
6995
+ dest: createVersionedDestination(scenario, version, destination, paraIdTo),
6999
6996
  assets: addXcmVersionHeader([].concat(_toConsumableArray(useDOTAsFeeAsset ? [createMultiAsset(version, PARA_TO_PARA_FEE_DOT, DOT_MULTILOCATION)] : []), [createMultiAsset(version, asset.amount, asset.multiLocation)]), version),
7000
6997
  assets_transfer_type: 'LocalReserve',
7001
6998
  remote_fees_id: addXcmVersionHeader(useDOTAsFeeAsset ? DOT_MULTILOCATION : asset.multiLocation, version),
@@ -7022,8 +7019,8 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7022
7019
  paraIdTo = input.paraIdTo;
7023
7020
  if (targetChain === 'Kusama' && ((_asset$symbol = asset.symbol) === null || _asset$symbol === void 0 ? void 0 : _asset$symbol.toUpperCase()) === 'KSM' || targetChain === 'Polkadot' && ((_asset$symbol2 = asset.symbol) === null || _asset$symbol2 === void 0 ? void 0 : _asset$symbol2.toUpperCase()) === 'DOT') {
7024
7021
  var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7025
- header: createBridgePolkadotXcmDest(version, targetChain, destination, paraIdTo),
7026
- addressSelection: createVersionedBeneficiary({
7022
+ destLocation: createBridgeDestination(targetChain, destination, paraIdTo),
7023
+ beneficiaryLocation: createBeneficiary({
7027
7024
  api: api,
7028
7025
  scenario: scenario,
7029
7026
  pallet: 'PolkadotXcm',
@@ -7031,15 +7028,15 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7031
7028
  version: version,
7032
7029
  paraId: paraIdTo
7033
7030
  }),
7034
- currencySelection: createVersionedMultiAssets(version, asset.amount, asset.multiLocation)
7031
+ multiAsset: createMultiAsset(version, asset.amount, asset.multiLocation)
7035
7032
  });
7036
- return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited');
7033
+ return transferPolkadotXcm(modifiedInput, 'transfer_assets', 'Unlimited');
7037
7034
  } else if (targetChain === 'Polkadot' && ((_asset$symbol3 = asset.symbol) === null || _asset$symbol3 === void 0 ? void 0 : _asset$symbol3.toUpperCase()) === 'KSM' || targetChain === 'Kusama' && ((_asset$symbol4 = asset.symbol) === null || _asset$symbol4 === void 0 ? void 0 : _asset$symbol4.toUpperCase()) === 'DOT') {
7038
7035
  var _modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7039
- header: createBridgePolkadotXcmDest(version, targetChain, destination, paraIdTo),
7040
- currencySelection: createVersionedMultiAssets(version, asset.amount, DOT_MULTILOCATION)
7036
+ destLocation: createBridgeDestination(targetChain, destination, paraIdTo),
7037
+ multiAsset: createMultiAsset(version, asset.amount, DOT_MULTILOCATION)
7041
7038
  });
7042
- return PolkadotXCMTransferImpl.transferPolkadotXCM(_modifiedInput, 'limited_reserve_transfer_assets', 'Unlimited');
7039
+ return transferPolkadotXcm(_modifiedInput, 'limited_reserve_transfer_assets', 'Unlimited');
7043
7040
  }
7044
7041
  throw new assets.InvalidCurrencyError("Polkadot <-> Kusama bridge does not support currency ".concat(asset.symbol));
7045
7042
  }
@@ -7168,8 +7165,8 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7168
7165
  return _context2.a(2, this.handleEthBridgeNativeTransfer(input));
7169
7166
  case 5:
7170
7167
  modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7171
- header: createVersionedDestination(scenario, this.version, destination, paraIdTo, ETHEREUM_JUNCTION, sdkCommon.Parents.TWO),
7172
- addressSelection: createVersionedBeneficiary({
7168
+ destLocation: createDestination(scenario, this.version, destination, paraIdTo, ETHEREUM_JUNCTION, sdkCommon.Parents.TWO),
7169
+ beneficiaryLocation: createBeneficiary({
7173
7170
  api: api,
7174
7171
  scenario: scenario,
7175
7172
  pallet: 'PolkadotXcm',
@@ -7177,9 +7174,9 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7177
7174
  version: this.version,
7178
7175
  paraId: paraIdTo
7179
7176
  }),
7180
- currencySelection: createVersionedMultiAssets(version, asset.amount, asset.multiLocation)
7177
+ multiAsset: createMultiAsset(version, asset.amount, asset.multiLocation)
7181
7178
  });
7182
- return _context2.a(2, PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited'));
7179
+ return _context2.a(2, transferPolkadotXcm(modifiedInput, 'transfer_assets', 'Unlimited'));
7183
7180
  }
7184
7181
  }, _callee2, this);
7185
7182
  }));
@@ -7208,8 +7205,8 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7208
7205
  }
7209
7206
  };
7210
7207
  var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7211
- header: this.createVersionedDestination(scenario, version, destination, paraId),
7212
- addressSelection: createVersionedBeneficiary({
7208
+ destLocation: createDestination(scenario, version, destination, paraId),
7209
+ beneficiaryLocation: createBeneficiary({
7213
7210
  api: api,
7214
7211
  scenario: scenario,
7215
7212
  pallet: 'PolkadotXcm',
@@ -7217,9 +7214,9 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7217
7214
  version: version,
7218
7215
  paraId: paraId
7219
7216
  }),
7220
- currencySelection: createVersionedMultiAssets(version, asset.amount, customMultiLocation)
7217
+ multiAsset: createMultiAsset(version, asset.amount, customMultiLocation)
7221
7218
  });
7222
- return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'limited_teleport_assets', 'Unlimited');
7219
+ return transferPolkadotXcm(modifiedInput, 'limited_teleport_assets', 'Unlimited');
7223
7220
  }
7224
7221
  }, {
7225
7222
  key: "patchInput",
@@ -7230,7 +7227,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7230
7227
  version = _input$version === void 0 ? this.version : _input$version;
7231
7228
  if ((destination === 'Hydration' || destination === 'Polimec' || destination === 'Moonbeam' || destination === 'BifrostPolkadot') && asset.symbol === 'DOT') {
7232
7229
  return _objectSpread2(_objectSpread2({}, input), {}, {
7233
- currencySelection: createVersionedMultiAssets(version, asset.amount, DOT_MULTILOCATION)
7230
+ multiAsset: createMultiAsset(version, asset.amount, DOT_MULTILOCATION)
7234
7231
  });
7235
7232
  }
7236
7233
  return input;
@@ -7246,7 +7243,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7246
7243
  key: "handleExecuteTransfer",
7247
7244
  value: function () {
7248
7245
  var _handleExecuteTransfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(input) {
7249
- var api, senderAddress, asset, feeAsset, version, decimals, multiplier, base, scaledMultiplier, MIN_FEE, call, dryRunResult, paddedFee, xcm, weight;
7246
+ var api, senderAddress, asset, feeAsset, version, decimals, multiplier, base, scaledMultiplier, MIN_FEE, checkAmount, call, dryRunResult, paddedFee, xcm, weight;
7250
7247
  return _regenerator().w(function (_context3) {
7251
7248
  while (1) switch (_context3.n) {
7252
7249
  case 0:
@@ -7263,6 +7260,12 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7263
7260
  base = BigInt(Math.pow(10, decimals));
7264
7261
  scaledMultiplier = BigInt(Math.floor(multiplier * Math.pow(10, decimals)));
7265
7262
  MIN_FEE = base * scaledMultiplier / BigInt(Math.pow(10, decimals));
7263
+ checkAmount = function checkAmount(fee) {
7264
+ if (feeAsset && assets.isAssetEqual(asset, feeAsset) && BigInt(asset.amount) <= fee * 2n) {
7265
+ throw new InvalidParameterError("Asset amount ".concat(asset.amount, " is too low, please increase the amount or use a different fee asset."));
7266
+ }
7267
+ };
7268
+ checkAmount(MIN_FEE);
7266
7269
  call = createExecuteCall(createExecuteXcm(input, MIN_FEE, version), MAX_WEIGHT);
7267
7270
  _context3.n = 2;
7268
7271
  return api.getDryRunCall({
@@ -7280,6 +7283,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7280
7283
  throw new DryRunFailedError(dryRunResult.failureReason);
7281
7284
  case 3:
7282
7285
  paddedFee = dryRunResult.fee * 120n / 100n;
7286
+ checkAmount(paddedFee);
7283
7287
  xcm = createExecuteXcm(input, paddedFee, version);
7284
7288
  _context3.n = 4;
7285
7289
  return api.getXcmWeight(xcm);
@@ -7377,7 +7381,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7377
7381
  case 11:
7378
7382
  method = this.getMethod(scenario, destination);
7379
7383
  modifiedInput = this.patchInput(input);
7380
- return _context4.a(2, PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, method, 'Unlimited'));
7384
+ return _context4.a(2, transferPolkadotXcm(modifiedInput, method, 'Unlimited'));
7381
7385
  }
7382
7386
  }, _callee4, this);
7383
7387
  }));
@@ -7408,7 +7412,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7408
7412
  throw new assets.InvalidCurrencyError('Asset does not have a multiLocation defined');
7409
7413
  }
7410
7414
  var transformedMultiLocation = sdkCommon.hasJunction(multiLocation, 'Parachain', 1000) ? transformMultiLocation(multiLocation) : multiLocation;
7411
- return createVersionedMultiAssets(version, amount, transformedMultiLocation);
7415
+ return createMultiAsset(version, amount, transformedMultiLocation);
7412
7416
  } else {
7413
7417
  return _superPropGet(AssetHubPolkadot, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
7414
7418
  }
@@ -7459,7 +7463,7 @@ var Astar = /*#__PURE__*/function (_ParachainNode) {
7459
7463
  return _createClass(Astar, [{
7460
7464
  key: "transferPolkadotXCM",
7461
7465
  value: function transferPolkadotXCM(input) {
7462
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
7466
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
7463
7467
  }
7464
7468
  }, {
7465
7469
  key: "transferXTokens",
@@ -7599,8 +7603,8 @@ var BifrostPolkadot = /*#__PURE__*/function (_ParachainNode) {
7599
7603
  value: function transferToAssetHub(input) {
7600
7604
  var _getAssetId;
7601
7605
  var asset = input.asset;
7602
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
7603
- currencySelection: createVersionedMultiAssets(this.version, asset.amount, {
7606
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
7607
+ multiAsset: createMultiAsset(this.version, asset.amount, {
7604
7608
  parents: asset.symbol === 'DOT' ? sdkCommon.Parents.ONE : sdkCommon.Parents.TWO,
7605
7609
  interior: asset.symbol === 'WETH' ? {
7606
7610
  X2: [ETHEREUM_JUNCTION, {
@@ -7610,7 +7614,7 @@ var BifrostPolkadot = /*#__PURE__*/function (_ParachainNode) {
7610
7614
  }]
7611
7615
  } : 'Here'
7612
7616
  })
7613
- }), 'transfer_assets', 'Unlimited'));
7617
+ }), 'transfer_assets', 'Unlimited');
7614
7618
  }
7615
7619
  }, {
7616
7620
  key: "transferPolkadotXCM",
@@ -7666,7 +7670,7 @@ var BridgeHubKusama = /*#__PURE__*/function (_ParachainNode) {
7666
7670
  throw new ScenarioNotSupportedError(this.node, scenario, 'Unable to use bridge hub for transfers to other Parachains. Please move your currency to AssetHub to transfer to other Parachains.');
7667
7671
  }
7668
7672
  var method = 'limited_teleport_assets';
7669
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7673
+ return transferPolkadotXcm(input, method, 'Unlimited');
7670
7674
  }
7671
7675
  }, {
7672
7676
  key: "getRelayToParaOverrides",
@@ -7693,7 +7697,7 @@ var BridgeHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7693
7697
  throw new ScenarioNotSupportedError(this.node, scenario, 'Unable to use bridge hub for transfers to other Parachains. Please move your currency to AssetHub to transfer to other Parachains.');
7694
7698
  }
7695
7699
  var method = 'limited_teleport_assets';
7696
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7700
+ return transferPolkadotXcm(input, method, 'Unlimited');
7697
7701
  }
7698
7702
  }, {
7699
7703
  key: "getRelayToParaOverrides",
@@ -7770,7 +7774,7 @@ var Collectives = /*#__PURE__*/function (_ParachainNode) {
7770
7774
  if (scenario === 'ParaToPara') {
7771
7775
  throw new ScenarioNotSupportedError(this.node, scenario);
7772
7776
  }
7773
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_teleport_assets', 'Unlimited'));
7777
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
7774
7778
  }
7775
7779
  }, {
7776
7780
  key: "getRelayToParaOverrides",
@@ -7780,11 +7784,6 @@ var Collectives = /*#__PURE__*/function (_ParachainNode) {
7780
7784
  includeFee: true
7781
7785
  };
7782
7786
  }
7783
- }, {
7784
- key: "createCurrencySpec",
7785
- value: function createCurrencySpec(amount, scenario, version, asset) {
7786
- return _superPropGet(Collectives, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
7787
- }
7788
7787
  }]);
7789
7788
  }(ParachainNode);
7790
7789
 
@@ -7818,7 +7817,7 @@ var CoretimeKusama = /*#__PURE__*/function (_ParachainNode) {
7818
7817
  // TESTED block hash on Rococo: 0x78ace0f1bf7cac9a42e56143321b617d98327e2750f795efb0abb833025c9082
7819
7818
  var scenario = input.scenario;
7820
7819
  var method = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
7821
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7820
+ return transferPolkadotXcm(input, method, 'Unlimited');
7822
7821
  }
7823
7822
  }, {
7824
7823
  key: "getRelayToParaOverrides",
@@ -7842,7 +7841,7 @@ var CoretimePolkadot = /*#__PURE__*/function (_ParachainNode) {
7842
7841
  value: function transferPolkadotXCM(input) {
7843
7842
  var scenario = input.scenario;
7844
7843
  var method = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
7845
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7844
+ return transferPolkadotXcm(input, method, 'Unlimited');
7846
7845
  }
7847
7846
  }, {
7848
7847
  key: "getRelayToParaOverrides",
@@ -7866,7 +7865,7 @@ var Crab = /*#__PURE__*/function (_ParachainNode) {
7866
7865
  value: function transferPolkadotXCM(input) {
7867
7866
  // TESTED https://kusama.subscan.io/xcm_message/kusama-ce7396ec470ba0c6516a50075046ee65464572dc
7868
7867
  if (input.scenario === 'ParaToPara') {
7869
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'reserve_transfer_assets'));
7868
+ return transferPolkadotXcm(input, 'reserve_transfer_assets');
7870
7869
  }
7871
7870
  throw new ScenarioNotSupportedError(this.node, input.scenario);
7872
7871
  }
@@ -7879,7 +7878,7 @@ var Crab = /*#__PURE__*/function (_ParachainNode) {
7879
7878
  key: "createCurrencySpec",
7880
7879
  value: function createCurrencySpec(amount, scenario, version, _asset) {
7881
7880
  if (scenario === 'ParaToPara') {
7882
- return createVersionedMultiAssets(version, amount, {
7881
+ return createMultiAsset(version, amount, {
7883
7882
  parents: sdkCommon.Parents.ZERO,
7884
7883
  interior: {
7885
7884
  X1: {
@@ -8020,13 +8019,13 @@ var Darwinia = /*#__PURE__*/function (_ParachainNode) {
8020
8019
  if (scenario === 'ParaToPara' && asset.symbol !== this.getNativeAssetSymbol()) {
8021
8020
  throw new ScenarioNotSupportedError(this.node, scenario);
8022
8021
  }
8023
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8022
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8024
8023
  }
8025
8024
  }, {
8026
8025
  key: "createCurrencySpec",
8027
8026
  value: function createCurrencySpec(amount, scenario, version, _asset) {
8028
8027
  if (scenario === 'ParaToPara') {
8029
- return createVersionedMultiAssets(version, amount, {
8028
+ return createMultiAsset(version, amount, {
8030
8029
  parents: sdkCommon.Parents.ZERO,
8031
8030
  interior: {
8032
8031
  X1: {
@@ -8075,7 +8074,7 @@ var Encointer = /*#__PURE__*/function (_ParachainNode) {
8075
8074
  // NO PARA TO PARA SCENARIOS ON SUBSCAN
8076
8075
  // TESTED https://encointer.subscan.io/xcm_message/kusama-418501e86e947b16c4e4e9040694017e64f9b162
8077
8076
  if (input.scenario === 'ParaToRelay') {
8078
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_teleport_assets', 'Unlimited'));
8077
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
8079
8078
  }
8080
8079
  throw new ScenarioNotSupportedError(this.node, input.scenario);
8081
8080
  }
@@ -8107,7 +8106,7 @@ var Heima = /*#__PURE__*/function (_ParachainNode) {
8107
8106
  if (asset.symbol !== this.getNativeAssetSymbol()) {
8108
8107
  throw new assets.InvalidCurrencyError("Asset ".concat(asset.symbol, " is not supported by node ").concat(this.node, "."));
8109
8108
  }
8110
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8109
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8111
8110
  }
8112
8111
  }]);
8113
8112
  }(ParachainNode);
@@ -8127,9 +8126,9 @@ var getAssetMultiLocation = function getAssetMultiLocation(asset) {
8127
8126
  };
8128
8127
  var createTransferAssetsTransfer = function createTransferAssetsTransfer(options, version) {
8129
8128
  var asset = options.asset;
8130
- var currencySelection = addXcmVersionHeader([createMultiAsset(version, asset.amount, getAssetMultiLocation(asset))], version);
8131
- return PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, options), {}, {
8132
- currencySelection: currencySelection
8129
+ var location = getAssetMultiLocation(asset);
8130
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, options), {}, {
8131
+ multiAsset: createMultiAsset(version, asset.amount, location)
8133
8132
  }), 'transfer_assets', 'Unlimited');
8134
8133
  };
8135
8134
  var createTypeAndThenDest = function createTypeAndThenDest(destination, scenario, version) {
@@ -8230,7 +8229,7 @@ var Polimec = /*#__PURE__*/function (_ParachainNode) {
8230
8229
  break;
8231
8230
  }
8232
8231
  _call = createTypeAndThenTransfer(input, version);
8233
- return _context.a(2, Promise.resolve(api.callTxMethod(_call)));
8232
+ return _context.a(2, api.callTxMethod(_call));
8234
8233
  case 1:
8235
8234
  if (!(scenario === 'ParaToPara' && (destination === 'AssetHubPolkadot' || destination === 'Hydration'))) {
8236
8235
  _context.n = 2;
@@ -8330,7 +8329,7 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
8330
8329
  module: 'PolkadotXcm',
8331
8330
  method: 'transfer_assets_using_type_and_then',
8332
8331
  parameters: {
8333
- dest: this.createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
8332
+ dest: createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
8334
8333
  assets: _defineProperty({}, version, [createMultiAsset(version, asset.amount, DOT_MULTILOCATION)]),
8335
8334
  assets_transfer_type: 'DestinationReserve',
8336
8335
  remote_fees_id: _defineProperty({}, version, {
@@ -8354,7 +8353,7 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
8354
8353
  var symbol = asset.symbol.toUpperCase();
8355
8354
  if (symbol === 'DOT') {
8356
8355
  var call = createTypeAndThenTransfer(options, version);
8357
- return api.callTxMethod(call);
8356
+ return Promise.resolve(api.callTxMethod(call));
8358
8357
  }
8359
8358
  if ((symbol === 'USDC' || symbol === 'USDT') && !sdkCommon.hasJunction(asset.multiLocation, 'Parachain', getParaId('AssetHubPolkadot'))) {
8360
8359
  throw new assets.InvalidCurrencyError('The selected asset is not supported for transfer to Polimec');
@@ -8536,7 +8535,7 @@ var KiltSpiritnet = /*#__PURE__*/function (_ParachainNode) {
8536
8535
  if (scenario === 'ParaToPara' && asset.symbol !== this.getNativeAssetSymbol()) {
8537
8536
  throw new ScenarioNotSupportedError(this.node, scenario, 'KiltSpiritnet only supports native asset ParaToPara transfers');
8538
8537
  }
8539
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8538
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8540
8539
  }
8541
8540
  }, {
8542
8541
  key: "transferRelayToPara",
@@ -8679,9 +8678,9 @@ var Moonbeam = /*#__PURE__*/function (_ParachainNode) {
8679
8678
  return this.transferToEthereum(input);
8680
8679
  }
8681
8680
  var multiLocation = this.getMultiLocation(asset, scenario);
8682
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
8683
- currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
8684
- }), 'transfer_assets', 'Unlimited'));
8681
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
8682
+ multiAsset: createMultiAsset(version, asset.amount, multiLocation)
8683
+ }), 'transfer_assets', 'Unlimited');
8685
8684
  }
8686
8685
  }, {
8687
8686
  key: "getRelayToParaOverrides",
@@ -8747,9 +8746,9 @@ var Moonriver = /*#__PURE__*/function (_ParachainNode) {
8747
8746
  _input$version = input.version,
8748
8747
  version = _input$version === void 0 ? this.version : _input$version;
8749
8748
  var multiLocation = this.getMultiLocation(asset, scenario);
8750
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
8751
- currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
8752
- }), 'transfer_assets', 'Unlimited'));
8749
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
8750
+ multiAsset: createMultiAsset(version, asset.amount, multiLocation)
8751
+ }), 'transfer_assets', 'Unlimited');
8753
8752
  }
8754
8753
  }, {
8755
8754
  key: "getRelayToParaOverrides",
@@ -8786,7 +8785,7 @@ var Mythos = /*#__PURE__*/function (_ParachainNode) {
8786
8785
  if (asset.symbol !== nativeSymbol) {
8787
8786
  throw new assets.InvalidCurrencyError("Node ".concat(this.node, " does not support currency ").concat(asset.symbol));
8788
8787
  }
8789
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, destination === 'AssetHubPolkadot' ? 'limited_teleport_assets' : 'limited_reserve_transfer_assets', 'Unlimited'));
8788
+ return transferPolkadotXcm(input, destination === 'AssetHubPolkadot' ? 'limited_teleport_assets' : 'limited_reserve_transfer_assets', 'Unlimited');
8790
8789
  }
8791
8790
  }, {
8792
8791
  key: "transferPolkadotXCM",
@@ -8833,7 +8832,7 @@ var NeuroWeb = /*#__PURE__*/function (_ParachainNode) {
8833
8832
  return _createClass(NeuroWeb, [{
8834
8833
  key: "transferPolkadotXCM",
8835
8834
  value: function transferPolkadotXCM(input) {
8836
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8835
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8837
8836
  }
8838
8837
  }]);
8839
8838
  }(ParachainNode);
@@ -8855,7 +8854,7 @@ var Nodle = /*#__PURE__*/function (_ParachainNode) {
8855
8854
  if (asset.symbol !== this.getNativeAssetSymbol()) {
8856
8855
  throw new assets.InvalidCurrencyError("Asset ".concat(asset.symbol, " is not supported by node ").concat(this.node, "."));
8857
8856
  }
8858
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8857
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8859
8858
  }
8860
8859
  }, {
8861
8860
  key: "transferRelayToPara",
@@ -8963,7 +8962,7 @@ var PeopleKusama = /*#__PURE__*/function (_ParachainNode) {
8963
8962
  throw new ScenarioNotSupportedError(this.node, scenario);
8964
8963
  }
8965
8964
  var method = 'limited_teleport_assets';
8966
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
8965
+ return transferPolkadotXcm(input, method, 'Unlimited');
8967
8966
  }
8968
8967
  }, {
8969
8968
  key: "getRelayToParaOverrides",
@@ -8989,8 +8988,7 @@ var PeoplePolkadot = /*#__PURE__*/function (_ParachainNode) {
8989
8988
  if (scenario === 'ParaToPara') {
8990
8989
  throw new ScenarioNotSupportedError(this.node, scenario);
8991
8990
  }
8992
- var method = 'limited_teleport_assets';
8993
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
8991
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
8994
8992
  }
8995
8993
  }, {
8996
8994
  key: "getRelayToParaOverrides",
@@ -9016,77 +9014,50 @@ var determineDestWeight = function determineDestWeight(destNode) {
9016
9014
  proof_size: 0n
9017
9015
  };
9018
9016
  }
9019
- throw new NodeNotSupportedError("Node ".concat(destNode, " is not supported"));
9017
+ throw new NodeNotSupportedError("Pallet XTransfer does not support transfering to ".concat(destNode, "."));
9020
9018
  };
9021
9019
 
9022
- var getDestination = function getDestination(_ref) {
9023
- var recipientAddress = _ref.recipientAddress,
9024
- paraId = _ref.paraId,
9025
- api = _ref.api;
9026
- var isMultiLocation = _typeof(recipientAddress) === 'object';
9027
- if (isMultiLocation) {
9028
- return recipientAddress;
9029
- }
9030
- var isEthAddress = viem.isAddress(recipientAddress);
9031
- var addressJunction = isEthAddress ? {
9032
- AccountKey20: {
9033
- key: recipientAddress
9034
- }
9035
- } : {
9036
- AccountId32: {
9037
- id: api.accountToHex(recipientAddress)
9038
- }
9039
- };
9040
- return {
9041
- parents: sdkCommon.Parents.ONE,
9042
- interior: {
9043
- X2: [{
9044
- Parachain: paraId
9045
- }, addressJunction]
9020
+ var transferXTransfer = function transferXTransfer(input) {
9021
+ var api = input.api,
9022
+ destination = input.destination,
9023
+ scenario = input.scenario,
9024
+ asset = input.asset,
9025
+ overriddenAsset = input.overriddenAsset,
9026
+ recipientAddress = input.recipientAddress,
9027
+ pallet = input.pallet,
9028
+ methodOverride = input.method,
9029
+ paraIdTo = input.paraIdTo;
9030
+ assertToIsString(destination, ERR_MULTILOCATION_DEST_NOT_SUPPORTED);
9031
+ // XTransfer pallet does not require version specification
9032
+ // but the XCM syntax matches the V3 format
9033
+ var version = sdkCommon.Version.V3;
9034
+ var multiAsset = createMultiAsset(version, asset.amount, {
9035
+ parents: sdkCommon.Parents.ZERO,
9036
+ interior: 'Here'
9037
+ });
9038
+ var resolvedMultiAsset = maybeOverrideMultiAsset(version, asset.amount, multiAsset, overriddenAsset);
9039
+ var dest = createBeneficiaryMultiLocation({
9040
+ api: api,
9041
+ scenario: scenario,
9042
+ pallet: 'XTokens',
9043
+ recipientAddress: recipientAddress,
9044
+ version: version,
9045
+ paraId: paraIdTo
9046
+ });
9047
+ var destWeight = determineDestWeight(destination);
9048
+ var method = 'transfer';
9049
+ var call = {
9050
+ module: pallet !== null && pallet !== void 0 ? pallet : 'XTransfer',
9051
+ method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
9052
+ parameters: {
9053
+ asset: resolvedMultiAsset,
9054
+ dest: dest,
9055
+ dest_weight: destWeight
9046
9056
  }
9047
9057
  };
9058
+ return api.callTxMethod(call);
9048
9059
  };
9049
9060
 
9050
- var XTransferTransferImpl = /*#__PURE__*/function () {
9051
- function XTransferTransferImpl() {
9052
- _classCallCheck(this, XTransferTransferImpl);
9053
- }
9054
- return _createClass(XTransferTransferImpl, null, [{
9055
- key: "transferXTransfer",
9056
- value: function transferXTransfer(input) {
9057
- var api = input.api,
9058
- destination = input.destination,
9059
- asset = input.asset,
9060
- overriddenAsset = input.overriddenAsset,
9061
- pallet = input.pallet,
9062
- methodOverride = input.method;
9063
- var isMultiLocationDestination = _typeof(destination) === 'object';
9064
- if (isMultiLocationDestination) {
9065
- throw new InvalidParameterError('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.');
9066
- }
9067
- var version = sdkCommon.Version.V3;
9068
- var multiAssets = [createMultiAsset(version, asset.amount, {
9069
- parents: sdkCommon.Parents.ZERO,
9070
- interior: 'Here'
9071
- })];
9072
- var resolvedMultiAssets = maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset);
9073
- var dest = getDestination(input);
9074
- var method = 'transfer';
9075
- var destWeight = determineDestWeight(destination);
9076
- var call = {
9077
- module: pallet !== null && pallet !== void 0 ? pallet : 'XTransfer',
9078
- method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
9079
- parameters: {
9080
- asset: resolvedMultiAssets[0],
9081
- dest: dest,
9082
- dest_weight: destWeight
9083
- }
9084
- };
9085
- return api.callTxMethod(call);
9086
- }
9087
- }]);
9088
- }();
9089
-
9090
9061
  var Phala = /*#__PURE__*/function (_ParachainNode) {
9091
9062
  function Phala() {
9092
9063
  _classCallCheck(this, Phala);
@@ -9095,12 +9066,12 @@ var Phala = /*#__PURE__*/function (_ParachainNode) {
9095
9066
  _inherits(Phala, _ParachainNode);
9096
9067
  return _createClass(Phala, [{
9097
9068
  key: "transferXTransfer",
9098
- value: function transferXTransfer(input) {
9069
+ value: function transferXTransfer$1(input) {
9099
9070
  var asset = input.asset;
9100
9071
  if (asset.symbol !== this.getNativeAssetSymbol()) {
9101
9072
  throw new assets.InvalidCurrencyError("Node ".concat(this.node, " does not support currency ").concat(asset.symbol));
9102
9073
  }
9103
- return XTransferTransferImpl.transferXTransfer(input);
9074
+ return transferXTransfer(input);
9104
9075
  }
9105
9076
  }, {
9106
9077
  key: "transferLocalNonNativeAsset",
@@ -9160,7 +9131,7 @@ var RobonomicsKusama = /*#__PURE__*/function (_ParachainNode) {
9160
9131
  return _createClass(RobonomicsKusama, [{
9161
9132
  key: "transferPolkadotXCM",
9162
9133
  value: function transferPolkadotXCM(input) {
9163
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
9134
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9164
9135
  }
9165
9136
  }, {
9166
9137
  key: "transferLocalNonNativeAsset",
@@ -9179,7 +9150,7 @@ var RobonomicsPolkadot = /*#__PURE__*/function (_ParachainNode) {
9179
9150
  return _createClass(RobonomicsPolkadot, [{
9180
9151
  key: "transferPolkadotXCM",
9181
9152
  value: function transferPolkadotXCM(input) {
9182
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
9153
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9183
9154
  }
9184
9155
  }, {
9185
9156
  key: "transferLocalNonNativeAsset",
@@ -9257,7 +9228,7 @@ var Subsocial = /*#__PURE__*/function (_ParachainNode) {
9257
9228
  if (asset.symbol !== this.getNativeAssetSymbol()) {
9258
9229
  throw new assets.InvalidCurrencyError("Asset ".concat(asset.symbol, " is not supported by node ").concat(this.node, "."));
9259
9230
  }
9260
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
9231
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9261
9232
  }
9262
9233
  }]);
9263
9234
  }(ParachainNode);
@@ -9536,17 +9507,6 @@ var AssetClaimBuilder = /*#__PURE__*/function () {
9536
9507
  }]);
9537
9508
  }();
9538
9509
 
9539
- var assertToIsString = function assertToIsString(to) {
9540
- if (sdkCommon.isTMultiLocation(to)) {
9541
- throw new InvalidParameterError('Multi-Location destination is not supported for XCM fee calculation.');
9542
- }
9543
- };
9544
- var assertAddressIsString = function assertAddressIsString(address) {
9545
- if (sdkCommon.isTMultiLocation(address)) {
9546
- throw new InvalidParameterError('Multi-Location address is not supported for XCM fee calculation.');
9547
- }
9548
- };
9549
-
9550
9510
  var BatchTransactionManager = /*#__PURE__*/function () {
9551
9511
  function BatchTransactionManager() {
9552
9512
  _classCallCheck(this, BatchTransactionManager);
@@ -10272,6 +10232,9 @@ exports.ScenarioNotSupportedError = ScenarioNotSupportedError;
10272
10232
  exports.TX_CLIENT_TIMEOUT_MS = TX_CLIENT_TIMEOUT_MS;
10273
10233
  exports.TransferToAhNotSupported = TransferToAhNotSupported;
10274
10234
  exports.UnableToComputeError = UnableToComputeError;
10235
+ exports.addXcmVersionHeader = addXcmVersionHeader;
10236
+ exports.assertAddressIsString = assertAddressIsString;
10237
+ exports.assertToIsString = assertToIsString;
10275
10238
  exports.blake2b256 = blake2b256;
10276
10239
  exports.blake2b512 = blake2b512;
10277
10240
  exports.claimAssets = claimAssets;