@paraspell/sdk-core 10.4.7 → 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",
@@ -2399,10 +2416,6 @@ var getNode = function getNode(node) {
2399
2416
  return nodeMap[node];
2400
2417
  };
2401
2418
 
2402
- var replaceBigInt = function replaceBigInt(_key, value) {
2403
- return typeof value === 'bigint' ? value.toString() : value;
2404
- };
2405
-
2406
2419
  var resolveParaId = function resolveParaId(paraId, destination) {
2407
2420
  if (sdkCommon.isTMultiLocation(destination) || sdkCommon.isRelayChain(destination) || destination === 'Ethereum') {
2408
2421
  return undefined;
@@ -2437,66 +2450,6 @@ var determineRelayChain = function determineRelayChain(node) {
2437
2450
  return assets.getRelayChainSymbol(node) === 'KSM' ? 'Kusama' : 'Polkadot';
2438
2451
  };
2439
2452
 
2440
- var findParachainJunction = function findParachainJunction(multilocation) {
2441
- var interior = multilocation.interior;
2442
- if (interior === 'Here') {
2443
- return null;
2444
- }
2445
- for (var key in interior) {
2446
- var junctions = interior[key];
2447
- if (Array.isArray(junctions)) {
2448
- var _iterator = _createForOfIteratorHelper(junctions),
2449
- _step;
2450
- try {
2451
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
2452
- var junction = _step.value;
2453
- if ('Parachain' in junction) {
2454
- return Number(junction.Parachain);
2455
- }
2456
- }
2457
- } catch (err) {
2458
- _iterator.e(err);
2459
- } finally {
2460
- _iterator.f();
2461
- }
2462
- } else if (_typeof(junctions) === 'object' && junctions !== null && 'Parachain' in junctions) {
2463
- return Number(junctions.Parachain);
2464
- }
2465
- }
2466
- return null;
2467
- };
2468
-
2469
- var constructRelayToParaParameters = function constructRelayToParaParameters(_ref, version) {
2470
- var api = _ref.api,
2471
- destination = _ref.destination,
2472
- asset = _ref.asset,
2473
- address = _ref.address,
2474
- paraIdTo = _ref.paraIdTo;
2475
- var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
2476
- includeFee: false
2477
- },
2478
- includeFee = _ref2.includeFee;
2479
- var paraId = resolveParaId(paraIdTo, destination);
2480
- return _objectSpread2({
2481
- dest: createVersionedDestination('RelayToPara', version, destination, paraId),
2482
- beneficiary: createVersionedBeneficiary({
2483
- api: api,
2484
- scenario: 'RelayToPara',
2485
- pallet: null,
2486
- recipientAddress: address,
2487
- version: version,
2488
- paraId: paraId
2489
- }),
2490
- assets: createVersionedMultiAssets(version, asset.amount, {
2491
- parents: sdkCommon.Parents.ZERO,
2492
- interior: 'Here'
2493
- }),
2494
- fee_asset_item: DEFAULT_FEE_ASSET
2495
- }, includeFee && {
2496
- weight_limit: 'Unlimited'
2497
- });
2498
- };
2499
-
2500
2453
  var createMultiAsset = function createMultiAsset(version, amount, multiLocation) {
2501
2454
  if (version === sdkCommon.Version.V4 || version === sdkCommon.Version.V5) {
2502
2455
  return {
@@ -2515,83 +2468,28 @@ var createMultiAsset = function createMultiAsset(version, amount, multiLocation)
2515
2468
  }
2516
2469
  };
2517
2470
  };
2518
- var addXcmVersionHeader = function addXcmVersionHeader(obj, version) {
2519
- return _defineProperty({}, version, obj);
2520
- };
2521
- var extractVersionFromHeader = function extractVersionFromHeader(versionHeader) {
2522
- var keys = Object.keys(versionHeader);
2523
- if (keys.length !== 1) {
2524
- throw new InvalidParameterError('Invalid version header: expected exactly one key.');
2525
- }
2526
- var version = keys[0];
2527
- var value = versionHeader[version];
2528
- if (value === undefined) {
2529
- throw new InvalidParameterError('Invalid version header: value is undefined.');
2530
- }
2531
- return [version, value];
2471
+ var createVersionedMultiAssets = function createVersionedMultiAssets(version, amount, multiLocation) {
2472
+ var multiAsset = createMultiAsset(version, amount, multiLocation);
2473
+ return addXcmVersionHeader([multiAsset], version);
2532
2474
  };
2475
+
2533
2476
  var maybeOverrideMultiAssets = function maybeOverrideMultiAssets(version, amount, multiAssets, overriddenCurrency) {
2534
2477
  if (!overriddenCurrency) {
2535
2478
  return multiAssets;
2536
2479
  }
2537
2480
  return sdkCommon.isTMultiLocation(overriddenCurrency) ? [createMultiAsset(version, amount, overriddenCurrency)] : overriddenCurrency;
2538
2481
  };
2539
- var createVersionedMultiAssets = function createVersionedMultiAssets(version, amount, multiLocation) {
2540
- var multiAssets = createMultiAsset(version, amount, multiLocation);
2541
- return addXcmVersionHeader([multiAssets], version);
2542
- };
2543
- var createDestination = function createDestination(scenario, version, destination, nodeId, junction, parents) {
2544
- var parentsResolved = parents !== null && parents !== void 0 ? parents : scenario === 'RelayToPara' ? sdkCommon.Parents.ZERO : sdkCommon.Parents.ONE;
2545
- var interior = scenario === 'ParaToRelay' ? 'Here' : createX1Payload(version, junction !== null && junction !== void 0 ? junction : {
2546
- Parachain: nodeId
2547
- });
2548
- var isMultiLocationDestination = sdkCommon.isTMultiLocation(destination);
2549
- return isMultiLocationDestination ? destination : {
2550
- parents: parentsResolved,
2551
- interior: interior
2552
- };
2553
- };
2554
- var createVersionedDestination = function createVersionedDestination(scenario, version, destination, nodeId, junction, parents) {
2555
- var plainDestination = createDestination(scenario, version, destination, nodeId, junction, parents);
2556
- return addXcmVersionHeader(plainDestination, version);
2557
- };
2558
- var createBridgePolkadotXcmDest = function createBridgePolkadotXcmDest(version, ecosystem, destination, nodeId) {
2559
- var multiLocation = {
2560
- parents: sdkCommon.Parents.TWO,
2561
- interior: {
2562
- X2: [{
2563
- GlobalConsensus: ecosystem
2564
- }, {
2565
- Parachain: nodeId
2566
- }]
2567
- }
2568
- };
2569
- var isMultiLocationDestination = sdkCommon.isTMultiLocation(destination);
2570
- return addXcmVersionHeader(isMultiLocationDestination ? destination : multiLocation, version);
2571
- };
2572
- var resolveTNodeFromMultiLocation = function resolveTNodeFromMultiLocation(relayChain, multiLocation) {
2573
- var _NODE_NAMES_DOT_KSM$f;
2574
- var parachainId = findParachainJunction(multiLocation);
2575
- if (parachainId === null) {
2576
- throw new InvalidParameterError('Parachain ID not found in destination multi location.');
2577
- }
2578
- var node = (_NODE_NAMES_DOT_KSM$f = sdkCommon.NODE_NAMES_DOT_KSM.find(function (nodeName) {
2579
- return getParaId(nodeName) === parachainId && determineRelayChain(nodeName) === relayChain;
2580
- })) !== null && _NODE_NAMES_DOT_KSM$f !== void 0 ? _NODE_NAMES_DOT_KSM$f : null;
2581
- if (node === null) {
2582
- 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;
2583
2485
  }
2584
- return node;
2585
- };
2586
- var throwUnsupportedCurrency = function throwUnsupportedCurrency(currency, node) {
2587
- var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
2588
- isDestination: false
2589
- },
2590
- isDestination = _ref2.isDestination;
2591
- if ('multilocation' in currency) {
2592
- 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];
2593
2491
  }
2594
- throw new assets.InvalidCurrencyError("".concat(isDestination ? 'Destination' : 'Origin', " node ").concat(node, " does not support currency ").concat(JSON.stringify(currency), "."));
2492
+ return createMultiAsset(version, amount, overriddenCurrency);
2595
2493
  };
2596
2494
 
2597
2495
  var resolveMultiLocationFromDest = function resolveMultiLocationFromDest(destination, asset) {
@@ -2657,12 +2555,13 @@ var getModifiedCurrencySelection = function getModifiedCurrencySelection(input)
2657
2555
  return createDefaultCurrencySelection(input);
2658
2556
  };
2659
2557
 
2660
- 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);
2661
2560
  if (!isMultiAssetTransfer) {
2662
2561
  return {
2663
2562
  currency_id: currencySelection,
2664
2563
  amount: BigInt(amount),
2665
- dest: addressSelection,
2564
+ dest: versionedDestLocation,
2666
2565
  dest_weight_limit: fees
2667
2566
  };
2668
2567
  }
@@ -2675,7 +2574,7 @@ var getXTokensParameters = function getXTokensParameters(isMultiAssetTransfer, c
2675
2574
  return _objectSpread2(_objectSpread2(_defineProperty({}, assetKey, currencySelection), isOverriddenMultiAssets && {
2676
2575
  fee_item: feeIndexWithFallback
2677
2576
  }), {}, {
2678
- dest: addressSelection,
2577
+ dest: versionedDestLocation,
2679
2578
  dest_weight_limit: fees
2680
2579
  });
2681
2580
  };
@@ -2699,14 +2598,15 @@ var getXTokensMethod = function getXTokensMethod(useMultiAsset, overriddenAsset)
2699
2598
  };
2700
2599
  var buildXTokensCall = function buildXTokensCall(input, currencySelection, fees) {
2701
2600
  var overriddenAsset = input.overriddenAsset,
2702
- addressSelection = input.addressSelection,
2601
+ destLocation = input.destLocation,
2703
2602
  asset = input.asset,
2704
2603
  pallet = input.pallet,
2604
+ version = input.version,
2705
2605
  methodOverride = input.method;
2706
2606
  var useMultiAsset = shouldUseMultiAssetTransfer(input);
2707
2607
  var modifiedCurrencySelection = useMultiAsset ? getModifiedCurrencySelection(input) : currencySelection;
2708
2608
  var method = getXTokensMethod(useMultiAsset, overriddenAsset);
2709
- var parameters = getXTokensParameters(useMultiAsset, modifiedCurrencySelection, addressSelection, asset.amount, fees, overriddenAsset);
2609
+ var parameters = getXTokensParameters(useMultiAsset, modifiedCurrencySelection, destLocation, asset.amount, fees, version, overriddenAsset);
2710
2610
  return {
2711
2611
  module: pallet !== null && pallet !== void 0 ? pallet : 'XTokens',
2712
2612
  method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
@@ -2714,22 +2614,129 @@ var buildXTokensCall = function buildXTokensCall(input, currencySelection, fees)
2714
2614
  };
2715
2615
  };
2716
2616
 
2717
- 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.';
2718
- var validateDestination$1 = function validateDestination(destination) {
2719
- var isMultiLocationDestination = _typeof(destination) === 'object';
2720
- if (isMultiLocationDestination) {
2721
- throw new InvalidParameterError(ERR_MULTILOCATION_DEST_NOT_SUPPORTED);
2722
- }
2723
- };
2617
+ // Contains basic structure of xTokens call
2724
2618
  var transferXTokens = function transferXTokens(input, currencySelection) {
2725
2619
  var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_FEE;
2726
2620
  var api = input.api,
2727
2621
  destination = input.destination;
2728
- validateDestination$1(destination);
2622
+ assertToIsString(destination, ERR_MULTILOCATION_DEST_NOT_SUPPORTED);
2729
2623
  var call = buildXTokensCall(input, currencySelection, fees);
2730
2624
  return api.callTxMethod(call);
2731
2625
  };
2732
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
+
2733
2740
  /**
2734
2741
  * Retrieves the node name corresponding to a specified parachain ID.
2735
2742
  *
@@ -3372,29 +3379,23 @@ var transferMoonbeamEvm = /*#__PURE__*/function () {
3372
3379
  wallet: signer
3373
3380
  }
3374
3381
  });
3375
- foundAsset = assets.findAsset(from, currency, to);
3376
- if (!(foundAsset === null)) {
3377
- _context.n = 3;
3378
- break;
3379
- }
3380
- throw new assets.InvalidCurrencyError("Origin node ".concat(from, " does not support currency ").concat(JSON.stringify(currency), "."));
3381
- case 3:
3382
+ foundAsset = assets.findAssetForNodeOrThrow(from, currency, to);
3382
3383
  if (!(foundAsset.symbol === assets.getNativeAssetSymbol(from))) {
3383
- _context.n = 4;
3384
+ _context.n = 3;
3384
3385
  break;
3385
3386
  }
3386
3387
  asset = NATIVE_ASSET_ID;
3387
- _context.n = 6;
3388
+ _context.n = 5;
3388
3389
  break;
3389
- case 4:
3390
+ case 3:
3390
3391
  if (!(!assets.isForeignAsset(foundAsset) || !foundAsset.assetId)) {
3391
- _context.n = 5;
3392
+ _context.n = 4;
3392
3393
  break;
3393
3394
  }
3394
3395
  throw new assets.InvalidCurrencyError('Currency must be a foreign asset with valid assetId');
3395
- case 5:
3396
+ case 4:
3396
3397
  asset = formatAssetIdToERC20(foundAsset.assetId);
3397
- case 6:
3398
+ case 5:
3398
3399
  destMultiLocation = getDestinationMultilocation(api, address, to);
3399
3400
  weight = U_64_MAX; // Partially inspired by Moonbeam XCM-SDK
3400
3401
  // https://github.com/moonbeam-foundation/xcm-sdk/blob/ab835c15bf41612604b1c858d956a9f07705ed65/packages/sdk/src/contract/contracts/Xtokens/Xtokens.ts#L53
@@ -3404,27 +3405,27 @@ var transferMoonbeamEvm = /*#__PURE__*/function () {
3404
3405
  };
3405
3406
  multiCurrencySymbols = ['xcPINK', 'xcDED', 'xcSTINK', 'xcWIFD', 'xcNCTR'];
3406
3407
  useMultiAssets = from === 'Moonbeam' && to === 'AssetHubPolkadot' && multiCurrencySymbols.includes(foundAsset.symbol);
3407
- usdtAsset = assets.findAsset(from, {
3408
+ usdtAsset = assets.findAssetForNodeOrThrow(from, {
3408
3409
  symbol: 'xcUSDT'
3409
3410
  }, to);
3410
3411
  if (!useMultiAssets) {
3411
- _context.n = 8;
3412
+ _context.n = 7;
3412
3413
  break;
3413
3414
  }
3414
- _context.n = 7;
3415
+ _context.n = 6;
3415
3416
  return createTx('transferMultiCurrencies', [[[asset, currency.amount], [formatAssetIdToERC20((_usdtAsset$assetId = usdtAsset.assetId) !== null && _usdtAsset$assetId !== void 0 ? _usdtAsset$assetId : ''), '200000']], 1,
3416
3417
  // index of the fee asset
3417
3418
  destMultiLocation, weight]);
3418
- case 7:
3419
+ case 6:
3419
3420
  _t = _context.v;
3420
- _context.n = 10;
3421
- break;
3422
- case 8:
3423
3421
  _context.n = 9;
3422
+ break;
3423
+ case 7:
3424
+ _context.n = 8;
3424
3425
  return createTx('transfer', [asset, currency.amount, destMultiLocation, weight]);
3425
- case 9:
3426
+ case 8:
3426
3427
  _t = _context.v;
3427
- case 10:
3428
+ case 9:
3428
3429
  tx = _t;
3429
3430
  return _context.a(2, tx);
3430
3431
  }
@@ -3696,26 +3697,20 @@ var transferMoonbeamToEth = /*#__PURE__*/function () {
3696
3697
  }
3697
3698
  throw new InvalidParameterError('Override multilocation is not supported for Evm transfers');
3698
3699
  case 5:
3699
- foundAsset = assets.findAsset(from, currency, to);
3700
- if (!(foundAsset === null)) {
3701
- _context.n = 6;
3702
- break;
3703
- }
3704
- throw new assets.InvalidCurrencyError("Origin node ".concat(from, " does not support currency ").concat(JSON.stringify(currency), "."));
3705
- case 6:
3700
+ foundAsset = assets.findAssetForNodeOrThrow(from, currency, to);
3706
3701
  if (!(!assets.isForeignAsset(foundAsset) || !foundAsset.multiLocation)) {
3707
- _context.n = 7;
3702
+ _context.n = 6;
3708
3703
  break;
3709
3704
  }
3710
3705
  throw new assets.InvalidCurrencyError('Currency must be a foreign asset with valid multi-location');
3711
- case 7:
3706
+ case 6:
3712
3707
  ethAsset = assets.findAssetByMultiLocation(assets.getOtherAssets('Ethereum'), foundAsset.multiLocation);
3713
3708
  if (!(!ethAsset || !ethAsset.assetId)) {
3714
- _context.n = 8;
3709
+ _context.n = 7;
3715
3710
  break;
3716
3711
  }
3717
3712
  throw new assets.InvalidCurrencyError("Could not obtain Ethereum asset address for ".concat(JSON.stringify(foundAsset)));
3718
- case 8:
3713
+ case 7:
3719
3714
  contract = viem.getContract({
3720
3715
  abi: abi,
3721
3716
  address: xcmInterfacePrecompile,
@@ -3729,17 +3724,17 @@ var transferMoonbeamToEth = /*#__PURE__*/function () {
3729
3724
  });
3730
3725
  senderAddress = (_signer$account = signer.account) === null || _signer$account === void 0 ? void 0 : _signer$account.address;
3731
3726
  if (senderAddress) {
3732
- _context.n = 9;
3727
+ _context.n = 8;
3733
3728
  break;
3734
3729
  }
3735
3730
  throw new InvalidParameterError('Unable to get sender address');
3731
+ case 8:
3732
+ _context.n = 9;
3733
+ return api.init(from, TX_CLIENT_TIMEOUT_MS);
3736
3734
  case 9:
3737
3735
  _context.n = 10;
3738
- return api.init(from, TX_CLIENT_TIMEOUT_MS);
3739
- case 10:
3740
- _context.n = 11;
3741
3736
  return generateMessageId(api, senderAddress, getParaId(from), ethAsset.assetId, address, currency.amount);
3742
- case 11:
3737
+ case 10:
3743
3738
  messageId = _context.v;
3744
3739
  customXcm = createCustomXcmOnDest({
3745
3740
  api: api,
@@ -3752,17 +3747,17 @@ var transferMoonbeamToEth = /*#__PURE__*/function () {
3752
3747
  }),
3753
3748
  version: sdkCommon.Version.V4
3754
3749
  }, from, messageId);
3755
- _context.n = 12;
3750
+ _context.n = 11;
3756
3751
  return api.objectToHex(customXcm, 'XcmVersionedXcm');
3757
- case 12:
3752
+ case 11:
3758
3753
  customXcmOnDest = _context.v;
3759
- _context.n = 13;
3754
+ _context.n = 12;
3760
3755
  return api.createApiForNode('AssetHubPolkadot');
3761
- case 13:
3756
+ case 12:
3762
3757
  assetHubApi = _context.v;
3763
- _context.n = 14;
3758
+ _context.n = 13;
3764
3759
  return getParaEthTransferFees(assetHubApi);
3765
- case 14:
3760
+ case 13:
3766
3761
  _yield$getParaEthTran = _context.v;
3767
3762
  _yield$getParaEthTran2 = _slicedToArray(_yield$getParaEthTran, 2);
3768
3763
  bridgeFee = _yield$getParaEthTran2[0];
@@ -3777,7 +3772,7 @@ var transferMoonbeamToEth = /*#__PURE__*/function () {
3777
3772
  throw new InvalidParameterError('Input must be a valid number');
3778
3773
  }() : "0x".concat((num >>> 0).toString(16).padStart(8, '0'));
3779
3774
  }; // Execute the custom XCM message with the precompile
3780
- _context.n = 15;
3775
+ _context.n = 14;
3781
3776
  return createTx('transferAssetsUsingTypeAndThenAddress', [
3782
3777
  // This represents (1,X1(Parachain(1000)))
3783
3778
  [1, ['0x00' + numberToHex32(getParaId('AssetHubPolkadot')).slice(2)]],
@@ -3789,7 +3784,7 @@ var transferMoonbeamToEth = /*#__PURE__*/function () {
3789
3784
  0,
3790
3785
  // The TransferType corresponding to fee asset
3791
3786
  2, customXcmOnDest]);
3792
- case 15:
3787
+ case 14:
3793
3788
  tx = _context.v;
3794
3789
  return _context.a(2, tx);
3795
3790
  }
@@ -3948,7 +3943,7 @@ var getOriginFeeDetails = /*#__PURE__*/function () {
3948
3943
 
3949
3944
  var getTransferableAmountInternal = /*#__PURE__*/function () {
3950
3945
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
3951
- var api, senderAddress, node, destination, currency, tx, feeAsset, resolvedFeeAsset, asset, balance, ed, edBN, isNativeAsset, shouldSubstractFee, feeToSubtract, _yield$getOriginXcmFe, fee, transferable;
3946
+ var api, senderAddress, node, destination, currency, tx, feeAsset, resolvedFeeAsset, asset, balance, ed, isNativeAsset, shouldSubstractFee, feeToSubtract, _yield$getOriginXcmFe, fee, transferable;
3952
3947
  return _regenerator().w(function (_context) {
3953
3948
  while (1) switch (_context.n) {
3954
3949
  case 0:
@@ -3965,22 +3960,15 @@ var getTransferableAmountInternal = /*#__PURE__*/function () {
3965
3960
  });
3966
3961
  case 1:
3967
3962
  balance = _context.v;
3968
- ed = assets.getExistentialDeposit(node, currency);
3969
- if (!(ed === null)) {
3970
- _context.n = 2;
3971
- break;
3972
- }
3973
- throw new InvalidParameterError("Cannot get existential deposit for currency ".concat(JSON.stringify(currency), "."));
3974
- case 2:
3975
- edBN = BigInt(ed);
3963
+ ed = assets.getExistentialDepositOrThrow(node, currency);
3976
3964
  isNativeAsset = assets.getNativeAssetSymbol(node) === asset.symbol;
3977
3965
  shouldSubstractFee = isNativeAsset || node === 'AssetHubPolkadot' && resolvedFeeAsset && assets.isAssetEqual(resolvedFeeAsset, asset);
3978
3966
  feeToSubtract = 0n;
3979
3967
  if (!shouldSubstractFee) {
3980
- _context.n = 5;
3968
+ _context.n = 4;
3981
3969
  break;
3982
3970
  }
3983
- _context.n = 3;
3971
+ _context.n = 2;
3984
3972
  return getOriginXcmFee({
3985
3973
  api: api,
3986
3974
  tx: tx,
@@ -3991,18 +3979,18 @@ var getTransferableAmountInternal = /*#__PURE__*/function () {
3991
3979
  currency: currency,
3992
3980
  disableFallback: false
3993
3981
  });
3994
- case 3:
3982
+ case 2:
3995
3983
  _yield$getOriginXcmFe = _context.v;
3996
3984
  fee = _yield$getOriginXcmFe.fee;
3997
3985
  if (!(fee === undefined)) {
3998
- _context.n = 4;
3986
+ _context.n = 3;
3999
3987
  break;
4000
3988
  }
4001
- throw new InvalidParameterError("Cannot get origin xcm fee for currency ".concat(JSON.stringify(currency), " on node ").concat(node, "."));
4002
- case 4:
3989
+ throw new InvalidParameterError("Cannot get origin xcm fee for currency ".concat(JSON.stringify(currency, sdkCommon.replaceBigInt), " on node ").concat(node, "."));
3990
+ case 3:
4003
3991
  feeToSubtract = fee;
4004
- case 5:
4005
- transferable = balance - edBN - feeToSubtract;
3992
+ case 4:
3993
+ transferable = balance - ed - feeToSubtract;
4006
3994
  return _context.a(2, transferable > 0n ? transferable : 0n);
4007
3995
  }
4008
3996
  }, _callee);
@@ -4062,7 +4050,7 @@ var buildDestInfo = /*#__PURE__*/function () {
4062
4050
  _context.n = 2;
4063
4051
  break;
4064
4052
  }
4065
- throw new InvalidParameterError("Existential deposit not found for ".concat(destination, " with currency ").concat(JSON.stringify(currency)));
4053
+ throw new InvalidParameterError("Existential deposit not found for ".concat(destination, " with currency ").concat(JSON.stringify(currency, sdkCommon.replaceBigInt)));
4066
4054
  case 2:
4067
4055
  edDestBn = BigInt(edDest);
4068
4056
  destCurrency = destAsset.multiLocation ? {
@@ -4240,7 +4228,7 @@ var buildHopInfo = /*#__PURE__*/function () {
4240
4228
 
4241
4229
  var getTransferInfo = /*#__PURE__*/function () {
4242
4230
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
4243
- var api, tx, origin, destination, senderAddress, ahAddress, address, currency, feeAsset, resolvedFeeAsset, originAsset, originBalanceFee, originBalance, edOrigin, edOriginBn, _yield$getXcmFee, _yield$getXcmFee$orig, originFee, originFeeCurrency, assetHubFeeResult, bridgeHubFeeResult, destFeeDetail, isFeeAssetAh, originBalanceAfter, originBalanceFeeAfter, originBalanceNativeSufficient, originBalanceSufficient, assetHub, bridgeHub, bridgeHubNode, destinationInfo, _t;
4231
+ var api, tx, origin, destination, senderAddress, ahAddress, address, currency, feeAsset, resolvedFeeAsset, originAsset, originBalanceFee, originBalance, edOrigin, _yield$getXcmFee, _yield$getXcmFee$orig, originFee, originFeeCurrency, assetHubFeeResult, bridgeHubFeeResult, destFeeDetail, isFeeAssetAh, originBalanceAfter, originBalanceFeeAfter, originBalanceNativeSufficient, originBalanceSufficient, assetHub, bridgeHub, bridgeHubNode, destinationInfo, _t;
4244
4232
  return _regenerator().w(function (_context) {
4245
4233
  while (1) switch (_context.n) {
4246
4234
  case 0:
@@ -4293,15 +4281,8 @@ var getTransferInfo = /*#__PURE__*/function () {
4293
4281
  });
4294
4282
  case 8:
4295
4283
  originBalance = _context.v;
4296
- edOrigin = assets.getExistentialDeposit(origin, currency);
4297
- if (edOrigin) {
4298
- _context.n = 9;
4299
- break;
4300
- }
4301
- throw new InvalidParameterError("Existential deposit not found for ".concat(origin, " with currency ").concat(JSON.stringify(currency)));
4302
- case 9:
4303
- edOriginBn = BigInt(edOrigin);
4304
- _context.n = 10;
4284
+ edOrigin = assets.getExistentialDepositOrThrow(origin, currency);
4285
+ _context.n = 9;
4305
4286
  return getXcmFee({
4306
4287
  api: api,
4307
4288
  tx: tx,
@@ -4313,7 +4294,7 @@ var getTransferInfo = /*#__PURE__*/function () {
4313
4294
  feeAsset: feeAsset,
4314
4295
  disableFallback: false
4315
4296
  });
4316
- case 10:
4297
+ case 9:
4317
4298
  _yield$getXcmFee = _context.v;
4318
4299
  _yield$getXcmFee$orig = _yield$getXcmFee.origin;
4319
4300
  originFee = _yield$getXcmFee$orig.fee;
@@ -4322,21 +4303,21 @@ var getTransferInfo = /*#__PURE__*/function () {
4322
4303
  bridgeHubFeeResult = _yield$getXcmFee.bridgeHub;
4323
4304
  destFeeDetail = _yield$getXcmFee.destination;
4324
4305
  if (!(originFee === undefined)) {
4325
- _context.n = 11;
4306
+ _context.n = 10;
4326
4307
  break;
4327
4308
  }
4328
- throw new InvalidParameterError("Cannot get origin xcm fee for currency ".concat(JSON.stringify(currency), " on node ").concat(origin, "."));
4329
- case 11:
4309
+ throw new InvalidParameterError("Cannot get origin xcm fee for currency ".concat(JSON.stringify(currency, sdkCommon.replaceBigInt), " on node ").concat(origin, "."));
4310
+ case 10:
4330
4311
  isFeeAssetAh = origin === 'AssetHubPolkadot' && resolvedFeeAsset && assets.isAssetEqual(resolvedFeeAsset, originAsset);
4331
4312
  originBalanceAfter = originBalance - BigInt(currency.amount);
4332
4313
  originBalanceFeeAfter = isFeeAssetAh ? originBalanceFee - BigInt(currency.amount) : originBalanceFee - originFee;
4333
4314
  originBalanceNativeSufficient = originBalanceFee >= originFee;
4334
- originBalanceSufficient = originBalanceAfter >= edOriginBn;
4315
+ originBalanceSufficient = originBalanceAfter >= edOrigin;
4335
4316
  if (!assetHubFeeResult) {
4336
- _context.n = 13;
4317
+ _context.n = 12;
4337
4318
  break;
4338
4319
  }
4339
- _context.n = 12;
4320
+ _context.n = 11;
4340
4321
  return buildHopInfo({
4341
4322
  api: api,
4342
4323
  node: determineRelayChain(origin) === 'Polkadot' ? 'AssetHubPolkadot' : 'AssetHubKusama',
@@ -4346,15 +4327,15 @@ var getTransferInfo = /*#__PURE__*/function () {
4346
4327
  senderAddress: senderAddress,
4347
4328
  ahAddress: ahAddress
4348
4329
  });
4349
- case 12:
4330
+ case 11:
4350
4331
  assetHub = _context.v;
4351
- case 13:
4332
+ case 12:
4352
4333
  if (!bridgeHubFeeResult) {
4353
- _context.n = 15;
4334
+ _context.n = 14;
4354
4335
  break;
4355
4336
  }
4356
4337
  bridgeHubNode = determineRelayChain(origin) === 'Polkadot' ? 'BridgeHubPolkadot' : 'BridgeHubKusama';
4357
- _context.n = 14;
4338
+ _context.n = 13;
4358
4339
  return buildHopInfo({
4359
4340
  api: api,
4360
4341
  node: bridgeHubNode,
@@ -4364,10 +4345,10 @@ var getTransferInfo = /*#__PURE__*/function () {
4364
4345
  senderAddress: senderAddress,
4365
4346
  ahAddress: ahAddress
4366
4347
  });
4367
- case 14:
4348
+ case 13:
4368
4349
  bridgeHub = _context.v;
4369
- case 15:
4370
- _context.n = 16;
4350
+ case 14:
4351
+ _context.n = 15;
4371
4352
  return buildDestInfo({
4372
4353
  api: api,
4373
4354
  origin: origin,
@@ -4380,7 +4361,7 @@ var getTransferInfo = /*#__PURE__*/function () {
4380
4361
  assetHubFee: assetHubFeeResult === null || assetHubFeeResult === void 0 ? void 0 : assetHubFeeResult.fee,
4381
4362
  bridgeFee: bridgeHubFeeResult === null || bridgeHubFeeResult === void 0 ? void 0 : bridgeHubFeeResult.fee
4382
4363
  });
4383
- case 16:
4364
+ case 15:
4384
4365
  destinationInfo = _context.v;
4385
4366
  return _context.a(2, {
4386
4367
  chain: {
@@ -4394,7 +4375,7 @@ var getTransferInfo = /*#__PURE__*/function () {
4394
4375
  balance: originBalance,
4395
4376
  balanceAfter: originBalanceAfter,
4396
4377
  currencySymbol: originAsset.symbol,
4397
- existentialDeposit: edOriginBn
4378
+ existentialDeposit: edOrigin
4398
4379
  },
4399
4380
  xcmFee: {
4400
4381
  sufficient: originBalanceNativeSufficient,
@@ -4408,17 +4389,17 @@ var getTransferInfo = /*#__PURE__*/function () {
4408
4389
  bridgeHub: bridgeHub,
4409
4390
  destination: destinationInfo
4410
4391
  });
4411
- case 17:
4412
- _context.p = 17;
4392
+ case 16:
4393
+ _context.p = 16;
4413
4394
  api.setDisconnectAllowed(true);
4414
- _context.n = 18;
4395
+ _context.n = 17;
4415
4396
  return api.disconnect();
4397
+ case 17:
4398
+ return _context.f(16);
4416
4399
  case 18:
4417
- return _context.f(17);
4418
- case 19:
4419
4400
  return _context.a(2);
4420
4401
  }
4421
- }, _callee, null, [[3,, 17, 19]]);
4402
+ }, _callee, null, [[3,, 16, 18]]);
4422
4403
  }));
4423
4404
  return function getTransferInfo(_x) {
4424
4405
  return _ref2.apply(this, arguments);
@@ -4438,7 +4419,7 @@ var calculateTotalXcmFee = function calculateTotalXcmFee(feeResult) {
4438
4419
  };
4439
4420
  var verifyEdOnDestinationInternal = /*#__PURE__*/function () {
4440
4421
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
4441
- var api, tx, origin, destination, address, senderAddress, feeAsset, currency, destApi, asset, destCurrency, ed, edBN, balance, xcmFeeResult, dryRunError, assetHubFeeResult, bridgeHubFeeResult, _xcmFeeResult$destina, destFee, destFeeCurrency, destDryRunError, hopDryRunError, totalFee, method, feeToSubtract;
4422
+ var api, tx, origin, destination, address, senderAddress, feeAsset, currency, destApi, asset, destCurrency, ed, balance, xcmFeeResult, dryRunError, assetHubFeeResult, bridgeHubFeeResult, _xcmFeeResult$destina, destFee, destFeeCurrency, destDryRunError, hopDryRunError, totalFee, method, feeToSubtract;
4442
4423
  return _regenerator().w(function (_context) {
4443
4424
  while (1) switch (_context.n) {
4444
4425
  case 0:
@@ -4472,24 +4453,17 @@ var verifyEdOnDestinationInternal = /*#__PURE__*/function () {
4472
4453
  } : {
4473
4454
  symbol: asset.symbol
4474
4455
  };
4475
- ed = assets.getExistentialDeposit(destination, destCurrency);
4476
- if (!(ed === null)) {
4477
- _context.n = 5;
4478
- break;
4479
- }
4480
- throw new InvalidParameterError("Cannot get existential deposit for currency ".concat(JSON.stringify(currency)));
4481
- case 5:
4482
- edBN = BigInt(ed);
4483
- _context.n = 6;
4456
+ ed = assets.getExistentialDepositOrThrow(destination, destCurrency);
4457
+ _context.n = 5;
4484
4458
  return getAssetBalanceInternal({
4485
4459
  address: address,
4486
4460
  node: destination,
4487
4461
  api: destApi,
4488
4462
  currency: destCurrency
4489
4463
  });
4490
- case 6:
4464
+ case 5:
4491
4465
  balance = _context.v;
4492
- _context.n = 7;
4466
+ _context.n = 6;
4493
4467
  return getXcmFee({
4494
4468
  api: api,
4495
4469
  tx: tx,
@@ -4501,40 +4475,40 @@ var verifyEdOnDestinationInternal = /*#__PURE__*/function () {
4501
4475
  feeAsset: feeAsset,
4502
4476
  disableFallback: false
4503
4477
  });
4504
- case 7:
4478
+ case 6:
4505
4479
  xcmFeeResult = _context.v;
4506
4480
  dryRunError = xcmFeeResult.origin.dryRunError, assetHubFeeResult = xcmFeeResult.assetHub, bridgeHubFeeResult = xcmFeeResult.bridgeHub, _xcmFeeResult$destina = xcmFeeResult.destination, destFee = _xcmFeeResult$destina.fee, destFeeCurrency = _xcmFeeResult$destina.currency, destDryRunError = _xcmFeeResult$destina.dryRunError;
4507
4481
  if (!(destFee === undefined)) {
4508
- _context.n = 8;
4482
+ _context.n = 7;
4509
4483
  break;
4510
4484
  }
4511
- throw new InvalidParameterError("Cannot get destination xcm fee for currency ".concat(JSON.stringify(currency), " on node ").concat(destination, "."));
4512
- case 8:
4485
+ throw new InvalidParameterError("Cannot get destination xcm fee for currency ".concat(JSON.stringify(currency, sdkCommon.replaceBigInt), " on node ").concat(destination, "."));
4486
+ case 7:
4513
4487
  if (!dryRunError) {
4514
- _context.n = 9;
4488
+ _context.n = 8;
4515
4489
  break;
4516
4490
  }
4517
4491
  throw new DryRunFailedError(dryRunError, 'origin');
4518
- case 9:
4492
+ case 8:
4519
4493
  hopDryRunError = (assetHubFeeResult === null || assetHubFeeResult === void 0 ? void 0 : assetHubFeeResult.dryRunError) || (bridgeHubFeeResult === null || bridgeHubFeeResult === void 0 ? void 0 : bridgeHubFeeResult.dryRunError);
4520
4494
  if (!hopDryRunError) {
4521
- _context.n = 10;
4495
+ _context.n = 9;
4522
4496
  break;
4523
4497
  }
4524
4498
  throw new DryRunFailedError(hopDryRunError, assetHubFeeResult !== null && assetHubFeeResult !== void 0 && assetHubFeeResult.dryRunError ? 'assetHub' : 'bridgeHub');
4525
- case 10:
4499
+ case 9:
4526
4500
  if (!destDryRunError) {
4527
- _context.n = 11;
4501
+ _context.n = 10;
4528
4502
  break;
4529
4503
  }
4530
4504
  throw new UnableToComputeError("Unable to compute fee for the destination asset. Destination dry run error: ".concat(destDryRunError));
4531
- case 11:
4505
+ case 10:
4532
4506
  if (!(assets.normalizeSymbol(asset.symbol) !== assets.normalizeSymbol(destFeeCurrency))) {
4533
- _context.n = 12;
4507
+ _context.n = 11;
4534
4508
  break;
4535
4509
  }
4536
4510
  throw new UnableToComputeError("The XCM fee could not be calculated because the origin or destination chain does not support DryRun.\n As a result, fee estimation is only available through PaymentInfo, which provides the cost in the native asset.\n This limitation restricts support to transfers involving the native asset of the Destination chain only.");
4537
- case 12:
4511
+ case 11:
4538
4512
  totalFee = calculateTotalXcmFee(xcmFeeResult);
4539
4513
  method = api.getMethod(tx);
4540
4514
  if (method === 'transfer_assets_using_type_and_then' || method === 'transferAssetsUsingTypeAndThen') {
@@ -4542,7 +4516,7 @@ var verifyEdOnDestinationInternal = /*#__PURE__*/function () {
4542
4516
  } else {
4543
4517
  feeToSubtract = destFee;
4544
4518
  }
4545
- return _context.a(2, BigInt(currency.amount) - feeToSubtract > (balance < edBN ? edBN : 0));
4519
+ return _context.a(2, BigInt(currency.amount) - feeToSubtract > (balance < ed ? ed : 0));
4546
4520
  }
4547
4521
  }, _callee);
4548
4522
  }));
@@ -4669,54 +4643,48 @@ var getDestXcmFee = /*#__PURE__*/function () {
4669
4643
  }
4670
4644
  return _context.a(2, 0n);
4671
4645
  case 1:
4672
- originAsset = assets.findAsset(origin, currency, destination);
4673
- if (originAsset) {
4674
- _context.n = 2;
4675
- break;
4676
- }
4677
- throw new assets.InvalidCurrencyError("Currency ".concat(JSON.stringify(currency, replaceBigInt), " not found in ").concat(origin));
4678
- case 2:
4646
+ originAsset = assets.findAssetForNodeOrThrow(origin, currency, destination);
4679
4647
  if (!originAsset.multiLocation) {
4680
- _context.n = 8;
4648
+ _context.n = 7;
4681
4649
  break;
4682
4650
  }
4683
- _context.p = 3;
4684
- _context.n = 4;
4651
+ _context.p = 2;
4652
+ _context.n = 3;
4685
4653
  return getReverseTxFee(_objectSpread2(_objectSpread2({}, options), {}, {
4686
4654
  destination: destination
4687
4655
  }), {
4688
4656
  multilocation: originAsset.multiLocation
4689
4657
  });
4690
- case 4:
4658
+ case 3:
4691
4659
  return _context.a(2, _context.v);
4692
- case 5:
4693
- _context.p = 5;
4660
+ case 4:
4661
+ _context.p = 4;
4694
4662
  _t = _context.v;
4695
4663
  if (!(_t instanceof assets.InvalidCurrencyError)) {
4696
- _context.n = 7;
4664
+ _context.n = 6;
4697
4665
  break;
4698
4666
  }
4699
- _context.n = 6;
4667
+ _context.n = 5;
4700
4668
  return getReverseTxFee(_objectSpread2(_objectSpread2({}, options), {}, {
4701
4669
  destination: destination
4702
4670
  }), {
4703
4671
  symbol: originAsset.symbol
4704
4672
  });
4705
- case 6:
4673
+ case 5:
4706
4674
  return _context.a(2, _context.v);
4707
- case 7:
4675
+ case 6:
4708
4676
  throw _t;
4709
- case 8:
4710
- _context.n = 9;
4677
+ case 7:
4678
+ _context.n = 8;
4711
4679
  return getReverseTxFee(_objectSpread2(_objectSpread2({}, options), {}, {
4712
4680
  destination: destination
4713
4681
  }), {
4714
4682
  symbol: originAsset.symbol
4715
4683
  });
4716
- case 9:
4684
+ case 8:
4717
4685
  return _context.a(2, _context.v);
4718
4686
  }
4719
- }, _callee, null, [[3, 5]]);
4687
+ }, _callee, null, [[2, 4]]);
4720
4688
  }));
4721
4689
  return function calcPaymentInfoFee() {
4722
4690
  return _ref2.apply(this, arguments);
@@ -5143,7 +5111,7 @@ var validateAssetSupport = function validateAssetSupport(_ref, assetCheckEnabled
5143
5111
  var isRelayDestination = !sdkCommon.isTMultiLocation(destination) && sdkCommon.isRelayChain(destination);
5144
5112
  var isMultiLocationDestination = _typeof(destination) === 'object';
5145
5113
  if (!isBridge && !isRelayDestination && !isMultiLocationDestination && (asset === null || asset === void 0 ? void 0 : asset.symbol) !== undefined && assetCheckEnabled && !('id' in currency) && !assets.hasSupportForAsset(destination, asset.symbol)) {
5146
- throw new assets.InvalidCurrencyError("Destination node ".concat(destination, " does not support currency ").concat(JSON.stringify(currency), "."));
5114
+ throw new assets.InvalidCurrencyError("Destination node ".concat(destination, " does not support currency ").concat(JSON.stringify(currency, sdkCommon.replaceBigInt), "."));
5147
5115
  }
5148
5116
  if (!isBridge && asset === null && assetCheckEnabled) {
5149
5117
  throwUnsupportedCurrency(currency, origin);
@@ -5185,7 +5153,7 @@ var resolveOverriddenAsset = function resolveOverriddenAsset(options, isBridge,
5185
5153
  var assets$1 = currency.multiasset.map(function (currency) {
5186
5154
  var asset = assets.findAsset(origin, currency, !sdkCommon.isTMultiLocation(destination) ? destination : null);
5187
5155
  if (asset && !asset.multiLocation) {
5188
- throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(currency), " does not have a multiLocation"));
5156
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(currency, sdkCommon.replaceBigInt), " does not have a multiLocation"));
5189
5157
  }
5190
5158
  if (!asset) {
5191
5159
  throw new assets.InvalidCurrencyError("Origin node ".concat(origin, " does not support currency ").concat(JSON.stringify(currency)));
@@ -5953,7 +5921,8 @@ var ParachainNode = /*#__PURE__*/function () {
5953
5921
  input = {
5954
5922
  api: api,
5955
5923
  asset: asset,
5956
- addressSelection: createVersionedBeneficiary({
5924
+ // Refactor this
5925
+ destLocation: createBeneficiary({
5957
5926
  api: api,
5958
5927
  scenario: scenario,
5959
5928
  pallet: 'XTokens',
@@ -5987,7 +5956,8 @@ var ParachainNode = /*#__PURE__*/function () {
5987
5956
  api: api,
5988
5957
  asset: asset,
5989
5958
  recipientAddress: address,
5990
- paraId: paraId,
5959
+ paraIdTo: paraId,
5960
+ scenario: scenario,
5991
5961
  origin: this.node,
5992
5962
  destination: destination,
5993
5963
  overriddenAsset: overriddenAsset,
@@ -6001,8 +5971,8 @@ var ParachainNode = /*#__PURE__*/function () {
6001
5971
  }
6002
5972
  _options = {
6003
5973
  api: api,
6004
- header: this.createVersionedDestination(scenario, version, destination, paraId),
6005
- addressSelection: createVersionedBeneficiary({
5974
+ destLocation: createDestination(scenario, version, destination, paraId),
5975
+ beneficiaryLocation: createBeneficiary({
6006
5976
  api: api,
6007
5977
  scenario: scenario,
6008
5978
  pallet: 'PolkadotXcm',
@@ -6011,7 +5981,7 @@ var ParachainNode = /*#__PURE__*/function () {
6011
5981
  paraId: paraId
6012
5982
  }),
6013
5983
  address: address,
6014
- currencySelection: this.createCurrencySpec(asset.amount, scenario, version, asset, overriddenAsset !== undefined),
5984
+ multiAsset: this.createCurrencySpec(asset.amount, scenario, version, asset, overriddenAsset !== undefined),
6015
5985
  overriddenAsset: overriddenAsset,
6016
5986
  asset: asset,
6017
5987
  currency: currency,
@@ -6082,16 +6052,11 @@ var ParachainNode = /*#__PURE__*/function () {
6082
6052
  }, {
6083
6053
  key: "createCurrencySpec",
6084
6054
  value: function createCurrencySpec(amount, scenario, version, _asset, _isOverridenAsset) {
6085
- return createVersionedMultiAssets(version, amount, {
6055
+ return createMultiAsset(version, amount, {
6086
6056
  parents: scenario === 'ParaToRelay' ? sdkCommon.Parents.ONE : sdkCommon.Parents.ZERO,
6087
6057
  interior: 'Here'
6088
6058
  });
6089
6059
  }
6090
- }, {
6091
- key: "createVersionedDestination",
6092
- value: function createVersionedDestination$1(scenario, version, destination, paraId) {
6093
- return createVersionedDestination(scenario, version, destination, paraId);
6094
- }
6095
6060
  }, {
6096
6061
  key: "getNativeAssetSymbol",
6097
6062
  value: function getNativeAssetSymbol() {
@@ -6202,13 +6167,13 @@ var ParachainNode = /*#__PURE__*/function () {
6202
6167
  throw new DryRunFailedError(dryRunResult.origin.failureReason);
6203
6168
  case 5:
6204
6169
  // Pad fee by 50%
6205
- dryRunFeePadded = BigInt(dryRunResult.origin.fee) * BigInt(3) / BigInt(2);
6170
+ dryRunFeePadded = BigInt(dryRunResult.origin.fee) * 3n / 2n;
6206
6171
  dest = createDestination(scenario, version, destination, paraIdTo);
6207
6172
  call = {
6208
6173
  module: 'PolkadotXcm',
6209
6174
  method: 'transfer_assets_using_type_and_then',
6210
6175
  parameters: {
6211
- dest: this.createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6176
+ dest: createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6212
6177
  assets: addXcmVersionHeader([].concat(_toConsumableArray(!feeAsset ? [createMultiAsset(version, PARA_TO_PARA_FEE_DOT, DOT_MULTILOCATION)] : []), [ethMultiAsset]), version),
6213
6178
  assets_transfer_type: 'DestinationReserve',
6214
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),
@@ -6265,7 +6230,7 @@ var ParachainNode = /*#__PURE__*/function () {
6265
6230
  };
6266
6231
  return _context2.a(2, api.callTxMethod(call));
6267
6232
  }
6268
- }, _callee2, this);
6233
+ }, _callee2);
6269
6234
  }));
6270
6235
  function transferEthAssetViaAH(_x2) {
6271
6236
  return _transferEthAssetViaAH.apply(this, arguments);
@@ -6393,7 +6358,7 @@ var ParachainNode = /*#__PURE__*/function () {
6393
6358
  module: 'PolkadotXcm',
6394
6359
  method: 'transfer_assets_using_type_and_then',
6395
6360
  parameters: {
6396
- dest: this.createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6361
+ dest: createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
6397
6362
  assets: addXcmVersionHeader([].concat(_toConsumableArray(!feeAsset ? [createMultiAsset(version, fee, DOT_MULTILOCATION)] : []), [ethMultiAsset]), version),
6398
6363
  assets_transfer_type: 'DestinationReserve',
6399
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),
@@ -6478,46 +6443,35 @@ var Acala = /*#__PURE__*/function (_ParachainNode) {
6478
6443
  }]);
6479
6444
  }(ParachainNode);
6480
6445
 
6481
- var PolkadotXCMTransferImpl = /*#__PURE__*/function () {
6482
- function PolkadotXCMTransferImpl() {
6483
- _classCallCheck(this, PolkadotXCMTransferImpl);
6484
- }
6485
- return _createClass(PolkadotXCMTransferImpl, null, [{
6486
- key: "transferPolkadotXCM",
6487
- value: function transferPolkadotXCM(_ref, method) {
6488
- var api = _ref.api,
6489
- header = _ref.header,
6490
- asset = _ref.asset,
6491
- addressSelection = _ref.addressSelection,
6492
- currencySelection = _ref.currencySelection,
6493
- overriddenAsset = _ref.overriddenAsset,
6494
- pallet = _ref.pallet,
6495
- methodOverride = _ref.method;
6496
- var fees = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
6497
- var _extractVersionFromHe = extractVersionFromHeader(currencySelection),
6498
- _extractVersionFromHe2 = _slicedToArray(_extractVersionFromHe, 2),
6499
- version = _extractVersionFromHe2[0],
6500
- multiAssets = _extractVersionFromHe2[1];
6501
- var resolvedMultiAssets = addXcmVersionHeader(maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset), version);
6502
- var feeAssetIndex = overriddenAsset === undefined || sdkCommon.isTMultiLocation(overriddenAsset) ? DEFAULT_FEE_ASSET : overriddenAsset.findIndex(function (asset) {
6503
- return asset.isFeeAsset;
6504
- });
6505
- var call = {
6506
- module: pallet !== null && pallet !== void 0 ? pallet : 'PolkadotXcm',
6507
- method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
6508
- parameters: _objectSpread2({
6509
- dest: header,
6510
- beneficiary: addressSelection,
6511
- assets: resolvedMultiAssets,
6512
- fee_asset_item: feeAssetIndex
6513
- }, fees !== undefined ? {
6514
- weight_limit: fees
6515
- } : {})
6516
- };
6517
- return api.callTxMethod(call);
6518
- }
6519
- }]);
6520
- }();
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
+ };
6521
6475
 
6522
6476
  var Ajuna = /*#__PURE__*/function (_ParachainNode) {
6523
6477
  function Ajuna() {
@@ -6541,7 +6495,7 @@ var Ajuna = /*#__PURE__*/function (_ParachainNode) {
6541
6495
  }, {
6542
6496
  key: "transferPolkadotXCM",
6543
6497
  value: function transferPolkadotXCM(input) {
6544
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'transfer_assets', 'Unlimited'));
6498
+ return transferPolkadotXcm(input, 'transfer_assets', 'Unlimited');
6545
6499
  }
6546
6500
  }, {
6547
6501
  key: "canUseXTokens",
@@ -6669,7 +6623,7 @@ var AssetHubKusama = /*#__PURE__*/function (_ParachainNode) {
6669
6623
  // TESTED https://kusama.subscan.io/xcm_message/kusama-ddc2a48f0d8e0337832d7aae26f6c3053e1f4ffd
6670
6624
  // TESTED https://kusama.subscan.io/xcm_message/kusama-8e423130a4d8b61679af95dbea18a55124f99672
6671
6625
  if (destination === 'AssetHubPolkadot') {
6672
- return Promise.resolve(getNode('AssetHubPolkadot').handleBridgeTransfer(input, 'Polkadot'));
6626
+ return getNode('AssetHubPolkadot').handleBridgeTransfer(input, 'Polkadot');
6673
6627
  }
6674
6628
  var isSystemNode = !sdkCommon.isTMultiLocation(destination) && SYSTEM_NODES_KUSAMA.includes(destination);
6675
6629
  if (scenario === 'ParaToPara' && asset.symbol === 'KSM' && !assets.isForeignAsset(asset) && !isSystemNode) {
@@ -6679,7 +6633,7 @@ var AssetHubKusama = /*#__PURE__*/function (_ParachainNode) {
6679
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>}.');
6680
6634
  }
6681
6635
  var method = scenario === 'ParaToPara' && !isSystemNode ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
6682
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
6636
+ return transferPolkadotXcm(input, method, 'Unlimited');
6683
6637
  }
6684
6638
  }, {
6685
6639
  key: "getRelayToParaOverrides",
@@ -7038,7 +6992,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7038
6992
  module: 'PolkadotXcm',
7039
6993
  method: 'transfer_assets_using_type_and_then',
7040
6994
  parameters: {
7041
- dest: _this.createVersionedDestination(scenario, version, destination, paraIdTo),
6995
+ dest: createVersionedDestination(scenario, version, destination, paraIdTo),
7042
6996
  assets: addXcmVersionHeader([].concat(_toConsumableArray(useDOTAsFeeAsset ? [createMultiAsset(version, PARA_TO_PARA_FEE_DOT, DOT_MULTILOCATION)] : []), [createMultiAsset(version, asset.amount, asset.multiLocation)]), version),
7043
6997
  assets_transfer_type: 'LocalReserve',
7044
6998
  remote_fees_id: addXcmVersionHeader(useDOTAsFeeAsset ? DOT_MULTILOCATION : asset.multiLocation, version),
@@ -7065,8 +7019,8 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7065
7019
  paraIdTo = input.paraIdTo;
7066
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') {
7067
7021
  var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7068
- header: createBridgePolkadotXcmDest(version, targetChain, destination, paraIdTo),
7069
- addressSelection: createVersionedBeneficiary({
7022
+ destLocation: createBridgeDestination(targetChain, destination, paraIdTo),
7023
+ beneficiaryLocation: createBeneficiary({
7070
7024
  api: api,
7071
7025
  scenario: scenario,
7072
7026
  pallet: 'PolkadotXcm',
@@ -7074,15 +7028,15 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7074
7028
  version: version,
7075
7029
  paraId: paraIdTo
7076
7030
  }),
7077
- currencySelection: createVersionedMultiAssets(version, asset.amount, asset.multiLocation)
7031
+ multiAsset: createMultiAsset(version, asset.amount, asset.multiLocation)
7078
7032
  });
7079
- return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited');
7033
+ return transferPolkadotXcm(modifiedInput, 'transfer_assets', 'Unlimited');
7080
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') {
7081
7035
  var _modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7082
- header: createBridgePolkadotXcmDest(version, targetChain, destination, paraIdTo),
7083
- currencySelection: createVersionedMultiAssets(version, asset.amount, DOT_MULTILOCATION)
7036
+ destLocation: createBridgeDestination(targetChain, destination, paraIdTo),
7037
+ multiAsset: createMultiAsset(version, asset.amount, DOT_MULTILOCATION)
7084
7038
  });
7085
- return PolkadotXCMTransferImpl.transferPolkadotXCM(_modifiedInput, 'limited_reserve_transfer_assets', 'Unlimited');
7039
+ return transferPolkadotXcm(_modifiedInput, 'limited_reserve_transfer_assets', 'Unlimited');
7086
7040
  }
7087
7041
  throw new assets.InvalidCurrencyError("Polkadot <-> Kusama bridge does not support currency ".concat(asset.symbol));
7088
7042
  }
@@ -7211,8 +7165,8 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7211
7165
  return _context2.a(2, this.handleEthBridgeNativeTransfer(input));
7212
7166
  case 5:
7213
7167
  modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7214
- header: createVersionedDestination(scenario, this.version, destination, paraIdTo, ETHEREUM_JUNCTION, sdkCommon.Parents.TWO),
7215
- addressSelection: createVersionedBeneficiary({
7168
+ destLocation: createDestination(scenario, this.version, destination, paraIdTo, ETHEREUM_JUNCTION, sdkCommon.Parents.TWO),
7169
+ beneficiaryLocation: createBeneficiary({
7216
7170
  api: api,
7217
7171
  scenario: scenario,
7218
7172
  pallet: 'PolkadotXcm',
@@ -7220,9 +7174,9 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7220
7174
  version: this.version,
7221
7175
  paraId: paraIdTo
7222
7176
  }),
7223
- currencySelection: createVersionedMultiAssets(version, asset.amount, asset.multiLocation)
7177
+ multiAsset: createMultiAsset(version, asset.amount, asset.multiLocation)
7224
7178
  });
7225
- return _context2.a(2, PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'transfer_assets', 'Unlimited'));
7179
+ return _context2.a(2, transferPolkadotXcm(modifiedInput, 'transfer_assets', 'Unlimited'));
7226
7180
  }
7227
7181
  }, _callee2, this);
7228
7182
  }));
@@ -7251,8 +7205,8 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7251
7205
  }
7252
7206
  };
7253
7207
  var modifiedInput = _objectSpread2(_objectSpread2({}, input), {}, {
7254
- header: this.createVersionedDestination(scenario, version, destination, paraId),
7255
- addressSelection: createVersionedBeneficiary({
7208
+ destLocation: createDestination(scenario, version, destination, paraId),
7209
+ beneficiaryLocation: createBeneficiary({
7256
7210
  api: api,
7257
7211
  scenario: scenario,
7258
7212
  pallet: 'PolkadotXcm',
@@ -7260,9 +7214,9 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7260
7214
  version: version,
7261
7215
  paraId: paraId
7262
7216
  }),
7263
- currencySelection: createVersionedMultiAssets(version, asset.amount, customMultiLocation)
7217
+ multiAsset: createMultiAsset(version, asset.amount, customMultiLocation)
7264
7218
  });
7265
- return PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, 'limited_teleport_assets', 'Unlimited');
7219
+ return transferPolkadotXcm(modifiedInput, 'limited_teleport_assets', 'Unlimited');
7266
7220
  }
7267
7221
  }, {
7268
7222
  key: "patchInput",
@@ -7273,7 +7227,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7273
7227
  version = _input$version === void 0 ? this.version : _input$version;
7274
7228
  if ((destination === 'Hydration' || destination === 'Polimec' || destination === 'Moonbeam' || destination === 'BifrostPolkadot') && asset.symbol === 'DOT') {
7275
7229
  return _objectSpread2(_objectSpread2({}, input), {}, {
7276
- currencySelection: createVersionedMultiAssets(version, asset.amount, DOT_MULTILOCATION)
7230
+ multiAsset: createMultiAsset(version, asset.amount, DOT_MULTILOCATION)
7277
7231
  });
7278
7232
  }
7279
7233
  return input;
@@ -7289,7 +7243,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7289
7243
  key: "handleExecuteTransfer",
7290
7244
  value: function () {
7291
7245
  var _handleExecuteTransfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(input) {
7292
- 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;
7293
7247
  return _regenerator().w(function (_context3) {
7294
7248
  while (1) switch (_context3.n) {
7295
7249
  case 0:
@@ -7306,6 +7260,12 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7306
7260
  base = BigInt(Math.pow(10, decimals));
7307
7261
  scaledMultiplier = BigInt(Math.floor(multiplier * Math.pow(10, decimals)));
7308
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);
7309
7269
  call = createExecuteCall(createExecuteXcm(input, MIN_FEE, version), MAX_WEIGHT);
7310
7270
  _context3.n = 2;
7311
7271
  return api.getDryRunCall({
@@ -7323,6 +7283,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7323
7283
  throw new DryRunFailedError(dryRunResult.failureReason);
7324
7284
  case 3:
7325
7285
  paddedFee = dryRunResult.fee * 120n / 100n;
7286
+ checkAmount(paddedFee);
7326
7287
  xcm = createExecuteXcm(input, paddedFee, version);
7327
7288
  _context3.n = 4;
7328
7289
  return api.getXcmWeight(xcm);
@@ -7420,7 +7381,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7420
7381
  case 11:
7421
7382
  method = this.getMethod(scenario, destination);
7422
7383
  modifiedInput = this.patchInput(input);
7423
- return _context4.a(2, PolkadotXCMTransferImpl.transferPolkadotXCM(modifiedInput, method, 'Unlimited'));
7384
+ return _context4.a(2, transferPolkadotXcm(modifiedInput, method, 'Unlimited'));
7424
7385
  }
7425
7386
  }, _callee4, this);
7426
7387
  }));
@@ -7451,7 +7412,7 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7451
7412
  throw new assets.InvalidCurrencyError('Asset does not have a multiLocation defined');
7452
7413
  }
7453
7414
  var transformedMultiLocation = sdkCommon.hasJunction(multiLocation, 'Parachain', 1000) ? transformMultiLocation(multiLocation) : multiLocation;
7454
- return createVersionedMultiAssets(version, amount, transformedMultiLocation);
7415
+ return createMultiAsset(version, amount, transformedMultiLocation);
7455
7416
  } else {
7456
7417
  return _superPropGet(AssetHubPolkadot, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
7457
7418
  }
@@ -7502,7 +7463,7 @@ var Astar = /*#__PURE__*/function (_ParachainNode) {
7502
7463
  return _createClass(Astar, [{
7503
7464
  key: "transferPolkadotXCM",
7504
7465
  value: function transferPolkadotXCM(input) {
7505
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
7466
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
7506
7467
  }
7507
7468
  }, {
7508
7469
  key: "transferXTokens",
@@ -7642,8 +7603,8 @@ var BifrostPolkadot = /*#__PURE__*/function (_ParachainNode) {
7642
7603
  value: function transferToAssetHub(input) {
7643
7604
  var _getAssetId;
7644
7605
  var asset = input.asset;
7645
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
7646
- currencySelection: createVersionedMultiAssets(this.version, asset.amount, {
7606
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
7607
+ multiAsset: createMultiAsset(this.version, asset.amount, {
7647
7608
  parents: asset.symbol === 'DOT' ? sdkCommon.Parents.ONE : sdkCommon.Parents.TWO,
7648
7609
  interior: asset.symbol === 'WETH' ? {
7649
7610
  X2: [ETHEREUM_JUNCTION, {
@@ -7653,7 +7614,7 @@ var BifrostPolkadot = /*#__PURE__*/function (_ParachainNode) {
7653
7614
  }]
7654
7615
  } : 'Here'
7655
7616
  })
7656
- }), 'transfer_assets', 'Unlimited'));
7617
+ }), 'transfer_assets', 'Unlimited');
7657
7618
  }
7658
7619
  }, {
7659
7620
  key: "transferPolkadotXCM",
@@ -7709,7 +7670,7 @@ var BridgeHubKusama = /*#__PURE__*/function (_ParachainNode) {
7709
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.');
7710
7671
  }
7711
7672
  var method = 'limited_teleport_assets';
7712
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7673
+ return transferPolkadotXcm(input, method, 'Unlimited');
7713
7674
  }
7714
7675
  }, {
7715
7676
  key: "getRelayToParaOverrides",
@@ -7736,7 +7697,7 @@ var BridgeHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
7736
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.');
7737
7698
  }
7738
7699
  var method = 'limited_teleport_assets';
7739
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7700
+ return transferPolkadotXcm(input, method, 'Unlimited');
7740
7701
  }
7741
7702
  }, {
7742
7703
  key: "getRelayToParaOverrides",
@@ -7813,7 +7774,7 @@ var Collectives = /*#__PURE__*/function (_ParachainNode) {
7813
7774
  if (scenario === 'ParaToPara') {
7814
7775
  throw new ScenarioNotSupportedError(this.node, scenario);
7815
7776
  }
7816
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_teleport_assets', 'Unlimited'));
7777
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
7817
7778
  }
7818
7779
  }, {
7819
7780
  key: "getRelayToParaOverrides",
@@ -7823,11 +7784,6 @@ var Collectives = /*#__PURE__*/function (_ParachainNode) {
7823
7784
  includeFee: true
7824
7785
  };
7825
7786
  }
7826
- }, {
7827
- key: "createCurrencySpec",
7828
- value: function createCurrencySpec(amount, scenario, version, asset) {
7829
- return _superPropGet(Collectives, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
7830
- }
7831
7787
  }]);
7832
7788
  }(ParachainNode);
7833
7789
 
@@ -7861,7 +7817,7 @@ var CoretimeKusama = /*#__PURE__*/function (_ParachainNode) {
7861
7817
  // TESTED block hash on Rococo: 0x78ace0f1bf7cac9a42e56143321b617d98327e2750f795efb0abb833025c9082
7862
7818
  var scenario = input.scenario;
7863
7819
  var method = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
7864
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7820
+ return transferPolkadotXcm(input, method, 'Unlimited');
7865
7821
  }
7866
7822
  }, {
7867
7823
  key: "getRelayToParaOverrides",
@@ -7885,7 +7841,7 @@ var CoretimePolkadot = /*#__PURE__*/function (_ParachainNode) {
7885
7841
  value: function transferPolkadotXCM(input) {
7886
7842
  var scenario = input.scenario;
7887
7843
  var method = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
7888
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
7844
+ return transferPolkadotXcm(input, method, 'Unlimited');
7889
7845
  }
7890
7846
  }, {
7891
7847
  key: "getRelayToParaOverrides",
@@ -7909,7 +7865,7 @@ var Crab = /*#__PURE__*/function (_ParachainNode) {
7909
7865
  value: function transferPolkadotXCM(input) {
7910
7866
  // TESTED https://kusama.subscan.io/xcm_message/kusama-ce7396ec470ba0c6516a50075046ee65464572dc
7911
7867
  if (input.scenario === 'ParaToPara') {
7912
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'reserve_transfer_assets'));
7868
+ return transferPolkadotXcm(input, 'reserve_transfer_assets');
7913
7869
  }
7914
7870
  throw new ScenarioNotSupportedError(this.node, input.scenario);
7915
7871
  }
@@ -7922,7 +7878,7 @@ var Crab = /*#__PURE__*/function (_ParachainNode) {
7922
7878
  key: "createCurrencySpec",
7923
7879
  value: function createCurrencySpec(amount, scenario, version, _asset) {
7924
7880
  if (scenario === 'ParaToPara') {
7925
- return createVersionedMultiAssets(version, amount, {
7881
+ return createMultiAsset(version, amount, {
7926
7882
  parents: sdkCommon.Parents.ZERO,
7927
7883
  interior: {
7928
7884
  X1: {
@@ -8063,13 +8019,13 @@ var Darwinia = /*#__PURE__*/function (_ParachainNode) {
8063
8019
  if (scenario === 'ParaToPara' && asset.symbol !== this.getNativeAssetSymbol()) {
8064
8020
  throw new ScenarioNotSupportedError(this.node, scenario);
8065
8021
  }
8066
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8022
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8067
8023
  }
8068
8024
  }, {
8069
8025
  key: "createCurrencySpec",
8070
8026
  value: function createCurrencySpec(amount, scenario, version, _asset) {
8071
8027
  if (scenario === 'ParaToPara') {
8072
- return createVersionedMultiAssets(version, amount, {
8028
+ return createMultiAsset(version, amount, {
8073
8029
  parents: sdkCommon.Parents.ZERO,
8074
8030
  interior: {
8075
8031
  X1: {
@@ -8118,7 +8074,7 @@ var Encointer = /*#__PURE__*/function (_ParachainNode) {
8118
8074
  // NO PARA TO PARA SCENARIOS ON SUBSCAN
8119
8075
  // TESTED https://encointer.subscan.io/xcm_message/kusama-418501e86e947b16c4e4e9040694017e64f9b162
8120
8076
  if (input.scenario === 'ParaToRelay') {
8121
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_teleport_assets', 'Unlimited'));
8077
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
8122
8078
  }
8123
8079
  throw new ScenarioNotSupportedError(this.node, input.scenario);
8124
8080
  }
@@ -8150,7 +8106,7 @@ var Heima = /*#__PURE__*/function (_ParachainNode) {
8150
8106
  if (asset.symbol !== this.getNativeAssetSymbol()) {
8151
8107
  throw new assets.InvalidCurrencyError("Asset ".concat(asset.symbol, " is not supported by node ").concat(this.node, "."));
8152
8108
  }
8153
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8109
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8154
8110
  }
8155
8111
  }]);
8156
8112
  }(ParachainNode);
@@ -8170,9 +8126,9 @@ var getAssetMultiLocation = function getAssetMultiLocation(asset) {
8170
8126
  };
8171
8127
  var createTransferAssetsTransfer = function createTransferAssetsTransfer(options, version) {
8172
8128
  var asset = options.asset;
8173
- var currencySelection = addXcmVersionHeader([createMultiAsset(version, asset.amount, getAssetMultiLocation(asset))], version);
8174
- return PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, options), {}, {
8175
- currencySelection: currencySelection
8129
+ var location = getAssetMultiLocation(asset);
8130
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, options), {}, {
8131
+ multiAsset: createMultiAsset(version, asset.amount, location)
8176
8132
  }), 'transfer_assets', 'Unlimited');
8177
8133
  };
8178
8134
  var createTypeAndThenDest = function createTypeAndThenDest(destination, scenario, version) {
@@ -8273,7 +8229,7 @@ var Polimec = /*#__PURE__*/function (_ParachainNode) {
8273
8229
  break;
8274
8230
  }
8275
8231
  _call = createTypeAndThenTransfer(input, version);
8276
- return _context.a(2, Promise.resolve(api.callTxMethod(_call)));
8232
+ return _context.a(2, api.callTxMethod(_call));
8277
8233
  case 1:
8278
8234
  if (!(scenario === 'ParaToPara' && (destination === 'AssetHubPolkadot' || destination === 'Hydration'))) {
8279
8235
  _context.n = 2;
@@ -8373,7 +8329,7 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
8373
8329
  module: 'PolkadotXcm',
8374
8330
  method: 'transfer_assets_using_type_and_then',
8375
8331
  parameters: {
8376
- dest: this.createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
8332
+ dest: createVersionedDestination(scenario, version, destination, getParaId('AssetHubPolkadot')),
8377
8333
  assets: _defineProperty({}, version, [createMultiAsset(version, asset.amount, DOT_MULTILOCATION)]),
8378
8334
  assets_transfer_type: 'DestinationReserve',
8379
8335
  remote_fees_id: _defineProperty({}, version, {
@@ -8397,7 +8353,7 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
8397
8353
  var symbol = asset.symbol.toUpperCase();
8398
8354
  if (symbol === 'DOT') {
8399
8355
  var call = createTypeAndThenTransfer(options, version);
8400
- return api.callTxMethod(call);
8356
+ return Promise.resolve(api.callTxMethod(call));
8401
8357
  }
8402
8358
  if ((symbol === 'USDC' || symbol === 'USDT') && !sdkCommon.hasJunction(asset.multiLocation, 'Parachain', getParaId('AssetHubPolkadot'))) {
8403
8359
  throw new assets.InvalidCurrencyError('The selected asset is not supported for transfer to Polimec');
@@ -8579,7 +8535,7 @@ var KiltSpiritnet = /*#__PURE__*/function (_ParachainNode) {
8579
8535
  if (scenario === 'ParaToPara' && asset.symbol !== this.getNativeAssetSymbol()) {
8580
8536
  throw new ScenarioNotSupportedError(this.node, scenario, 'KiltSpiritnet only supports native asset ParaToPara transfers');
8581
8537
  }
8582
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8538
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8583
8539
  }
8584
8540
  }, {
8585
8541
  key: "transferRelayToPara",
@@ -8722,9 +8678,9 @@ var Moonbeam = /*#__PURE__*/function (_ParachainNode) {
8722
8678
  return this.transferToEthereum(input);
8723
8679
  }
8724
8680
  var multiLocation = this.getMultiLocation(asset, scenario);
8725
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
8726
- currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
8727
- }), 'transfer_assets', 'Unlimited'));
8681
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
8682
+ multiAsset: createMultiAsset(version, asset.amount, multiLocation)
8683
+ }), 'transfer_assets', 'Unlimited');
8728
8684
  }
8729
8685
  }, {
8730
8686
  key: "getRelayToParaOverrides",
@@ -8790,9 +8746,9 @@ var Moonriver = /*#__PURE__*/function (_ParachainNode) {
8790
8746
  _input$version = input.version,
8791
8747
  version = _input$version === void 0 ? this.version : _input$version;
8792
8748
  var multiLocation = this.getMultiLocation(asset, scenario);
8793
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(_objectSpread2(_objectSpread2({}, input), {}, {
8794
- currencySelection: createVersionedMultiAssets(version, asset.amount, multiLocation)
8795
- }), 'transfer_assets', 'Unlimited'));
8749
+ return transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
8750
+ multiAsset: createMultiAsset(version, asset.amount, multiLocation)
8751
+ }), 'transfer_assets', 'Unlimited');
8796
8752
  }
8797
8753
  }, {
8798
8754
  key: "getRelayToParaOverrides",
@@ -8829,7 +8785,7 @@ var Mythos = /*#__PURE__*/function (_ParachainNode) {
8829
8785
  if (asset.symbol !== nativeSymbol) {
8830
8786
  throw new assets.InvalidCurrencyError("Node ".concat(this.node, " does not support currency ").concat(asset.symbol));
8831
8787
  }
8832
- 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');
8833
8789
  }
8834
8790
  }, {
8835
8791
  key: "transferPolkadotXCM",
@@ -8876,7 +8832,7 @@ var NeuroWeb = /*#__PURE__*/function (_ParachainNode) {
8876
8832
  return _createClass(NeuroWeb, [{
8877
8833
  key: "transferPolkadotXCM",
8878
8834
  value: function transferPolkadotXCM(input) {
8879
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8835
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8880
8836
  }
8881
8837
  }]);
8882
8838
  }(ParachainNode);
@@ -8898,7 +8854,7 @@ var Nodle = /*#__PURE__*/function (_ParachainNode) {
8898
8854
  if (asset.symbol !== this.getNativeAssetSymbol()) {
8899
8855
  throw new assets.InvalidCurrencyError("Asset ".concat(asset.symbol, " is not supported by node ").concat(this.node, "."));
8900
8856
  }
8901
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
8857
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
8902
8858
  }
8903
8859
  }, {
8904
8860
  key: "transferRelayToPara",
@@ -9006,7 +8962,7 @@ var PeopleKusama = /*#__PURE__*/function (_ParachainNode) {
9006
8962
  throw new ScenarioNotSupportedError(this.node, scenario);
9007
8963
  }
9008
8964
  var method = 'limited_teleport_assets';
9009
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
8965
+ return transferPolkadotXcm(input, method, 'Unlimited');
9010
8966
  }
9011
8967
  }, {
9012
8968
  key: "getRelayToParaOverrides",
@@ -9032,8 +8988,7 @@ var PeoplePolkadot = /*#__PURE__*/function (_ParachainNode) {
9032
8988
  if (scenario === 'ParaToPara') {
9033
8989
  throw new ScenarioNotSupportedError(this.node, scenario);
9034
8990
  }
9035
- var method = 'limited_teleport_assets';
9036
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, method, 'Unlimited'));
8991
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
9037
8992
  }
9038
8993
  }, {
9039
8994
  key: "getRelayToParaOverrides",
@@ -9059,77 +9014,50 @@ var determineDestWeight = function determineDestWeight(destNode) {
9059
9014
  proof_size: 0n
9060
9015
  };
9061
9016
  }
9062
- throw new NodeNotSupportedError("Node ".concat(destNode, " is not supported"));
9017
+ throw new NodeNotSupportedError("Pallet XTransfer does not support transfering to ".concat(destNode, "."));
9063
9018
  };
9064
9019
 
9065
- var getDestination = function getDestination(_ref) {
9066
- var recipientAddress = _ref.recipientAddress,
9067
- paraId = _ref.paraId,
9068
- api = _ref.api;
9069
- var isMultiLocation = _typeof(recipientAddress) === 'object';
9070
- if (isMultiLocation) {
9071
- return recipientAddress;
9072
- }
9073
- var isEthAddress = viem.isAddress(recipientAddress);
9074
- var addressJunction = isEthAddress ? {
9075
- AccountKey20: {
9076
- key: recipientAddress
9077
- }
9078
- } : {
9079
- AccountId32: {
9080
- id: api.accountToHex(recipientAddress)
9081
- }
9082
- };
9083
- return {
9084
- parents: sdkCommon.Parents.ONE,
9085
- interior: {
9086
- X2: [{
9087
- Parachain: paraId
9088
- }, 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
9089
9056
  }
9090
9057
  };
9058
+ return api.callTxMethod(call);
9091
9059
  };
9092
9060
 
9093
- var XTransferTransferImpl = /*#__PURE__*/function () {
9094
- function XTransferTransferImpl() {
9095
- _classCallCheck(this, XTransferTransferImpl);
9096
- }
9097
- return _createClass(XTransferTransferImpl, null, [{
9098
- key: "transferXTransfer",
9099
- value: function transferXTransfer(input) {
9100
- var api = input.api,
9101
- destination = input.destination,
9102
- asset = input.asset,
9103
- overriddenAsset = input.overriddenAsset,
9104
- pallet = input.pallet,
9105
- methodOverride = input.method;
9106
- var isMultiLocationDestination = _typeof(destination) === 'object';
9107
- if (isMultiLocationDestination) {
9108
- 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.');
9109
- }
9110
- var version = sdkCommon.Version.V3;
9111
- var multiAssets = [createMultiAsset(version, asset.amount, {
9112
- parents: sdkCommon.Parents.ZERO,
9113
- interior: 'Here'
9114
- })];
9115
- var resolvedMultiAssets = maybeOverrideMultiAssets(version, asset.amount, multiAssets, overriddenAsset);
9116
- var dest = getDestination(input);
9117
- var method = 'transfer';
9118
- var destWeight = determineDestWeight(destination);
9119
- var call = {
9120
- module: pallet !== null && pallet !== void 0 ? pallet : 'XTransfer',
9121
- method: methodOverride !== null && methodOverride !== void 0 ? methodOverride : method,
9122
- parameters: {
9123
- asset: resolvedMultiAssets[0],
9124
- dest: dest,
9125
- dest_weight: destWeight
9126
- }
9127
- };
9128
- return api.callTxMethod(call);
9129
- }
9130
- }]);
9131
- }();
9132
-
9133
9061
  var Phala = /*#__PURE__*/function (_ParachainNode) {
9134
9062
  function Phala() {
9135
9063
  _classCallCheck(this, Phala);
@@ -9138,12 +9066,12 @@ var Phala = /*#__PURE__*/function (_ParachainNode) {
9138
9066
  _inherits(Phala, _ParachainNode);
9139
9067
  return _createClass(Phala, [{
9140
9068
  key: "transferXTransfer",
9141
- value: function transferXTransfer(input) {
9069
+ value: function transferXTransfer$1(input) {
9142
9070
  var asset = input.asset;
9143
9071
  if (asset.symbol !== this.getNativeAssetSymbol()) {
9144
9072
  throw new assets.InvalidCurrencyError("Node ".concat(this.node, " does not support currency ").concat(asset.symbol));
9145
9073
  }
9146
- return XTransferTransferImpl.transferXTransfer(input);
9074
+ return transferXTransfer(input);
9147
9075
  }
9148
9076
  }, {
9149
9077
  key: "transferLocalNonNativeAsset",
@@ -9203,7 +9131,7 @@ var RobonomicsKusama = /*#__PURE__*/function (_ParachainNode) {
9203
9131
  return _createClass(RobonomicsKusama, [{
9204
9132
  key: "transferPolkadotXCM",
9205
9133
  value: function transferPolkadotXCM(input) {
9206
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
9134
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9207
9135
  }
9208
9136
  }, {
9209
9137
  key: "transferLocalNonNativeAsset",
@@ -9222,7 +9150,7 @@ var RobonomicsPolkadot = /*#__PURE__*/function (_ParachainNode) {
9222
9150
  return _createClass(RobonomicsPolkadot, [{
9223
9151
  key: "transferPolkadotXCM",
9224
9152
  value: function transferPolkadotXCM(input) {
9225
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
9153
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9226
9154
  }
9227
9155
  }, {
9228
9156
  key: "transferLocalNonNativeAsset",
@@ -9300,7 +9228,7 @@ var Subsocial = /*#__PURE__*/function (_ParachainNode) {
9300
9228
  if (asset.symbol !== this.getNativeAssetSymbol()) {
9301
9229
  throw new assets.InvalidCurrencyError("Asset ".concat(asset.symbol, " is not supported by node ").concat(this.node, "."));
9302
9230
  }
9303
- return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
9231
+ return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9304
9232
  }
9305
9233
  }]);
9306
9234
  }(ParachainNode);
@@ -9579,17 +9507,6 @@ var AssetClaimBuilder = /*#__PURE__*/function () {
9579
9507
  }]);
9580
9508
  }();
9581
9509
 
9582
- var assertToIsString = function assertToIsString(to) {
9583
- if (sdkCommon.isTMultiLocation(to)) {
9584
- throw new InvalidParameterError('Multi-Location destination is not supported for XCM fee calculation.');
9585
- }
9586
- };
9587
- var assertAddressIsString = function assertAddressIsString(address) {
9588
- if (sdkCommon.isTMultiLocation(address)) {
9589
- throw new InvalidParameterError('Multi-Location address is not supported for XCM fee calculation.');
9590
- }
9591
- };
9592
-
9593
9510
  var BatchTransactionManager = /*#__PURE__*/function () {
9594
9511
  function BatchTransactionManager() {
9595
9512
  _classCallCheck(this, BatchTransactionManager);
@@ -10315,6 +10232,9 @@ exports.ScenarioNotSupportedError = ScenarioNotSupportedError;
10315
10232
  exports.TX_CLIENT_TIMEOUT_MS = TX_CLIENT_TIMEOUT_MS;
10316
10233
  exports.TransferToAhNotSupported = TransferToAhNotSupported;
10317
10234
  exports.UnableToComputeError = UnableToComputeError;
10235
+ exports.addXcmVersionHeader = addXcmVersionHeader;
10236
+ exports.assertAddressIsString = assertAddressIsString;
10237
+ exports.assertToIsString = assertToIsString;
10318
10238
  exports.blake2b256 = blake2b256;
10319
10239
  exports.blake2b512 = blake2b512;
10320
10240
  exports.claimAssets = claimAssets;
@@ -10354,7 +10274,6 @@ exports.getTransferableAmount = getTransferableAmount;
10354
10274
  exports.getTransferableAmountInternal = getTransferableAmountInternal;
10355
10275
  exports.getXcmFee = getXcmFee;
10356
10276
  exports.getXcmFeeEstimate = getXcmFeeEstimate;
10357
- exports.replaceBigInt = replaceBigInt;
10358
10277
  exports.resolveModuleError = resolveModuleError;
10359
10278
  exports.resolveParaId = resolveParaId;
10360
10279
  exports.reverseTransformMultiLocation = reverseTransformMultiLocation;