@paraspell/sdk-core 11.12.5 → 11.12.6

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
@@ -849,6 +849,7 @@ var isConfig = function isConfig(value) {
849
849
  };
850
850
 
851
851
  var computeOverridenAmount = function computeOverridenAmount(options, increaseAmount) {
852
+ var relative = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
852
853
  var from = options.from,
853
854
  to = options.to,
854
855
  currency = options.currency,
@@ -856,21 +857,23 @@ var computeOverridenAmount = function computeOverridenAmount(options, increaseAm
856
857
  var amount = options.currency.amount;
857
858
  var config = api.getConfig();
858
859
  if (isConfig(config) && config.abstractDecimals && typeof amount !== 'bigint') {
859
- return Number(increaseAmount) + Number(amount);
860
+ var base = relative ? Number(amount) : 0;
861
+ return Number(increaseAmount) + base;
860
862
  } else {
861
863
  assertToIsString(to);
862
864
  var asset = assets.findAssetInfoOrThrow(from, currency, to);
863
- return parseUnits(increaseAmount, asset.decimals) + BigInt(amount);
865
+ var _base = relative ? BigInt(amount) : 0n;
866
+ return parseUnits(increaseAmount, asset.decimals) + _base;
864
867
  }
865
868
  };
866
869
  var overrideTxAmount = /*#__PURE__*/function () {
867
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, builder, amount) {
870
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, builder, amount, relative) {
868
871
  var modifiedBuilder, _yield$modifiedBuilde, tx;
869
872
  return _regenerator().w(function (_context) {
870
873
  while (1) switch (_context.n) {
871
874
  case 0:
872
875
  modifiedBuilder = builder.currency(_objectSpread2(_objectSpread2({}, options.currency), {}, {
873
- amount: computeOverridenAmount(options, amount)
876
+ amount: computeOverridenAmount(options, amount, relative)
874
877
  }));
875
878
  _context.n = 1;
876
879
  return modifiedBuilder['buildInternal']();
@@ -881,12 +884,12 @@ var overrideTxAmount = /*#__PURE__*/function () {
881
884
  }
882
885
  }, _callee);
883
886
  }));
884
- return function overrideTxAmount(_x, _x2, _x3) {
887
+ return function overrideTxAmount(_x, _x2, _x3, _x4) {
885
888
  return _ref.apply(this, arguments);
886
889
  };
887
890
  }();
888
891
  var createTx = /*#__PURE__*/function () {
889
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options, builder, amount) {
892
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options, builder, amount, relative) {
890
893
  var _yield$builder$buildI, tx;
891
894
  return _regenerator().w(function (_context2) {
892
895
  while (1) switch (_context2.n) {
@@ -903,13 +906,13 @@ var createTx = /*#__PURE__*/function () {
903
906
  return _context2.a(2, tx);
904
907
  case 2:
905
908
  _context2.n = 3;
906
- return overrideTxAmount(options, builder, amount);
909
+ return overrideTxAmount(options, builder, amount, relative);
907
910
  case 3:
908
911
  return _context2.a(2, _context2.v);
909
912
  }
910
913
  }, _callee2);
911
914
  }));
912
- return function createTx(_x4, _x5, _x6) {
915
+ return function createTx(_x5, _x6, _x7, _x8) {
913
916
  return _ref2.apply(this, arguments);
914
917
  };
915
918
  }();
@@ -4527,15 +4530,20 @@ var resolveAsset = function resolveAsset(currency, origin, destination, assetChe
4527
4530
  };
4528
4531
 
4529
4532
  var resolveHopAsset = function resolveHopAsset(_ref) {
4530
- var _asset$location, _findAssetInfoOnDest;
4531
- var originChain = _ref.originChain,
4533
+ var _findAssetInfoOnDest;
4534
+ var api = _ref.api,
4535
+ tx = _ref.tx,
4536
+ originChain = _ref.originChain,
4532
4537
  currentChain = _ref.currentChain,
4538
+ destination = _ref.destination,
4533
4539
  swapConfig = _ref.swapConfig,
4534
4540
  asset = _ref.asset,
4535
4541
  hasPassedExchange = _ref.hasPassedExchange,
4536
4542
  currency = _ref.currency;
4537
- var isExternalAsset = ((_asset$location = asset.location) === null || _asset$location === void 0 ? void 0 : _asset$location.parents) === sdkCommon.Parents.TWO;
4538
- if (isExternalAsset) {
4543
+ var isRelayAssetIncluded = api.getTypeThenAssetCount(tx) === 2;
4544
+ var isSubBridge = !sdkCommon.isTLocation(destination) && sdkCommon.isSubstrateBridge(originChain, destination);
4545
+ var useRelayAssetAsFee = destination === 'Ethereum' || isSubBridge || isRelayAssetIncluded;
4546
+ if (useRelayAssetAsFee) {
4539
4547
  return assets.findNativeAssetInfoOrThrow(getRelayChainOf(currentChain));
4540
4548
  }
4541
4549
  if (hasPassedExchange && swapConfig && currentChain !== swapConfig.exchangeChain) {
@@ -5558,8 +5566,11 @@ var dryRunInternal = /*#__PURE__*/function () {
5558
5566
  case 0:
5559
5567
  hopApi = params.api, currentChain = params.currentChain, currentOrigin = params.currentOrigin, currentAsset = params.currentAsset, forwardedXcms = params.forwardedXcms, hasPassedExchange = params.hasPassedExchange;
5560
5568
  hopAsset = resolveHopAsset({
5569
+ api: api,
5570
+ tx: tx,
5561
5571
  originChain: origin,
5562
5572
  currentChain: currentChain,
5573
+ destination: destination,
5563
5574
  asset: currentAsset,
5564
5575
  currency: currency,
5565
5576
  swapConfig: swapConfig,
@@ -9356,6 +9367,16 @@ var Manta = /*#__PURE__*/function (_Parachain) {
9356
9367
  };
9357
9368
  return transferXTokens(input, currencySelection);
9358
9369
  }
9370
+ }, {
9371
+ key: "isSendingTempDisabled",
9372
+ value: function isSendingTempDisabled(_options) {
9373
+ return true;
9374
+ }
9375
+ }, {
9376
+ key: "isReceivingTempDisabled",
9377
+ value: function isReceivingTempDisabled(_scenario) {
9378
+ return true;
9379
+ }
9359
9380
  }, {
9360
9381
  key: "transferLocalNonNativeAsset",
9361
9382
  value: function transferLocalNonNativeAsset(options) {
@@ -11022,130 +11043,212 @@ var wrapTxBypass = /*#__PURE__*/function () {
11022
11043
  };
11023
11044
  }();
11024
11045
 
11046
+ var MAX_INCREASE_RETRIES = 5;
11047
+ var INCREASE_BUMP_STEP = 100;
11048
+ var DECREASE_START_AMOUNT = 1;
11049
+ var MAX_DECREASE_RETRIES = 5;
11050
+ var DECREASE_DIVIDE_FACTOR = 5;
11051
+ var FAILED_TO_TRANSACT_ASSET = 'FailedToTransactAsset';
11025
11052
  var getBypassResultWithRetries = /*#__PURE__*/function () {
11026
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, internalFn, initialTx) {
11053
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(options, internalFn, initialTx) {
11027
11054
  var maxRetries,
11028
11055
  bumpStep,
11029
- hasError,
11056
+ getResultError,
11057
+ isFailedToTransact,
11058
+ isAmountTooLow,
11059
+ attempt,
11060
+ retryWithReducedAmount,
11030
11061
  first,
11031
- result,
11032
11062
  i,
11033
11063
  amount,
11034
- bumpedTx,
11035
- _args = arguments,
11036
- _t,
11064
+ res,
11065
+ err,
11066
+ _args3 = arguments,
11037
11067
  _t2,
11038
11068
  _t3;
11039
- return _regenerator().w(function (_context) {
11040
- while (1) switch (_context.p = _context.n) {
11069
+ return _regenerator().w(function (_context3) {
11070
+ while (1) switch (_context3.p = _context3.n) {
11041
11071
  case 0:
11042
- maxRetries = _args.length > 3 && _args[3] !== undefined ? _args[3] : 5;
11043
- bumpStep = _args.length > 4 && _args[4] !== undefined ? _args[4] : 100;
11044
- hasError = function hasError(res) {
11045
- return 'failureReason' in res ? !!res.failureReason : 'dryRunError' in res ? !!res.dryRunError : false;
11072
+ maxRetries = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : MAX_INCREASE_RETRIES;
11073
+ bumpStep = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : INCREASE_BUMP_STEP;
11074
+ getResultError = function getResultError(res) {
11075
+ return 'failureReason' in res ? res.failureReason : 'dryRunError' in res ? res.dryRunError : undefined;
11046
11076
  };
11077
+ isFailedToTransact = function isFailedToTransact(res) {
11078
+ return 'failureReason' in res && res.failureReason === FAILED_TO_TRANSACT_ASSET;
11079
+ };
11080
+ isAmountTooLow = function isAmountTooLow(e) {
11081
+ return e instanceof AmountTooLowError;
11082
+ };
11083
+ attempt = /*#__PURE__*/function () {
11084
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(amount, relative) {
11085
+ var tx;
11086
+ return _regenerator().w(function (_context) {
11087
+ while (1) switch (_context.n) {
11088
+ case 0:
11089
+ _context.n = 1;
11090
+ return options.buildTx(amount, relative);
11091
+ case 1:
11092
+ tx = _context.v;
11093
+ return _context.a(2, internalFn(_objectSpread2(_objectSpread2({}, options), {}, {
11094
+ tx: tx,
11095
+ useRootOrigin: true
11096
+ })));
11097
+ }
11098
+ }, _callee);
11099
+ }));
11100
+ return function attempt(_x4, _x5) {
11101
+ return _ref2.apply(this, arguments);
11102
+ };
11103
+ }();
11104
+ retryWithReducedAmount = /*#__PURE__*/function () {
11105
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
11106
+ var start,
11107
+ divide,
11108
+ amount,
11109
+ attemptIdx,
11110
+ res,
11111
+ err,
11112
+ _args2 = arguments,
11113
+ _t;
11114
+ return _regenerator().w(function (_context2) {
11115
+ while (1) switch (_context2.p = _context2.n) {
11116
+ case 0:
11117
+ start = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : DECREASE_START_AMOUNT;
11118
+ divide = function divide(v) {
11119
+ var next = v / DECREASE_DIVIDE_FACTOR;
11120
+ return next > 0 ? next : 1;
11121
+ };
11122
+ amount = divide(start);
11123
+ attemptIdx = 0;
11124
+ case 1:
11125
+ if (!(attemptIdx < MAX_DECREASE_RETRIES && amount > 0)) {
11126
+ _context2.n = 9;
11127
+ break;
11128
+ }
11129
+ _context2.p = 2;
11130
+ _context2.n = 3;
11131
+ return attempt(amount.toString(), false);
11132
+ case 3:
11133
+ res = _context2.v;
11134
+ err = getResultError(res);
11135
+ if (err) {
11136
+ _context2.n = 4;
11137
+ break;
11138
+ }
11139
+ return _context2.a(2, res);
11140
+ case 4:
11141
+ if (!isFailedToTransact(res)) {
11142
+ _context2.n = 5;
11143
+ break;
11144
+ }
11145
+ amount = divide(amount);
11146
+ return _context2.a(3, 8);
11147
+ case 5:
11148
+ return _context2.a(2, res);
11149
+ case 6:
11150
+ _context2.p = 6;
11151
+ _t = _context2.v;
11152
+ if (!isAmountTooLow(_t)) {
11153
+ _context2.n = 7;
11154
+ break;
11155
+ }
11156
+ amount = divide(amount);
11157
+ return _context2.a(3, 8);
11158
+ case 7:
11159
+ throw _t;
11160
+ case 8:
11161
+ attemptIdx++;
11162
+ _context2.n = 1;
11163
+ break;
11164
+ case 9:
11165
+ return _context2.a(2, attempt(amount.toString(), false));
11166
+ }
11167
+ }, _callee2, null, [[2, 6]]);
11168
+ }));
11169
+ return function retryWithReducedAmount() {
11170
+ return _ref3.apply(this, arguments);
11171
+ };
11172
+ }();
11047
11173
  if (!initialTx) {
11048
- _context.n = 5;
11174
+ _context3.n = 5;
11049
11175
  break;
11050
11176
  }
11051
- _context.p = 1;
11052
- _context.n = 2;
11177
+ _context3.p = 1;
11178
+ _context3.n = 2;
11053
11179
  return internalFn(_objectSpread2(_objectSpread2({}, options), {}, {
11054
11180
  tx: initialTx,
11055
11181
  useRootOrigin: true
11056
11182
  }));
11057
11183
  case 2:
11058
- first = _context.v;
11059
- if (hasError(first)) {
11060
- _context.n = 3;
11184
+ first = _context3.v;
11185
+ if (getResultError(first)) {
11186
+ _context3.n = 3;
11061
11187
  break;
11062
11188
  }
11063
- return _context.a(2, first);
11189
+ return _context3.a(2, first);
11064
11190
  case 3:
11065
- _context.n = 5;
11191
+ _context3.n = 5;
11066
11192
  break;
11067
11193
  case 4:
11068
- _context.p = 4;
11069
- _t = _context.v;
11070
- if (_t instanceof AmountTooLowError) {
11071
- _context.n = 5;
11194
+ _context3.p = 4;
11195
+ _t2 = _context3.v;
11196
+ if (isAmountTooLow(_t2)) {
11197
+ _context3.n = 5;
11072
11198
  break;
11073
11199
  }
11074
- throw _t;
11200
+ throw _t2;
11075
11201
  case 5:
11076
- result = null;
11077
11202
  i = 1;
11078
11203
  case 6:
11079
11204
  if (!(i <= maxRetries)) {
11080
- _context.n = 19;
11205
+ _context3.n = 15;
11081
11206
  break;
11082
11207
  }
11083
- amount = (bumpStep * i).toString();
11084
- bumpedTx = void 0;
11085
- _context.p = 7;
11086
- _context.n = 8;
11087
- return options.buildTx(amount);
11208
+ amount = bumpStep * i;
11209
+ _context3.p = 7;
11210
+ _context3.n = 8;
11211
+ return attempt(amount.toString());
11088
11212
  case 8:
11089
- bumpedTx = _context.v;
11090
- _context.n = 12;
11091
- break;
11092
- case 9:
11093
- _context.p = 9;
11094
- _t2 = _context.v;
11095
- if (!(_t2 instanceof AmountTooLowError)) {
11096
- _context.n = 11;
11213
+ res = _context3.v;
11214
+ err = getResultError(res);
11215
+ if (err) {
11216
+ _context3.n = 9;
11097
11217
  break;
11098
11218
  }
11099
- if (!(i === maxRetries)) {
11100
- _context.n = 10;
11219
+ return _context3.a(2, res);
11220
+ case 9:
11221
+ if (!isFailedToTransact(res)) {
11222
+ _context3.n = 10;
11101
11223
  break;
11102
11224
  }
11103
- throw _t2;
11225
+ return _context3.a(2, retryWithReducedAmount(DECREASE_START_AMOUNT));
11104
11226
  case 10:
11105
- return _context.a(3, 18);
11227
+ return _context3.a(3, 14);
11106
11228
  case 11:
11107
- throw _t2;
11108
- case 12:
11109
- _context.p = 12;
11110
- _context.n = 13;
11111
- return internalFn(_objectSpread2(_objectSpread2({}, options), {}, {
11112
- tx: bumpedTx,
11113
- useRootOrigin: true
11114
- }));
11115
- case 13:
11116
- result = _context.v;
11117
- if (hasError(result)) {
11118
- _context.n = 14;
11119
- break;
11120
- }
11121
- return _context.a(2, result);
11122
- case 14:
11123
- _context.n = 18;
11124
- break;
11125
- case 15:
11126
- _context.p = 15;
11127
- _t3 = _context.v;
11128
- if (!(_t3 instanceof AmountTooLowError)) {
11129
- _context.n = 17;
11229
+ _context3.p = 11;
11230
+ _t3 = _context3.v;
11231
+ if (!isAmountTooLow(_t3)) {
11232
+ _context3.n = 13;
11130
11233
  break;
11131
11234
  }
11132
11235
  if (!(i === maxRetries)) {
11133
- _context.n = 16;
11236
+ _context3.n = 12;
11134
11237
  break;
11135
11238
  }
11136
11239
  throw _t3;
11137
- case 16:
11138
- return _context.a(3, 18);
11139
- case 17:
11240
+ case 12:
11241
+ return _context3.a(3, 14);
11242
+ case 13:
11140
11243
  throw _t3;
11141
- case 18:
11244
+ case 14:
11142
11245
  i++;
11143
- _context.n = 6;
11246
+ _context3.n = 6;
11144
11247
  break;
11145
- case 19:
11146
- return _context.a(2, result);
11248
+ case 15:
11249
+ return _context3.a(2, attempt(String(bumpStep * maxRetries)));
11147
11250
  }
11148
- }, _callee, null, [[12, 15], [7, 9], [1, 4]]);
11251
+ }, _callee3, null, [[7, 11], [1, 4]]);
11149
11252
  }));
11150
11253
  return function getBypassResultWithRetries(_x, _x2, _x3) {
11151
11254
  return _ref.apply(this, arguments);
@@ -11506,8 +11609,11 @@ var getXcmFeeInternal = /*#__PURE__*/function () {
11506
11609
  case 0:
11507
11610
  hopApi = params.api, currentChain = params.currentChain, currentOrigin = params.currentOrigin, currentAsset = params.currentAsset, forwardedXcms = params.forwardedXcms, hasPassedExchange = params.hasPassedExchange;
11508
11611
  hopAsset = resolveHopAsset({
11612
+ api: api,
11613
+ tx: tx,
11509
11614
  originChain: origin,
11510
11615
  currentChain: currentChain,
11616
+ destination: destination,
11511
11617
  asset: currentAsset,
11512
11618
  currency: currency,
11513
11619
  swapConfig: swapConfig,
@@ -12716,35 +12822,45 @@ var buildTypeAndThenCall = function buildTypeAndThenCall(_ref, isDotAsset, custo
12716
12822
  };
12717
12823
 
12718
12824
  var FEE_PADDING_PERCENTAGE = 20;
12825
+ var FEE_ETH_ASSET_PADDING_PERCENTAGE = 100;
12719
12826
  var FEE_PADDING_HYDRATION = 500;
12827
+ var getPadding = function getPadding(chain, _ref) {
12828
+ var assetInfo = _ref.assetInfo,
12829
+ dest = _ref.dest;
12830
+ var isEthAsset = assetInfo.location && assets.findAssetInfoByLoc(assets.getOtherAssets('Ethereum'), assetInfo.location);
12831
+ if (chain === 'Hydration') return FEE_PADDING_HYDRATION;
12832
+ if (isEthAsset && dest.chain.startsWith('AssetHub')) return FEE_ETH_ASSET_PADDING_PERCENTAGE;
12833
+ return FEE_PADDING_PERCENTAGE;
12834
+ };
12720
12835
  var computeInstructionFee = /*#__PURE__*/function () {
12721
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref, version, xcm) {
12722
- var chain, api, _t;
12836
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref2, version, xcm, context) {
12837
+ var chain, api, padding, _t;
12723
12838
  return _regenerator().w(function (_context) {
12724
12839
  while (1) switch (_context.n) {
12725
12840
  case 0:
12726
- chain = _ref.chain, api = _ref.api;
12841
+ chain = _ref2.chain, api = _ref2.api;
12842
+ padding = getPadding(chain, context);
12727
12843
  _t = padValueBy;
12728
12844
  _context.n = 1;
12729
12845
  return api.getXcmPaymentApiFee(chain, addXcmVersionHeader(xcm, version), [], {
12730
12846
  location: DOT_LOCATION
12731
12847
  }, true);
12732
12848
  case 1:
12733
- return _context.a(2, _t(_context.v, chain === 'Hydration' ? FEE_PADDING_HYDRATION : FEE_PADDING_PERCENTAGE));
12849
+ return _context.a(2, _t(_context.v, padding));
12734
12850
  }
12735
12851
  }, _callee);
12736
12852
  }));
12737
- return function computeInstructionFee(_x, _x2, _x3) {
12738
- return _ref2.apply(this, arguments);
12853
+ return function computeInstructionFee(_x, _x2, _x3, _x4) {
12854
+ return _ref3.apply(this, arguments);
12739
12855
  };
12740
12856
  }();
12741
12857
  var computeAllFees = /*#__PURE__*/function () {
12742
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref3, customXcm, isDotAsset, refundInstruction) {
12858
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(context, customXcm, isDotAsset, refundInstruction) {
12743
12859
  var reserve, dest, version, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
12744
12860
  return _regenerator().w(function (_context2) {
12745
12861
  while (1) switch (_context2.n) {
12746
12862
  case 0:
12747
- reserve = _ref3.reserve, dest = _ref3.dest, version = _ref3.options.version;
12863
+ reserve = context.reserve, dest = context.dest, version = context.options.version;
12748
12864
  if (!customXcm.some(function (x) {
12749
12865
  return 'DepositReserveAsset' in x || 'InitiateTeleport' in x;
12750
12866
  })) {
@@ -12752,7 +12868,7 @@ var computeAllFees = /*#__PURE__*/function () {
12752
12868
  break;
12753
12869
  }
12754
12870
  _context2.n = 1;
12755
- return computeInstructionFee(reserve, version, customXcm);
12871
+ return computeInstructionFee(reserve, version, customXcm, context);
12756
12872
  case 1:
12757
12873
  _t3 = _context2.v;
12758
12874
  if (!refundInstruction) {
@@ -12760,7 +12876,7 @@ var computeAllFees = /*#__PURE__*/function () {
12760
12876
  break;
12761
12877
  }
12762
12878
  _context2.n = 2;
12763
- return computeInstructionFee(reserve, version, [refundInstruction]);
12879
+ return computeInstructionFee(reserve, version, [refundInstruction], context);
12764
12880
  case 2:
12765
12881
  _t4 = _context2.v;
12766
12882
  _context2.n = 4;
@@ -12775,7 +12891,7 @@ var computeAllFees = /*#__PURE__*/function () {
12775
12891
  return 'DepositReserveAsset' in j || 'InitiateTeleport' in j;
12776
12892
  });
12777
12893
  return instr ? 'DepositReserveAsset' in instr ? instr.DepositReserveAsset.xcm : instr.InitiateTeleport.xcm : undefined;
12778
- }());
12894
+ }(), context);
12779
12895
  case 5:
12780
12896
  _t6 = _context2.v;
12781
12897
  _t2 = {
@@ -12791,7 +12907,7 @@ var computeAllFees = /*#__PURE__*/function () {
12791
12907
  break;
12792
12908
  }
12793
12909
  _context2.n = 7;
12794
- return computeInstructionFee(assets.hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, customXcm);
12910
+ return computeInstructionFee(assets.hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, customXcm, context);
12795
12911
  case 7:
12796
12912
  _t7 = _context2.v;
12797
12913
  _context2.n = 9;
@@ -12805,7 +12921,7 @@ var computeAllFees = /*#__PURE__*/function () {
12805
12921
  break;
12806
12922
  }
12807
12923
  _context2.n = 10;
12808
- return computeInstructionFee(assets.hasXcmPaymentApiSupport(reserve.chain) ? reserve : dest, version, [refundInstruction]);
12924
+ return computeInstructionFee(assets.hasXcmPaymentApiSupport(reserve.chain) ? reserve : dest, version, [refundInstruction], context);
12809
12925
  case 10:
12810
12926
  _t9 = _context2.v;
12811
12927
  _context2.n = 12;
@@ -12824,7 +12940,7 @@ var computeAllFees = /*#__PURE__*/function () {
12824
12940
  }
12825
12941
  }, _callee2);
12826
12942
  }));
12827
- return function computeAllFees(_x4, _x5, _x6, _x7) {
12943
+ return function computeAllFees(_x5, _x6, _x7, _x8) {
12828
12944
  return _ref4.apply(this, arguments);
12829
12945
  };
12830
12946
  }();
@@ -14015,10 +14131,10 @@ var GeneralBuilder = /*#__PURE__*/function () {
14015
14131
  key: "createTxFactory",
14016
14132
  value: function createTxFactory() {
14017
14133
  var _this = this;
14018
- return function (amount) {
14134
+ return function (amount, relative) {
14019
14135
  return createTx(_objectSpread2(_objectSpread2({}, _this._options), {}, {
14020
14136
  api: _this.api
14021
- }), _this, amount);
14137
+ }), _this, amount, relative);
14022
14138
  };
14023
14139
  }
14024
14140
  /**
package/dist/index.d.ts CHANGED
@@ -643,9 +643,12 @@ type TDryRunResult = {
643
643
  bridgeHub?: TDryRunChainResult;
644
644
  hops: THopInfo[];
645
645
  };
646
- type TResolveHopParams = {
646
+ type TResolveHopParams<TApi, TRes> = {
647
+ api: IPolkadotApi<TApi, TRes>;
648
+ tx: TRes;
647
649
  originChain: TSubstrateChain;
648
650
  currentChain: TSubstrateChain;
651
+ destination: TDestination;
649
652
  asset: TAssetInfo;
650
653
  currency: TCurrencyInputWithAmount;
651
654
  swapConfig?: TSwapConfig;
@@ -752,7 +755,7 @@ type TModuleError = {
752
755
  type TXcmFeeSwapConfig = TSwapConfig & {
753
756
  amountOut: bigint;
754
757
  };
755
- type TTxFactory<TRes> = (amount?: string) => Promise<TRes>;
758
+ type TTxFactory<TRes> = (amount?: string, relative?: boolean) => Promise<TRes>;
756
759
  type TGetXcmFeeBaseOptions<TRes, TDisableFallback extends boolean = boolean> = {
757
760
  /**
758
761
  * The transaction factory
@@ -1453,6 +1456,7 @@ interface IPolkadotApi<TApi, TRes> {
1453
1456
  hexToUint8a(hex: string): Uint8Array;
1454
1457
  stringToUint8a(str: string): Uint8Array;
1455
1458
  getMethod(tx: TRes): string;
1459
+ getTypeThenAssetCount(tx: TRes): number | undefined;
1456
1460
  hasMethod(pallet: TPallet, method: string): Promise<boolean>;
1457
1461
  calculateTransactionFee(tx: TRes, address: string): Promise<bigint>;
1458
1462
  quoteAhPrice(fromMl: TLocation, toMl: TLocation, amountIn: bigint, includeFee?: boolean): Promise<bigint | undefined>;
@@ -1887,6 +1891,8 @@ declare class Manta<TApi, TRes> extends Parachain<TApi, TRes> implements IXToken
1887
1891
  constructor();
1888
1892
  private getAssetId;
1889
1893
  transferXTokens<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
1894
+ isSendingTempDisabled(_options: TSendInternalOptions<TApi, TRes>): boolean;
1895
+ isReceivingTempDisabled(_scenario: TScenario): boolean;
1890
1896
  transferLocalNonNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
1891
1897
  }
1892
1898
 
@@ -2249,9 +2255,9 @@ declare const maybeOverrideAsset: (version: Version, amount: bigint, asset: TAss
2249
2255
 
2250
2256
  declare const sortAssets: (assets: TAsset[]) => TAsset[];
2251
2257
 
2252
- declare const computeOverridenAmount: <TApi, TRes>(options: TCreateTxsOptions<TApi, TRes>, increaseAmount: string) => number | bigint;
2253
- declare const overrideTxAmount: <TApi, TRes>(options: TCreateTxsOptions<TApi, TRes>, builder: GeneralBuilder<TApi, TRes, TSendBaseOptions>, amount: string) => Promise<TRes>;
2254
- declare const createTx: <TApi, TRes>(options: TCreateTxsOptions<TApi, TRes>, builder: GeneralBuilder<TApi, TRes, TSendBaseOptions>, amount: string | undefined) => Promise<TRes>;
2258
+ declare const computeOverridenAmount: <TApi, TRes>(options: TCreateTxsOptions<TApi, TRes>, increaseAmount: string, relative?: boolean) => number | bigint;
2259
+ declare const overrideTxAmount: <TApi, TRes>(options: TCreateTxsOptions<TApi, TRes>, builder: GeneralBuilder<TApi, TRes, TSendBaseOptions>, amount: string, relative?: boolean) => Promise<TRes>;
2260
+ declare const createTx: <TApi, TRes>(options: TCreateTxsOptions<TApi, TRes>, builder: GeneralBuilder<TApi, TRes, TSendBaseOptions>, amount?: string, relative?: boolean) => Promise<TRes>;
2255
2261
 
2256
2262
  declare const isConfig: <TApi>(value: any) => value is TBuilderConfig<TApi>;
2257
2263
 
package/dist/index.mjs CHANGED
@@ -850,6 +850,7 @@ var isConfig = function isConfig(value) {
850
850
  };
851
851
 
852
852
  var computeOverridenAmount = function computeOverridenAmount(options, increaseAmount) {
853
+ var relative = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
853
854
  var from = options.from,
854
855
  to = options.to,
855
856
  currency = options.currency,
@@ -857,21 +858,23 @@ var computeOverridenAmount = function computeOverridenAmount(options, increaseAm
857
858
  var amount = options.currency.amount;
858
859
  var config = api.getConfig();
859
860
  if (isConfig(config) && config.abstractDecimals && typeof amount !== 'bigint') {
860
- return Number(increaseAmount) + Number(amount);
861
+ var base = relative ? Number(amount) : 0;
862
+ return Number(increaseAmount) + base;
861
863
  } else {
862
864
  assertToIsString(to);
863
865
  var asset = findAssetInfoOrThrow(from, currency, to);
864
- return parseUnits(increaseAmount, asset.decimals) + BigInt(amount);
866
+ var _base = relative ? BigInt(amount) : 0n;
867
+ return parseUnits(increaseAmount, asset.decimals) + _base;
865
868
  }
866
869
  };
867
870
  var overrideTxAmount = /*#__PURE__*/function () {
868
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, builder, amount) {
871
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, builder, amount, relative) {
869
872
  var modifiedBuilder, _yield$modifiedBuilde, tx;
870
873
  return _regenerator().w(function (_context) {
871
874
  while (1) switch (_context.n) {
872
875
  case 0:
873
876
  modifiedBuilder = builder.currency(_objectSpread2(_objectSpread2({}, options.currency), {}, {
874
- amount: computeOverridenAmount(options, amount)
877
+ amount: computeOverridenAmount(options, amount, relative)
875
878
  }));
876
879
  _context.n = 1;
877
880
  return modifiedBuilder['buildInternal']();
@@ -882,12 +885,12 @@ var overrideTxAmount = /*#__PURE__*/function () {
882
885
  }
883
886
  }, _callee);
884
887
  }));
885
- return function overrideTxAmount(_x, _x2, _x3) {
888
+ return function overrideTxAmount(_x, _x2, _x3, _x4) {
886
889
  return _ref.apply(this, arguments);
887
890
  };
888
891
  }();
889
892
  var createTx = /*#__PURE__*/function () {
890
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options, builder, amount) {
893
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options, builder, amount, relative) {
891
894
  var _yield$builder$buildI, tx;
892
895
  return _regenerator().w(function (_context2) {
893
896
  while (1) switch (_context2.n) {
@@ -904,13 +907,13 @@ var createTx = /*#__PURE__*/function () {
904
907
  return _context2.a(2, tx);
905
908
  case 2:
906
909
  _context2.n = 3;
907
- return overrideTxAmount(options, builder, amount);
910
+ return overrideTxAmount(options, builder, amount, relative);
908
911
  case 3:
909
912
  return _context2.a(2, _context2.v);
910
913
  }
911
914
  }, _callee2);
912
915
  }));
913
- return function createTx(_x4, _x5, _x6) {
916
+ return function createTx(_x5, _x6, _x7, _x8) {
914
917
  return _ref2.apply(this, arguments);
915
918
  };
916
919
  }();
@@ -4528,15 +4531,20 @@ var resolveAsset = function resolveAsset(currency, origin, destination, assetChe
4528
4531
  };
4529
4532
 
4530
4533
  var resolveHopAsset = function resolveHopAsset(_ref) {
4531
- var _asset$location, _findAssetInfoOnDest;
4532
- var originChain = _ref.originChain,
4534
+ var _findAssetInfoOnDest;
4535
+ var api = _ref.api,
4536
+ tx = _ref.tx,
4537
+ originChain = _ref.originChain,
4533
4538
  currentChain = _ref.currentChain,
4539
+ destination = _ref.destination,
4534
4540
  swapConfig = _ref.swapConfig,
4535
4541
  asset = _ref.asset,
4536
4542
  hasPassedExchange = _ref.hasPassedExchange,
4537
4543
  currency = _ref.currency;
4538
- var isExternalAsset = ((_asset$location = asset.location) === null || _asset$location === void 0 ? void 0 : _asset$location.parents) === Parents.TWO;
4539
- if (isExternalAsset) {
4544
+ var isRelayAssetIncluded = api.getTypeThenAssetCount(tx) === 2;
4545
+ var isSubBridge = !isTLocation(destination) && isSubstrateBridge(originChain, destination);
4546
+ var useRelayAssetAsFee = destination === 'Ethereum' || isSubBridge || isRelayAssetIncluded;
4547
+ if (useRelayAssetAsFee) {
4540
4548
  return findNativeAssetInfoOrThrow(getRelayChainOf(currentChain));
4541
4549
  }
4542
4550
  if (hasPassedExchange && swapConfig && currentChain !== swapConfig.exchangeChain) {
@@ -5559,8 +5567,11 @@ var dryRunInternal = /*#__PURE__*/function () {
5559
5567
  case 0:
5560
5568
  hopApi = params.api, currentChain = params.currentChain, currentOrigin = params.currentOrigin, currentAsset = params.currentAsset, forwardedXcms = params.forwardedXcms, hasPassedExchange = params.hasPassedExchange;
5561
5569
  hopAsset = resolveHopAsset({
5570
+ api: api,
5571
+ tx: tx,
5562
5572
  originChain: origin,
5563
5573
  currentChain: currentChain,
5574
+ destination: destination,
5564
5575
  asset: currentAsset,
5565
5576
  currency: currency,
5566
5577
  swapConfig: swapConfig,
@@ -9357,6 +9368,16 @@ var Manta = /*#__PURE__*/function (_Parachain) {
9357
9368
  };
9358
9369
  return transferXTokens(input, currencySelection);
9359
9370
  }
9371
+ }, {
9372
+ key: "isSendingTempDisabled",
9373
+ value: function isSendingTempDisabled(_options) {
9374
+ return true;
9375
+ }
9376
+ }, {
9377
+ key: "isReceivingTempDisabled",
9378
+ value: function isReceivingTempDisabled(_scenario) {
9379
+ return true;
9380
+ }
9360
9381
  }, {
9361
9382
  key: "transferLocalNonNativeAsset",
9362
9383
  value: function transferLocalNonNativeAsset(options) {
@@ -11023,130 +11044,212 @@ var wrapTxBypass = /*#__PURE__*/function () {
11023
11044
  };
11024
11045
  }();
11025
11046
 
11047
+ var MAX_INCREASE_RETRIES = 5;
11048
+ var INCREASE_BUMP_STEP = 100;
11049
+ var DECREASE_START_AMOUNT = 1;
11050
+ var MAX_DECREASE_RETRIES = 5;
11051
+ var DECREASE_DIVIDE_FACTOR = 5;
11052
+ var FAILED_TO_TRANSACT_ASSET = 'FailedToTransactAsset';
11026
11053
  var getBypassResultWithRetries = /*#__PURE__*/function () {
11027
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, internalFn, initialTx) {
11054
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(options, internalFn, initialTx) {
11028
11055
  var maxRetries,
11029
11056
  bumpStep,
11030
- hasError,
11057
+ getResultError,
11058
+ isFailedToTransact,
11059
+ isAmountTooLow,
11060
+ attempt,
11061
+ retryWithReducedAmount,
11031
11062
  first,
11032
- result,
11033
11063
  i,
11034
11064
  amount,
11035
- bumpedTx,
11036
- _args = arguments,
11037
- _t,
11065
+ res,
11066
+ err,
11067
+ _args3 = arguments,
11038
11068
  _t2,
11039
11069
  _t3;
11040
- return _regenerator().w(function (_context) {
11041
- while (1) switch (_context.p = _context.n) {
11070
+ return _regenerator().w(function (_context3) {
11071
+ while (1) switch (_context3.p = _context3.n) {
11042
11072
  case 0:
11043
- maxRetries = _args.length > 3 && _args[3] !== undefined ? _args[3] : 5;
11044
- bumpStep = _args.length > 4 && _args[4] !== undefined ? _args[4] : 100;
11045
- hasError = function hasError(res) {
11046
- return 'failureReason' in res ? !!res.failureReason : 'dryRunError' in res ? !!res.dryRunError : false;
11073
+ maxRetries = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : MAX_INCREASE_RETRIES;
11074
+ bumpStep = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : INCREASE_BUMP_STEP;
11075
+ getResultError = function getResultError(res) {
11076
+ return 'failureReason' in res ? res.failureReason : 'dryRunError' in res ? res.dryRunError : undefined;
11047
11077
  };
11078
+ isFailedToTransact = function isFailedToTransact(res) {
11079
+ return 'failureReason' in res && res.failureReason === FAILED_TO_TRANSACT_ASSET;
11080
+ };
11081
+ isAmountTooLow = function isAmountTooLow(e) {
11082
+ return e instanceof AmountTooLowError;
11083
+ };
11084
+ attempt = /*#__PURE__*/function () {
11085
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(amount, relative) {
11086
+ var tx;
11087
+ return _regenerator().w(function (_context) {
11088
+ while (1) switch (_context.n) {
11089
+ case 0:
11090
+ _context.n = 1;
11091
+ return options.buildTx(amount, relative);
11092
+ case 1:
11093
+ tx = _context.v;
11094
+ return _context.a(2, internalFn(_objectSpread2(_objectSpread2({}, options), {}, {
11095
+ tx: tx,
11096
+ useRootOrigin: true
11097
+ })));
11098
+ }
11099
+ }, _callee);
11100
+ }));
11101
+ return function attempt(_x4, _x5) {
11102
+ return _ref2.apply(this, arguments);
11103
+ };
11104
+ }();
11105
+ retryWithReducedAmount = /*#__PURE__*/function () {
11106
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
11107
+ var start,
11108
+ divide,
11109
+ amount,
11110
+ attemptIdx,
11111
+ res,
11112
+ err,
11113
+ _args2 = arguments,
11114
+ _t;
11115
+ return _regenerator().w(function (_context2) {
11116
+ while (1) switch (_context2.p = _context2.n) {
11117
+ case 0:
11118
+ start = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : DECREASE_START_AMOUNT;
11119
+ divide = function divide(v) {
11120
+ var next = v / DECREASE_DIVIDE_FACTOR;
11121
+ return next > 0 ? next : 1;
11122
+ };
11123
+ amount = divide(start);
11124
+ attemptIdx = 0;
11125
+ case 1:
11126
+ if (!(attemptIdx < MAX_DECREASE_RETRIES && amount > 0)) {
11127
+ _context2.n = 9;
11128
+ break;
11129
+ }
11130
+ _context2.p = 2;
11131
+ _context2.n = 3;
11132
+ return attempt(amount.toString(), false);
11133
+ case 3:
11134
+ res = _context2.v;
11135
+ err = getResultError(res);
11136
+ if (err) {
11137
+ _context2.n = 4;
11138
+ break;
11139
+ }
11140
+ return _context2.a(2, res);
11141
+ case 4:
11142
+ if (!isFailedToTransact(res)) {
11143
+ _context2.n = 5;
11144
+ break;
11145
+ }
11146
+ amount = divide(amount);
11147
+ return _context2.a(3, 8);
11148
+ case 5:
11149
+ return _context2.a(2, res);
11150
+ case 6:
11151
+ _context2.p = 6;
11152
+ _t = _context2.v;
11153
+ if (!isAmountTooLow(_t)) {
11154
+ _context2.n = 7;
11155
+ break;
11156
+ }
11157
+ amount = divide(amount);
11158
+ return _context2.a(3, 8);
11159
+ case 7:
11160
+ throw _t;
11161
+ case 8:
11162
+ attemptIdx++;
11163
+ _context2.n = 1;
11164
+ break;
11165
+ case 9:
11166
+ return _context2.a(2, attempt(amount.toString(), false));
11167
+ }
11168
+ }, _callee2, null, [[2, 6]]);
11169
+ }));
11170
+ return function retryWithReducedAmount() {
11171
+ return _ref3.apply(this, arguments);
11172
+ };
11173
+ }();
11048
11174
  if (!initialTx) {
11049
- _context.n = 5;
11175
+ _context3.n = 5;
11050
11176
  break;
11051
11177
  }
11052
- _context.p = 1;
11053
- _context.n = 2;
11178
+ _context3.p = 1;
11179
+ _context3.n = 2;
11054
11180
  return internalFn(_objectSpread2(_objectSpread2({}, options), {}, {
11055
11181
  tx: initialTx,
11056
11182
  useRootOrigin: true
11057
11183
  }));
11058
11184
  case 2:
11059
- first = _context.v;
11060
- if (hasError(first)) {
11061
- _context.n = 3;
11185
+ first = _context3.v;
11186
+ if (getResultError(first)) {
11187
+ _context3.n = 3;
11062
11188
  break;
11063
11189
  }
11064
- return _context.a(2, first);
11190
+ return _context3.a(2, first);
11065
11191
  case 3:
11066
- _context.n = 5;
11192
+ _context3.n = 5;
11067
11193
  break;
11068
11194
  case 4:
11069
- _context.p = 4;
11070
- _t = _context.v;
11071
- if (_t instanceof AmountTooLowError) {
11072
- _context.n = 5;
11195
+ _context3.p = 4;
11196
+ _t2 = _context3.v;
11197
+ if (isAmountTooLow(_t2)) {
11198
+ _context3.n = 5;
11073
11199
  break;
11074
11200
  }
11075
- throw _t;
11201
+ throw _t2;
11076
11202
  case 5:
11077
- result = null;
11078
11203
  i = 1;
11079
11204
  case 6:
11080
11205
  if (!(i <= maxRetries)) {
11081
- _context.n = 19;
11206
+ _context3.n = 15;
11082
11207
  break;
11083
11208
  }
11084
- amount = (bumpStep * i).toString();
11085
- bumpedTx = void 0;
11086
- _context.p = 7;
11087
- _context.n = 8;
11088
- return options.buildTx(amount);
11209
+ amount = bumpStep * i;
11210
+ _context3.p = 7;
11211
+ _context3.n = 8;
11212
+ return attempt(amount.toString());
11089
11213
  case 8:
11090
- bumpedTx = _context.v;
11091
- _context.n = 12;
11092
- break;
11093
- case 9:
11094
- _context.p = 9;
11095
- _t2 = _context.v;
11096
- if (!(_t2 instanceof AmountTooLowError)) {
11097
- _context.n = 11;
11214
+ res = _context3.v;
11215
+ err = getResultError(res);
11216
+ if (err) {
11217
+ _context3.n = 9;
11098
11218
  break;
11099
11219
  }
11100
- if (!(i === maxRetries)) {
11101
- _context.n = 10;
11220
+ return _context3.a(2, res);
11221
+ case 9:
11222
+ if (!isFailedToTransact(res)) {
11223
+ _context3.n = 10;
11102
11224
  break;
11103
11225
  }
11104
- throw _t2;
11226
+ return _context3.a(2, retryWithReducedAmount(DECREASE_START_AMOUNT));
11105
11227
  case 10:
11106
- return _context.a(3, 18);
11228
+ return _context3.a(3, 14);
11107
11229
  case 11:
11108
- throw _t2;
11109
- case 12:
11110
- _context.p = 12;
11111
- _context.n = 13;
11112
- return internalFn(_objectSpread2(_objectSpread2({}, options), {}, {
11113
- tx: bumpedTx,
11114
- useRootOrigin: true
11115
- }));
11116
- case 13:
11117
- result = _context.v;
11118
- if (hasError(result)) {
11119
- _context.n = 14;
11120
- break;
11121
- }
11122
- return _context.a(2, result);
11123
- case 14:
11124
- _context.n = 18;
11125
- break;
11126
- case 15:
11127
- _context.p = 15;
11128
- _t3 = _context.v;
11129
- if (!(_t3 instanceof AmountTooLowError)) {
11130
- _context.n = 17;
11230
+ _context3.p = 11;
11231
+ _t3 = _context3.v;
11232
+ if (!isAmountTooLow(_t3)) {
11233
+ _context3.n = 13;
11131
11234
  break;
11132
11235
  }
11133
11236
  if (!(i === maxRetries)) {
11134
- _context.n = 16;
11237
+ _context3.n = 12;
11135
11238
  break;
11136
11239
  }
11137
11240
  throw _t3;
11138
- case 16:
11139
- return _context.a(3, 18);
11140
- case 17:
11241
+ case 12:
11242
+ return _context3.a(3, 14);
11243
+ case 13:
11141
11244
  throw _t3;
11142
- case 18:
11245
+ case 14:
11143
11246
  i++;
11144
- _context.n = 6;
11247
+ _context3.n = 6;
11145
11248
  break;
11146
- case 19:
11147
- return _context.a(2, result);
11249
+ case 15:
11250
+ return _context3.a(2, attempt(String(bumpStep * maxRetries)));
11148
11251
  }
11149
- }, _callee, null, [[12, 15], [7, 9], [1, 4]]);
11252
+ }, _callee3, null, [[7, 11], [1, 4]]);
11150
11253
  }));
11151
11254
  return function getBypassResultWithRetries(_x, _x2, _x3) {
11152
11255
  return _ref.apply(this, arguments);
@@ -11507,8 +11610,11 @@ var getXcmFeeInternal = /*#__PURE__*/function () {
11507
11610
  case 0:
11508
11611
  hopApi = params.api, currentChain = params.currentChain, currentOrigin = params.currentOrigin, currentAsset = params.currentAsset, forwardedXcms = params.forwardedXcms, hasPassedExchange = params.hasPassedExchange;
11509
11612
  hopAsset = resolveHopAsset({
11613
+ api: api,
11614
+ tx: tx,
11510
11615
  originChain: origin,
11511
11616
  currentChain: currentChain,
11617
+ destination: destination,
11512
11618
  asset: currentAsset,
11513
11619
  currency: currency,
11514
11620
  swapConfig: swapConfig,
@@ -12717,35 +12823,45 @@ var buildTypeAndThenCall = function buildTypeAndThenCall(_ref, isDotAsset, custo
12717
12823
  };
12718
12824
 
12719
12825
  var FEE_PADDING_PERCENTAGE = 20;
12826
+ var FEE_ETH_ASSET_PADDING_PERCENTAGE = 100;
12720
12827
  var FEE_PADDING_HYDRATION = 500;
12828
+ var getPadding = function getPadding(chain, _ref) {
12829
+ var assetInfo = _ref.assetInfo,
12830
+ dest = _ref.dest;
12831
+ var isEthAsset = assetInfo.location && findAssetInfoByLoc(getOtherAssets('Ethereum'), assetInfo.location);
12832
+ if (chain === 'Hydration') return FEE_PADDING_HYDRATION;
12833
+ if (isEthAsset && dest.chain.startsWith('AssetHub')) return FEE_ETH_ASSET_PADDING_PERCENTAGE;
12834
+ return FEE_PADDING_PERCENTAGE;
12835
+ };
12721
12836
  var computeInstructionFee = /*#__PURE__*/function () {
12722
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref, version, xcm) {
12723
- var chain, api, _t;
12837
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref2, version, xcm, context) {
12838
+ var chain, api, padding, _t;
12724
12839
  return _regenerator().w(function (_context) {
12725
12840
  while (1) switch (_context.n) {
12726
12841
  case 0:
12727
- chain = _ref.chain, api = _ref.api;
12842
+ chain = _ref2.chain, api = _ref2.api;
12843
+ padding = getPadding(chain, context);
12728
12844
  _t = padValueBy;
12729
12845
  _context.n = 1;
12730
12846
  return api.getXcmPaymentApiFee(chain, addXcmVersionHeader(xcm, version), [], {
12731
12847
  location: DOT_LOCATION
12732
12848
  }, true);
12733
12849
  case 1:
12734
- return _context.a(2, _t(_context.v, chain === 'Hydration' ? FEE_PADDING_HYDRATION : FEE_PADDING_PERCENTAGE));
12850
+ return _context.a(2, _t(_context.v, padding));
12735
12851
  }
12736
12852
  }, _callee);
12737
12853
  }));
12738
- return function computeInstructionFee(_x, _x2, _x3) {
12739
- return _ref2.apply(this, arguments);
12854
+ return function computeInstructionFee(_x, _x2, _x3, _x4) {
12855
+ return _ref3.apply(this, arguments);
12740
12856
  };
12741
12857
  }();
12742
12858
  var computeAllFees = /*#__PURE__*/function () {
12743
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref3, customXcm, isDotAsset, refundInstruction) {
12859
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(context, customXcm, isDotAsset, refundInstruction) {
12744
12860
  var reserve, dest, version, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
12745
12861
  return _regenerator().w(function (_context2) {
12746
12862
  while (1) switch (_context2.n) {
12747
12863
  case 0:
12748
- reserve = _ref3.reserve, dest = _ref3.dest, version = _ref3.options.version;
12864
+ reserve = context.reserve, dest = context.dest, version = context.options.version;
12749
12865
  if (!customXcm.some(function (x) {
12750
12866
  return 'DepositReserveAsset' in x || 'InitiateTeleport' in x;
12751
12867
  })) {
@@ -12753,7 +12869,7 @@ var computeAllFees = /*#__PURE__*/function () {
12753
12869
  break;
12754
12870
  }
12755
12871
  _context2.n = 1;
12756
- return computeInstructionFee(reserve, version, customXcm);
12872
+ return computeInstructionFee(reserve, version, customXcm, context);
12757
12873
  case 1:
12758
12874
  _t3 = _context2.v;
12759
12875
  if (!refundInstruction) {
@@ -12761,7 +12877,7 @@ var computeAllFees = /*#__PURE__*/function () {
12761
12877
  break;
12762
12878
  }
12763
12879
  _context2.n = 2;
12764
- return computeInstructionFee(reserve, version, [refundInstruction]);
12880
+ return computeInstructionFee(reserve, version, [refundInstruction], context);
12765
12881
  case 2:
12766
12882
  _t4 = _context2.v;
12767
12883
  _context2.n = 4;
@@ -12776,7 +12892,7 @@ var computeAllFees = /*#__PURE__*/function () {
12776
12892
  return 'DepositReserveAsset' in j || 'InitiateTeleport' in j;
12777
12893
  });
12778
12894
  return instr ? 'DepositReserveAsset' in instr ? instr.DepositReserveAsset.xcm : instr.InitiateTeleport.xcm : undefined;
12779
- }());
12895
+ }(), context);
12780
12896
  case 5:
12781
12897
  _t6 = _context2.v;
12782
12898
  _t2 = {
@@ -12792,7 +12908,7 @@ var computeAllFees = /*#__PURE__*/function () {
12792
12908
  break;
12793
12909
  }
12794
12910
  _context2.n = 7;
12795
- return computeInstructionFee(hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, customXcm);
12911
+ return computeInstructionFee(hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, customXcm, context);
12796
12912
  case 7:
12797
12913
  _t7 = _context2.v;
12798
12914
  _context2.n = 9;
@@ -12806,7 +12922,7 @@ var computeAllFees = /*#__PURE__*/function () {
12806
12922
  break;
12807
12923
  }
12808
12924
  _context2.n = 10;
12809
- return computeInstructionFee(hasXcmPaymentApiSupport(reserve.chain) ? reserve : dest, version, [refundInstruction]);
12925
+ return computeInstructionFee(hasXcmPaymentApiSupport(reserve.chain) ? reserve : dest, version, [refundInstruction], context);
12810
12926
  case 10:
12811
12927
  _t9 = _context2.v;
12812
12928
  _context2.n = 12;
@@ -12825,7 +12941,7 @@ var computeAllFees = /*#__PURE__*/function () {
12825
12941
  }
12826
12942
  }, _callee2);
12827
12943
  }));
12828
- return function computeAllFees(_x4, _x5, _x6, _x7) {
12944
+ return function computeAllFees(_x5, _x6, _x7, _x8) {
12829
12945
  return _ref4.apply(this, arguments);
12830
12946
  };
12831
12947
  }();
@@ -14016,10 +14132,10 @@ var GeneralBuilder = /*#__PURE__*/function () {
14016
14132
  key: "createTxFactory",
14017
14133
  value: function createTxFactory() {
14018
14134
  var _this = this;
14019
- return function (amount) {
14135
+ return function (amount, relative) {
14020
14136
  return createTx(_objectSpread2(_objectSpread2({}, _this._options), {}, {
14021
14137
  api: _this.api
14022
- }), _this, amount);
14138
+ }), _this, amount, relative);
14023
14139
  };
14024
14140
  }
14025
14141
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraspell/sdk-core",
3
- "version": "11.12.5",
3
+ "version": "11.12.6",
4
4
  "description": "SDK core for ParaSpell XCM/XCMP tool for developers",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,9 +26,9 @@
26
26
  "@noble/hashes": "^1.8.0",
27
27
  "@scure/base": "^2.0.0",
28
28
  "viem": "^2.37.9",
29
- "@paraspell/assets": "11.12.5",
30
- "@paraspell/sdk-common": "11.12.5",
31
- "@paraspell/pallets": "11.12.5"
29
+ "@paraspell/assets": "11.12.6",
30
+ "@paraspell/sdk-common": "11.12.6",
31
+ "@paraspell/pallets": "11.12.6"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/plugin-syntax-import-attributes": "^7.27.1",