@paraspell/sdk-core 11.1.1 → 11.2.0

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.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import { blake2b } from '@noble/hashes/blake2';
2
- import { isChainEvm, getAssetsObject, InvalidCurrencyError, isForeignAsset, extractAssetLocation, getNativeAssetSymbol, getOtherAssets, isAssetEqual, findAssetInfoOrThrow, getExistentialDeposit, findAssetInfo, isTAsset, getExistentialDepositOrThrow, isSymbolMatch, hasDryRunSupport, isOverrideLocationSpecifier, findAssetInfoByLoc, findAssetOnDestOrThrow, hasSupportForAsset, getRelayChainSymbol, isSymbolSpecifier, normalizeLocation, hasXcmPaymentApiSupport, normalizeSymbol, Native, getNativeAssets } from '@paraspell/assets';
2
+ import { isChainEvm, getAssetsObject, InvalidCurrencyError, isForeignAsset, extractAssetLocation, getNativeAssetSymbol, getOtherAssets, isAssetEqual, findAssetInfoOrThrow, getExistentialDeposit, findAssetInfo, isTAsset, getExistentialDepositOrThrow, isSymbolMatch, hasDryRunSupport, isOverrideLocationSpecifier, findAssetInfoByLoc, findAssetOnDestOrThrow, Native, hasSupportForAsset, getRelayChainSymbol, isSymbolSpecifier, normalizeLocation, hasXcmPaymentApiSupport, normalizeSymbol, getNativeAssets } from '@paraspell/assets';
3
3
  export * from '@paraspell/assets';
4
4
  import { base58 } from '@scure/base';
5
- import { isAddress, parseUnits, createPublicClient, http, getContract } from 'viem';
6
- import { getSupportedPalletsDetails, getDefaultPallet, getSupportedPallets } from '@paraspell/pallets';
5
+ import { isAddress, parseUnits, createPublicClient, http, getContract, pad, toHex, getAddress, concat, keccak256 } from 'viem';
6
+ import { getSupportedPalletsDetails, getDefaultPallet, getNativeAssetsPallet, getOtherAssetsPallets, getSupportedPallets } from '@paraspell/pallets';
7
7
  export * from '@paraspell/pallets';
8
8
  import { replaceBigInt, isTLocation, Version, hasJunction, getJunctionValue, isRelayChain, Parents, PARACHAINS, deepEqual, isSystemChain, isDotKsmBridge } from '@paraspell/sdk-common';
9
9
  export * from '@paraspell/sdk-common';
@@ -3474,6 +3474,49 @@ var createDirectExecuteXcm = function createDirectExecuteXcm(options) {
3474
3474
  return addXcmVersionHeader(fullXcm, version);
3475
3475
  };
3476
3476
 
3477
+ var AssetsPallet = /*#__PURE__*/function () {
3478
+ function AssetsPallet() {
3479
+ _classCallCheck(this, AssetsPallet);
3480
+ }
3481
+ return _createClass(AssetsPallet, [{
3482
+ key: "setBalance",
3483
+ value: function setBalance(address, asset, chain) {
3484
+ assertHasId(asset);
3485
+ var assetId = asset.assetId,
3486
+ amount = asset.amount;
3487
+ var id = chain === 'Astar' || chain === 'Shiden' || chain === 'Moonbeam' ? BigInt(assetId) : Number(assetId);
3488
+ var addr = isChainEvm(chain) ? address : {
3489
+ Id: address
3490
+ };
3491
+ return Promise.resolve({
3492
+ assetStatusTx: {
3493
+ module: 'Assets',
3494
+ method: 'force_asset_status',
3495
+ parameters: {
3496
+ id: id,
3497
+ owner: addr,
3498
+ issuer: addr,
3499
+ admin: addr,
3500
+ freezer: addr,
3501
+ min_balance: 0n,
3502
+ is_sufficient: true,
3503
+ is_frozen: false
3504
+ }
3505
+ },
3506
+ balanceTx: {
3507
+ module: 'Assets',
3508
+ method: 'mint',
3509
+ parameters: {
3510
+ id: id,
3511
+ beneficiary: addr,
3512
+ amount: amount
3513
+ }
3514
+ }
3515
+ });
3516
+ }
3517
+ }]);
3518
+ }();
3519
+
3477
3520
  // Inspired by Moonbeam XCM-SDK
3478
3521
  // https://github.com/moonbeam-foundation/xcm-sdk/blob/ab835c15bf41612604b1c858d956a9f07705ed65/packages/utils/src/format/asset.ts#L1
3479
3522
  var formatAssetIdToERC20 = function formatAssetIdToERC20(id) {
@@ -4148,7 +4191,7 @@ var createOriginLocation = function createOriginLocation(origin, destination) {
4148
4191
  };
4149
4192
  var getDestXcmFee = /*#__PURE__*/function () {
4150
4193
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
4151
- var api, origin, hopChain, destination, currency, forwardedXcms, asset, address, feeAsset, originFee, disableFallback, resolvedFeeAsset, calcPaymentInfoFee, _fee, sufficient, dryRunResult, _fee2, _sufficient, fee, newForwardedXcms, destParaId;
4194
+ var api, origin, hopChain, destination, currency, forwardedXcms, asset, address, feeAsset, originFee, disableFallback, resolvedFeeAsset, calcPaymentInfoFee, _fee, sufficient, dryRunResult, _fee2, fee, newForwardedXcms, destParaId;
4152
4195
  return _regenerator().w(function (_context2) {
4153
4196
  while (1) switch (_context2.n) {
4154
4197
  case 0:
@@ -4228,7 +4271,7 @@ var getDestXcmFee = /*#__PURE__*/function () {
4228
4271
  return _context2.a(2, {
4229
4272
  fee: _fee,
4230
4273
  feeType: 'paymentInfo',
4231
- sufficient: sufficient
4274
+ sufficient: !hasDryRunSupport(destination) ? sufficient : false
4232
4275
  });
4233
4276
  case 3:
4234
4277
  _context2.n = 4;
@@ -4245,7 +4288,7 @@ var getDestXcmFee = /*#__PURE__*/function () {
4245
4288
  case 4:
4246
4289
  dryRunResult = _context2.v;
4247
4290
  if (dryRunResult.success) {
4248
- _context2.n = 8;
4291
+ _context2.n = 7;
4249
4292
  break;
4250
4293
  }
4251
4294
  if (!disableFallback) {
@@ -4260,17 +4303,13 @@ var getDestXcmFee = /*#__PURE__*/function () {
4260
4303
  return calcPaymentInfoFee();
4261
4304
  case 6:
4262
4305
  _fee2 = _context2.v;
4263
- _context2.n = 7;
4264
- return isSufficientDestination(api, destination, address, BigInt(currency.amount), asset, _fee2);
4265
- case 7:
4266
- _sufficient = _context2.v;
4267
4306
  return _context2.a(2, {
4268
4307
  fee: _fee2,
4269
4308
  feeType: 'paymentInfo',
4270
4309
  dryRunError: dryRunResult.failureReason,
4271
- sufficient: _sufficient
4310
+ sufficient: false
4272
4311
  });
4273
- case 8:
4312
+ case 7:
4274
4313
  fee = dryRunResult.fee, newForwardedXcms = dryRunResult.forwardedXcms, destParaId = dryRunResult.destParaId;
4275
4314
  return _context2.a(2, {
4276
4315
  fee: fee,
@@ -5064,6 +5103,9 @@ var dryRunInternal = /*#__PURE__*/function () {
5064
5103
  tx: tx,
5065
5104
  chain: origin,
5066
5105
  address: senderAddress,
5106
+ asset: _objectSpread2(_objectSpread2({}, asset), {}, {
5107
+ amount: amount
5108
+ }),
5067
5109
  feeAsset: resolvedFeeAsset
5068
5110
  });
5069
5111
  case 1:
@@ -5291,13 +5333,332 @@ var dryRunOrigin = /*#__PURE__*/function () {
5291
5333
  };
5292
5334
  }();
5293
5335
 
5294
- var getOriginXcmFee = /*#__PURE__*/function () {
5336
+ var AssetManagerPallet = /*#__PURE__*/function () {
5337
+ function AssetManagerPallet() {
5338
+ _classCallCheck(this, AssetManagerPallet);
5339
+ }
5340
+ return _createClass(AssetManagerPallet, [{
5341
+ key: "setBalance",
5342
+ value: function setBalance(address, asset) {
5343
+ assertHasId(asset);
5344
+ var assetId = asset.assetId,
5345
+ amount = asset.amount;
5346
+ return Promise.resolve({
5347
+ balanceTx: {
5348
+ module: 'AssetManager',
5349
+ method: 'updateBalance',
5350
+ parameters: {
5351
+ who: {
5352
+ Id: address
5353
+ },
5354
+ currency_id: {
5355
+ ForeignAsset: assetId
5356
+ },
5357
+ amount: amount
5358
+ }
5359
+ }
5360
+ });
5361
+ }
5362
+ }]);
5363
+ }();
5364
+
5365
+ var BalancesPallet = /*#__PURE__*/function () {
5366
+ function BalancesPallet() {
5367
+ _classCallCheck(this, BalancesPallet);
5368
+ }
5369
+ return _createClass(BalancesPallet, [{
5370
+ key: "setBalance",
5371
+ value: function setBalance(address, assetInfo, chain) {
5372
+ var amount = assetInfo.amount;
5373
+ var notUseId = chain.startsWith('Hydration') || chain === 'Basilisk' || isChainEvm(chain);
5374
+ return Promise.resolve({
5375
+ balanceTx: {
5376
+ module: 'Balances',
5377
+ method: 'force_set_balance',
5378
+ parameters: {
5379
+ who: notUseId ? address : {
5380
+ Id: address
5381
+ },
5382
+ new_free: amount
5383
+ }
5384
+ }
5385
+ });
5386
+ }
5387
+ }]);
5388
+ }();
5389
+
5390
+ var CurrenciesPallet = /*#__PURE__*/function () {
5391
+ function CurrenciesPallet() {
5392
+ _classCallCheck(this, CurrenciesPallet);
5393
+ }
5394
+ return _createClass(CurrenciesPallet, [{
5395
+ key: "setBalance",
5396
+ value: function setBalance(address, assetInfo) {
5397
+ assertHasId(assetInfo);
5398
+ var assetId = assetInfo.assetId,
5399
+ amount = assetInfo.amount;
5400
+ return Promise.resolve({
5401
+ balanceTx: {
5402
+ module: 'Currencies',
5403
+ method: 'update_balance',
5404
+ parameters: {
5405
+ who: address,
5406
+ currency_id: Number(assetId),
5407
+ amount: amount
5408
+ }
5409
+ }
5410
+ });
5411
+ }
5412
+ }]);
5413
+ }();
5414
+
5415
+ var ForeignAssetsPallet = /*#__PURE__*/function () {
5416
+ function ForeignAssetsPallet() {
5417
+ _classCallCheck(this, ForeignAssetsPallet);
5418
+ }
5419
+ return _createClass(ForeignAssetsPallet, [{
5420
+ key: "setBalance",
5421
+ value: function setBalance(address, asset) {
5422
+ assertHasLocation(asset);
5423
+ var location = asset.location,
5424
+ amount = asset.amount;
5425
+ return Promise.resolve({
5426
+ assetStatusTx: {
5427
+ module: 'ForeignAssets',
5428
+ method: 'force_asset_status',
5429
+ parameters: {
5430
+ id: location,
5431
+ owner: {
5432
+ Id: address
5433
+ },
5434
+ issuer: {
5435
+ Id: address
5436
+ },
5437
+ admin: {
5438
+ Id: address
5439
+ },
5440
+ freezer: {
5441
+ Id: address
5442
+ },
5443
+ min_balance: 0n,
5444
+ is_sufficient: true,
5445
+ is_frozen: false
5446
+ }
5447
+ },
5448
+ balanceTx: {
5449
+ module: 'ForeignAssets',
5450
+ method: 'mint',
5451
+ parameters: {
5452
+ id: location,
5453
+ beneficiary: {
5454
+ Id: address
5455
+ },
5456
+ amount: amount
5457
+ }
5458
+ }
5459
+ });
5460
+ }
5461
+ }]);
5462
+ }();
5463
+
5464
+ var SIZE = 32;
5465
+ var BALANCE_SLOT = 0;
5466
+ var calculateMappingSlot = function calculateMappingSlot(key) {
5467
+ var normalizedKey = getAddress(key);
5468
+ var keyPadded = pad(normalizedKey, {
5469
+ size: SIZE
5470
+ });
5471
+ var slotHex = pad(toHex(BALANCE_SLOT), {
5472
+ size: SIZE
5473
+ });
5474
+ var encoded = concat([keyPadded, slotHex]);
5475
+ return keccak256(encoded);
5476
+ };
5477
+ var SystemPallet = /*#__PURE__*/function () {
5478
+ function SystemPallet() {
5479
+ _classCallCheck(this, SystemPallet);
5480
+ }
5481
+ return _createClass(SystemPallet, [{
5482
+ key: "setBalance",
5483
+ value: function () {
5484
+ var _setBalance = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(address, assetInfo, _chain, api) {
5485
+ var contractAddr, slot, amountEncoded, storageKey;
5486
+ return _regenerator().w(function (_context) {
5487
+ while (1) switch (_context.n) {
5488
+ case 0:
5489
+ assertHasId(assetInfo);
5490
+ contractAddr = formatAssetIdToERC20(assetInfo.assetId);
5491
+ slot = calculateMappingSlot(address);
5492
+ amountEncoded = pad(toHex(assetInfo.amount), {
5493
+ size: SIZE
5494
+ });
5495
+ _context.n = 1;
5496
+ return api.getEvmStorage(contractAddr, slot);
5497
+ case 1:
5498
+ storageKey = _context.v;
5499
+ return _context.a(2, {
5500
+ balanceTx: {
5501
+ module: 'System',
5502
+ method: 'set_storage',
5503
+ parameters: {
5504
+ items: [[storageKey, amountEncoded]]
5505
+ }
5506
+ }
5507
+ });
5508
+ }
5509
+ }, _callee);
5510
+ }));
5511
+ function setBalance(_x, _x2, _x3, _x4) {
5512
+ return _setBalance.apply(this, arguments);
5513
+ }
5514
+ return setBalance;
5515
+ }()
5516
+ }]);
5517
+ }();
5518
+
5519
+ var TokensPallet = /*#__PURE__*/function () {
5520
+ function TokensPallet() {
5521
+ _classCallCheck(this, TokensPallet);
5522
+ }
5523
+ return _createClass(TokensPallet, [{
5524
+ key: "setBalance",
5525
+ value: function setBalance(address, asset, chain) {
5526
+ var isBifrost = chain.startsWith('Bifrost');
5527
+ if (!isBifrost) assertHasId(asset);
5528
+ var id = isBifrost ? getChain('BifrostPolkadot').getCurrencySelection(asset) : (assertHasId(asset), asset.assetId);
5529
+ var amount = asset.amount;
5530
+ return Promise.resolve({
5531
+ balanceTx: {
5532
+ module: 'Tokens',
5533
+ method: 'set_balance',
5534
+ parameters: {
5535
+ who: {
5536
+ Id: address
5537
+ },
5538
+ currency_id: id,
5539
+ new_free: amount,
5540
+ new_reserved: 0n
5541
+ }
5542
+ }
5543
+ });
5544
+ }
5545
+ }]);
5546
+ }();
5547
+
5548
+ var palletRegistry = {
5549
+ Balances: BalancesPallet,
5550
+ Tokens: TokensPallet,
5551
+ Currencies: CurrenciesPallet,
5552
+ Assets: AssetsPallet,
5553
+ ForeignAssets: ForeignAssetsPallet,
5554
+ AssetManager: AssetManagerPallet,
5555
+ System: SystemPallet
5556
+ };
5557
+ var getPalletInstance = function getPalletInstance(type) {
5558
+ var HandlerClass = palletRegistry[type];
5559
+ return new HandlerClass();
5560
+ };
5561
+
5562
+ var MINT_AMOUNT = 1000n; // Mint 1000 units of asset
5563
+ var pickOtherPallet = function pickOtherPallet(asset, pallets) {
5564
+ if (isForeignAsset(asset) && asset.assetId === undefined) {
5565
+ var _pallets$find;
5566
+ // No assetId means it's probably a ForeignAssets pallet asset
5567
+ return (_pallets$find = pallets.find(function (pallet) {
5568
+ return pallet.startsWith('Foreign');
5569
+ })) !== null && _pallets$find !== void 0 ? _pallets$find : pallets[0];
5570
+ }
5571
+ return pallets[0];
5572
+ };
5573
+ var createMintTxs = function createMintTxs(chain, asset, address, api) {
5574
+ var nativePallet = getNativeAssetsPallet(chain);
5575
+ var otherPallets = getOtherAssetsPallets(chain);
5576
+ var isMainNativeAsset = isSymbolMatch(asset.symbol, getNativeAssetSymbol(chain));
5577
+ var pallet = isForeignAsset(asset) || !isMainNativeAsset ? pickOtherPallet(asset, otherPallets) : nativePallet;
5578
+ var palletInstance = getPalletInstance(pallet);
5579
+ return palletInstance.setBalance(address, asset, chain, api);
5580
+ };
5581
+ var createRequiredMintTxs = function createRequiredMintTxs(chain, currency, amountHuman, address, api) {
5582
+ var asset = findAssetInfoOrThrow(chain, currency, null);
5583
+ var amount = parseUnits(amountHuman.toString(), asset.decimals);
5584
+ return createMintTxs(chain, _objectSpread2(_objectSpread2({}, asset), {}, {
5585
+ amount: amount
5586
+ }), address, api);
5587
+ };
5588
+ var createOptionalMintTxs = function createOptionalMintTxs(chain, currency, amountHuman, address, api) {
5589
+ var asset = findAssetInfo(chain, currency, null);
5590
+ if (!asset) return null;
5591
+ var amount = parseUnits(amountHuman.toString(), asset.decimals);
5592
+ return createMintTxs(chain, _objectSpread2(_objectSpread2({}, asset), {}, {
5593
+ amount: amount
5594
+ }), address, api);
5595
+ };
5596
+ var resultToExtrinsics = function resultToExtrinsics(api, address, _ref) {
5597
+ var assetStatusTx = _ref.assetStatusTx,
5598
+ balanceTx = _ref.balanceTx;
5599
+ return [].concat(_toConsumableArray(assetStatusTx ? [api.callTxMethod(assetStatusTx)] : []), _toConsumableArray(assetStatusTx ? [api.callDispatchAsMethod(api.callTxMethod(balanceTx), address)] : [api.callTxMethod(balanceTx)]));
5600
+ };
5601
+ var wrapTxBypass = /*#__PURE__*/function () {
5602
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(api, chain, asset, feeAsset, address, tx) {
5603
+ var mintNativeAssetRes, mintRelayAssetRes, mintFeeAssetRes, amount, mintAmount, mintAssetRes;
5604
+ return _regenerator().w(function (_context) {
5605
+ while (1) switch (_context.n) {
5606
+ case 0:
5607
+ _context.n = 1;
5608
+ return createRequiredMintTxs(chain, {
5609
+ symbol: Native(getNativeAssetSymbol(chain))
5610
+ }, MINT_AMOUNT, address, api);
5611
+ case 1:
5612
+ mintNativeAssetRes = _context.v;
5613
+ _context.n = 2;
5614
+ return createOptionalMintTxs(chain, {
5615
+ location: {
5616
+ parents: Parents.ONE,
5617
+ interior: {
5618
+ Here: null
5619
+ }
5620
+ }
5621
+ }, MINT_AMOUNT, address, api);
5622
+ case 2:
5623
+ mintRelayAssetRes = _context.v;
5624
+ if (!feeAsset) {
5625
+ _context.n = 4;
5626
+ break;
5627
+ }
5628
+ amount = parseUnits(MINT_AMOUNT.toString(), feeAsset.decimals);
5629
+ _context.n = 3;
5630
+ return createMintTxs(chain, _objectSpread2(_objectSpread2({}, feeAsset), {}, {
5631
+ amount: amount
5632
+ }), address, api);
5633
+ case 3:
5634
+ mintFeeAssetRes = _context.v;
5635
+ case 4:
5636
+ // mint asset that is being sent
5637
+ mintAmount = parseUnits(MINT_AMOUNT.toString(), asset.decimals);
5638
+ _context.n = 5;
5639
+ return createMintTxs(chain, _objectSpread2(_objectSpread2({}, asset), {}, {
5640
+ amount: asset.amount + mintAmount
5641
+ }), address, api);
5642
+ case 5:
5643
+ mintAssetRes = _context.v;
5644
+ return _context.a(2, api.callBatchMethod([].concat(_toConsumableArray([mintNativeAssetRes, mintRelayAssetRes, mintFeeAssetRes, mintAssetRes].flatMap(function (tx) {
5645
+ return tx ? resultToExtrinsics(api, address, tx) : [];
5646
+ })), [api.callDispatchAsMethod(tx, address)]), BatchMode.BATCH_ALL));
5647
+ }
5648
+ }, _callee);
5649
+ }));
5650
+ return function wrapTxBypass(_x, _x2, _x3, _x4, _x5, _x6) {
5651
+ return _ref2.apply(this, arguments);
5652
+ };
5653
+ }();
5654
+
5655
+ var getOriginXcmFeeInternal = /*#__PURE__*/function () {
5295
5656
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
5296
- var api, tx, origin, destination, senderAddress, disableFallback, feeAsset, currency, asset, amount, resolvedFeeAsset, nativeAssetSymbol, rawFee, paddedFee, sufficient, dryRunResult, _rawFee, _paddedFee, _sufficient, fee, forwardedXcms, destParaId, weight, currencySymbol;
5657
+ var api, tx, origin, destination, senderAddress, disableFallback, feeAsset, currency, _ref$useRootOrigin, useRootOrigin, asset, amount, resolvedFeeAsset, nativeAssetSymbol, rawFee, paddedFee, sufficient, dryRunResult, _rawFee, _paddedFee, fee, forwardedXcms, destParaId, weight, currencySymbol;
5297
5658
  return _regenerator().w(function (_context) {
5298
5659
  while (1) switch (_context.n) {
5299
5660
  case 0:
5300
- api = _ref.api, tx = _ref.tx, origin = _ref.origin, destination = _ref.destination, senderAddress = _ref.senderAddress, disableFallback = _ref.disableFallback, feeAsset = _ref.feeAsset, currency = _ref.currency;
5661
+ api = _ref.api, tx = _ref.tx, origin = _ref.origin, destination = _ref.destination, senderAddress = _ref.senderAddress, disableFallback = _ref.disableFallback, feeAsset = _ref.feeAsset, currency = _ref.currency, _ref$useRootOrigin = _ref.useRootOrigin, useRootOrigin = _ref$useRootOrigin === void 0 ? false : _ref$useRootOrigin;
5301
5662
  asset = findAssetInfoOrThrow(origin, currency, destination);
5302
5663
  amount = abstractDecimals(currency.amount, asset.decimals, api);
5303
5664
  resolvedFeeAsset = feeAsset ? resolveFeeAsset(feeAsset, origin, destination, currency) : undefined;
@@ -5332,12 +5693,17 @@ var getOriginXcmFee = /*#__PURE__*/function () {
5332
5693
  tx: tx,
5333
5694
  chain: origin,
5334
5695
  address: senderAddress,
5335
- feeAsset: resolvedFeeAsset
5696
+ asset: _objectSpread2(_objectSpread2({}, asset), {}, {
5697
+ amount: amount
5698
+ }),
5699
+ feeAsset: resolvedFeeAsset,
5700
+ // Force dryRun pass
5701
+ useRootOrigin: useRootOrigin
5336
5702
  });
5337
5703
  case 5:
5338
5704
  dryRunResult = _context.v;
5339
5705
  if (dryRunResult.success) {
5340
- _context.n = 9;
5706
+ _context.n = 8;
5341
5707
  break;
5342
5708
  }
5343
5709
  if (!disableFallback) {
@@ -5353,20 +5719,14 @@ var getOriginXcmFee = /*#__PURE__*/function () {
5353
5719
  case 7:
5354
5720
  _rawFee = _context.v;
5355
5721
  _paddedFee = padFee(_rawFee, origin, destination, 'origin');
5356
- _context.n = 8;
5357
- return isSufficientOrigin(api, origin, destination, senderAddress, _paddedFee, _objectSpread2(_objectSpread2({}, currency), {}, {
5358
- amount: amount
5359
- }), asset, resolvedFeeAsset);
5360
- case 8:
5361
- _sufficient = _context.v;
5362
5722
  return _context.a(2, {
5363
5723
  fee: _paddedFee,
5364
5724
  currency: nativeAssetSymbol,
5365
5725
  feeType: 'paymentInfo',
5366
5726
  dryRunError: dryRunResult.failureReason,
5367
- sufficient: _sufficient
5727
+ sufficient: false
5368
5728
  });
5369
- case 9:
5729
+ case 8:
5370
5730
  fee = dryRunResult.fee, forwardedXcms = dryRunResult.forwardedXcms, destParaId = dryRunResult.destParaId, weight = dryRunResult.weight;
5371
5731
  currencySymbol = resolvedFeeAsset ? resolvedFeeAsset.symbol : nativeAssetSymbol;
5372
5732
  return _context.a(2, {
@@ -5381,11 +5741,40 @@ var getOriginXcmFee = /*#__PURE__*/function () {
5381
5741
  }
5382
5742
  }, _callee);
5383
5743
  }));
5384
- return function getOriginXcmFee(_x) {
5744
+ return function getOriginXcmFeeInternal(_x) {
5385
5745
  return _ref2.apply(this, arguments);
5386
5746
  };
5387
5747
  }();
5388
5748
 
5749
+ var getOriginXcmFee = /*#__PURE__*/function () {
5750
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options) {
5751
+ var forced, real;
5752
+ return _regenerator().w(function (_context) {
5753
+ while (1) switch (_context.n) {
5754
+ case 0:
5755
+ _context.n = 1;
5756
+ return getOriginXcmFeeInternal(_objectSpread2(_objectSpread2({}, options), {}, {
5757
+ useRootOrigin: true
5758
+ }));
5759
+ case 1:
5760
+ forced = _context.v;
5761
+ _context.n = 2;
5762
+ return getOriginXcmFeeInternal(_objectSpread2(_objectSpread2({}, options), {}, {
5763
+ useRootOrigin: false
5764
+ }));
5765
+ case 2:
5766
+ real = _context.v;
5767
+ return _context.a(2, _objectSpread2(_objectSpread2({}, forced), {}, {
5768
+ sufficient: real.sufficient
5769
+ }));
5770
+ }
5771
+ }, _callee);
5772
+ }));
5773
+ return function getOriginXcmFee(_x) {
5774
+ return _ref.apply(this, arguments);
5775
+ };
5776
+ }();
5777
+
5389
5778
  var resolveAsset = function resolveAsset(currency, origin, destination, assetCheckEnabled) {
5390
5779
  return assetCheckEnabled ? findAssetInfo(origin, currency, !isTLocation(destination) ? destination : null) : null;
5391
5780
  };
@@ -5627,8 +6016,8 @@ var getFailureInfo = function getFailureInfo(chains, hops) {
5627
6016
  }
5628
6017
  return {};
5629
6018
  };
5630
- var getXcmFee = /*#__PURE__*/function () {
5631
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref) {
6019
+ var getXcmFeeInternal = /*#__PURE__*/function () {
6020
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref, useRootOrigin) {
5632
6021
  var api, tx, origin, destination, senderAddress, address, currency, feeAsset, disableFallback, swapConfig, asset, amount, _yield$getOriginXcmFe, originFee, originCurrency, originFeeType, originDryRunError, initialForwardedXcm, initialDestParaId, originWeight, sufficientOriginFee, destApi, destFeeRes, _result, _getFailureInfo, _failureChain, _failureReason, processHop, traversalResult, destFee, destCurrency, destFeeType, destDryRunError, destSufficient, destResult, _destApi, destFallback, assetHubChain, processedBridgeHub, bridgeHubChain, bridgeHubHopIndex, convertToFeeDetail, result, _getFailureInfo2, failureChain, failureReason;
5633
6022
  return _regenerator().w(function (_context2) {
5634
6023
  while (1) switch (_context2.p = _context2.n) {
@@ -5637,7 +6026,7 @@ var getXcmFee = /*#__PURE__*/function () {
5637
6026
  asset = findAssetInfoOrThrow(origin, currency, destination);
5638
6027
  amount = abstractDecimals(currency.amount, asset.decimals, api);
5639
6028
  _context2.n = 1;
5640
- return getOriginXcmFee({
6029
+ return getOriginXcmFeeInternal({
5641
6030
  api: api,
5642
6031
  tx: tx,
5643
6032
  origin: origin,
@@ -5645,7 +6034,8 @@ var getXcmFee = /*#__PURE__*/function () {
5645
6034
  senderAddress: senderAddress,
5646
6035
  feeAsset: feeAsset,
5647
6036
  currency: currency,
5648
- disableFallback: disableFallback
6037
+ disableFallback: disableFallback,
6038
+ useRootOrigin: useRootOrigin
5649
6039
  });
5650
6040
  case 1:
5651
6041
  _yield$getOriginXcmFe = _context2.v;
@@ -5691,13 +6081,12 @@ var getXcmFee = /*#__PURE__*/function () {
5691
6081
  case 5:
5692
6082
  destFeeRes = _context2.v;
5693
6083
  _result = {
5694
- origin: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, originFee && {
6084
+ origin: _objectSpread2(_objectSpread2(_objectSpread2({}, originFee && {
5695
6085
  fee: originFee
5696
6086
  }), originFeeType && {
5697
6087
  feeType: originFeeType
5698
- }), sufficientOriginFee !== undefined && {
5699
- sufficient: sufficientOriginFee
5700
6088
  }), {}, {
6089
+ sufficient: sufficientOriginFee,
5701
6090
  currency: originCurrency
5702
6091
  }, originDryRunError && {
5703
6092
  dryRunError: originDryRunError
@@ -5774,7 +6163,7 @@ var getXcmFee = /*#__PURE__*/function () {
5774
6163
  }
5775
6164
  }, _callee);
5776
6165
  }));
5777
- return function processHop(_x2) {
6166
+ return function processHop(_x3) {
5778
6167
  return _ref3.apply(this, arguments);
5779
6168
  };
5780
6169
  }();
@@ -5940,11 +6329,59 @@ var getXcmFee = /*#__PURE__*/function () {
5940
6329
  }
5941
6330
  }, _callee2, null, [[3,, 6, 8]]);
5942
6331
  }));
5943
- return function getXcmFee(_x) {
6332
+ return function getXcmFeeInternal(_x, _x2) {
5944
6333
  return _ref2.apply(this, arguments);
5945
6334
  };
5946
6335
  }();
5947
6336
 
6337
+ var getXcmFee = /*#__PURE__*/function () {
6338
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options) {
6339
+ var _real$assetHub, _real$bridgeHub;
6340
+ var forced, real;
6341
+ return _regenerator().w(function (_context) {
6342
+ while (1) switch (_context.n) {
6343
+ case 0:
6344
+ _context.n = 1;
6345
+ return getXcmFeeInternal(options, true);
6346
+ case 1:
6347
+ forced = _context.v;
6348
+ _context.n = 2;
6349
+ return getXcmFeeInternal(options, false);
6350
+ case 2:
6351
+ real = _context.v;
6352
+ return _context.a(2, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, forced), {}, {
6353
+ origin: _objectSpread2(_objectSpread2({}, forced.origin), {}, {
6354
+ sufficient: real.origin.sufficient
6355
+ }),
6356
+ destination: _objectSpread2(_objectSpread2({}, forced.destination), {}, {
6357
+ sufficient: real.destination.sufficient
6358
+ })
6359
+ }, forced.assetHub ? {
6360
+ assetHub: _objectSpread2(_objectSpread2({}, forced.assetHub), {}, {
6361
+ sufficient: (_real$assetHub = real.assetHub) === null || _real$assetHub === void 0 ? void 0 : _real$assetHub.sufficient
6362
+ })
6363
+ } : {}), forced.bridgeHub ? {
6364
+ bridgeHub: _objectSpread2(_objectSpread2({}, forced.bridgeHub), {}, {
6365
+ sufficient: (_real$bridgeHub = real.bridgeHub) === null || _real$bridgeHub === void 0 ? void 0 : _real$bridgeHub.sufficient
6366
+ })
6367
+ } : {}), {}, {
6368
+ hops: forced.hops.map(function (hop, index) {
6369
+ var _real$hops$index;
6370
+ return _objectSpread2(_objectSpread2({}, hop), {}, {
6371
+ result: _objectSpread2(_objectSpread2({}, hop.result), {}, {
6372
+ sufficient: (_real$hops$index = real.hops[index]) === null || _real$hops$index === void 0 ? void 0 : _real$hops$index.result.sufficient
6373
+ })
6374
+ });
6375
+ })
6376
+ }));
6377
+ }
6378
+ }, _callee);
6379
+ }));
6380
+ return function getXcmFee(_x) {
6381
+ return _ref.apply(this, arguments);
6382
+ };
6383
+ }();
6384
+
5948
6385
  var BRIDGE_FEE_DOT = 682395810n; // 0.068239581 DOT
5949
6386
  var BRIDGE_FEE_KSM = 12016807000n; // 0.012016807 KSM
5950
6387
  var getXcmFeeEstimate = /*#__PURE__*/function () {
@@ -6520,7 +6957,7 @@ var attemptDryRunFee = /*#__PURE__*/function () {
6520
6957
  modifiedBuilder = builder.currency(_objectSpread2(_objectSpread2({}, currency), {}, {
6521
6958
  amount: padFeeBy(BigInt(currency.amount), -percentage)
6522
6959
  }));
6523
- _t = getOriginXcmFee;
6960
+ _t = getOriginXcmFeeInternal;
6524
6961
  _t2 = _objectSpread2;
6525
6962
  _t3 = _objectSpread2({}, options);
6526
6963
  _t4 = {};
@@ -10637,7 +11074,7 @@ var Moonbeam = /*#__PURE__*/function (_Parachain) {
10637
11074
  case 3:
10638
11075
  location = this.getLocation(assetInfo, scenario);
10639
11076
  return _context.a(2, transferPolkadotXcm(_objectSpread2(_objectSpread2({}, input), {}, {
10640
- asset: createAsset(version, assetInfo.amount, location)
11077
+ asset: createAsset(version, assetInfo.amount, localizeLocation(this.chain, location))
10641
11078
  }), 'transfer_assets', 'Unlimited'));
10642
11079
  }
10643
11080
  }, _callee, this);
@@ -12371,4 +12808,4 @@ var Builder = function Builder(api) {
12371
12808
  return new GeneralBuilder(api, new BatchTransactionManager());
12372
12809
  };
12373
12810
 
12374
- export { AssetClaimBuilder, BatchMode, BridgeHaltedError, Builder, ChainNotSupportedError, DRY_RUN_CLIENT_TIMEOUT_MS, DryRunFailedError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, GeneralBuilder, IncompatibleChainsError, InvalidAddressError, InvalidParameterError, MissingChainApiError, NoXCMSupportImplementedError, PolkadotXcmError, ScenarioNotSupportedError, TX_CLIENT_TIMEOUT_MS, TransferToAhNotSupported, UnableToComputeError, XTokensError, abstractDecimals, addEthereumBridgeFees, addXcmVersionHeader, applyDecimalAbstraction, assertAddressIsString, assertHasId, assertHasLocation, assertIsForeign, assertToIsString, blake2b256, blake2b512, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, convertSs58, createAsset, createAssetsFilter, createBaseExecuteXcm, createBeneficiaryLocXTokens, createBeneficiaryLocation, createChainClient, createDirectExecuteXcm, createExecuteCall, createExecuteExchangeXcm, createTypeAndThenCall, createVersionedAssets, createX1Payload, deriveAccountId, dryRun, dryRunOrigin, encodeSs58, getAssetBalance, getAssetBalanceInternal, getAssetReserveChain, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getBridgeStatus, getChain, getChainConfig, getChainLocation, getChainProviders, getChainVersion, getOriginFeeDetails, getOriginFeeDetailsInternal, getOriginXcmFee, getOriginXcmFeeEstimate, getParaEthTransferFees, getParaId, getRelayChainOf, getTChain, getTransferInfo, getTransferableAmount, getTransferableAmountInternal, getXcmFee, getXcmFeeEstimate, handleExecuteTransfer, handleSwapExecuteTransfer, handleToAhTeleport, isConfig, localizeLocation, maybeOverrideAsset, maybeOverrideAssets, padFee, padFeeBy, resolveModuleError, resolveParaId, reverseTransformLocation, send, sortAssets, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, traverseXcmHops, validateAddress, verifyEdOnDestination };
12811
+ export { AssetClaimBuilder, AssetsPallet, BatchMode, BridgeHaltedError, Builder, ChainNotSupportedError, DRY_RUN_CLIENT_TIMEOUT_MS, DryRunFailedError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, GeneralBuilder, IncompatibleChainsError, InvalidAddressError, InvalidParameterError, MissingChainApiError, NoXCMSupportImplementedError, PolkadotXcmError, ScenarioNotSupportedError, TX_CLIENT_TIMEOUT_MS, TransferToAhNotSupported, UnableToComputeError, XTokensError, abstractDecimals, addEthereumBridgeFees, addXcmVersionHeader, applyDecimalAbstraction, assertAddressIsString, assertHasId, assertHasLocation, assertIsForeign, assertToIsString, blake2b256, blake2b512, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, convertSs58, createAsset, createAssetsFilter, createBaseExecuteXcm, createBeneficiaryLocXTokens, createBeneficiaryLocation, createChainClient, createDirectExecuteXcm, createExecuteCall, createExecuteExchangeXcm, createTypeAndThenCall, createVersionedAssets, createX1Payload, deriveAccountId, dryRun, dryRunOrigin, encodeSs58, getAssetBalance, getAssetBalanceInternal, getAssetReserveChain, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getBridgeStatus, getChain, getChainConfig, getChainLocation, getChainProviders, getChainVersion, getOriginFeeDetails, getOriginFeeDetailsInternal, getOriginXcmFee, getOriginXcmFeeEstimate, getOriginXcmFeeInternal, getParaEthTransferFees, getParaId, getRelayChainOf, getTChain, getTransferInfo, getTransferableAmount, getTransferableAmountInternal, getXcmFee, getXcmFeeEstimate, handleExecuteTransfer, handleSwapExecuteTransfer, handleToAhTeleport, isConfig, localizeLocation, maybeOverrideAsset, maybeOverrideAssets, padFee, padFeeBy, resolveModuleError, resolveParaId, reverseTransformLocation, send, sortAssets, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, traverseXcmHops, validateAddress, verifyEdOnDestination, wrapTxBypass };