@paraspell/sdk-core 11.8.5 → 11.9.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.cjs CHANGED
@@ -771,6 +771,20 @@ var createVersionedAssets = function createVersionedAssets(version, amount, loca
771
771
  return addXcmVersionHeader([asset], version);
772
772
  };
773
773
 
774
+ var getCurrencySelection = function getCurrencySelection(asset) {
775
+ if (asset.location) return {
776
+ location: asset.location
777
+ };
778
+ if (assets.isForeignAsset(asset) && asset.assetId) {
779
+ return {
780
+ id: asset.assetId
781
+ };
782
+ }
783
+ return {
784
+ symbol: asset.symbol
785
+ };
786
+ };
787
+
774
788
  var maybeOverrideAssets = function maybeOverrideAssets(version, amount, assets, overriddenCurrency) {
775
789
  if (!overriddenCurrency) {
776
790
  return assets;
@@ -846,35 +860,54 @@ var computeOverridenAmount = function computeOverridenAmount(options, increaseAm
846
860
  return viem.parseUnits(increaseAmount, asset.decimals) + BigInt(amount);
847
861
  }
848
862
  };
849
- var overrideTxAmount = function overrideTxAmount(options, builder, amount) {
850
- var modifiedBuilder = builder.currency(_objectSpread2(_objectSpread2({}, options.currency), {}, {
851
- amount: computeOverridenAmount(options, amount)
852
- }));
853
- return modifiedBuilder['buildInternal']();
854
- };
855
- var createTx = /*#__PURE__*/function () {
863
+ var overrideTxAmount = /*#__PURE__*/function () {
856
864
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, builder, amount) {
865
+ var modifiedBuilder, _yield$modifiedBuilde, tx;
857
866
  return _regenerator().w(function (_context) {
858
867
  while (1) switch (_context.n) {
868
+ case 0:
869
+ modifiedBuilder = builder.currency(_objectSpread2(_objectSpread2({}, options.currency), {}, {
870
+ amount: computeOverridenAmount(options, amount)
871
+ }));
872
+ _context.n = 1;
873
+ return modifiedBuilder['buildInternal']();
874
+ case 1:
875
+ _yield$modifiedBuilde = _context.v;
876
+ tx = _yield$modifiedBuilde.tx;
877
+ return _context.a(2, tx);
878
+ }
879
+ }, _callee);
880
+ }));
881
+ return function overrideTxAmount(_x, _x2, _x3) {
882
+ return _ref.apply(this, arguments);
883
+ };
884
+ }();
885
+ var createTx = /*#__PURE__*/function () {
886
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options, builder, amount) {
887
+ var _yield$builder$buildI, tx;
888
+ return _regenerator().w(function (_context2) {
889
+ while (1) switch (_context2.n) {
859
890
  case 0:
860
891
  if (!(amount === undefined)) {
861
- _context.n = 2;
892
+ _context2.n = 2;
862
893
  break;
863
894
  }
864
- _context.n = 1;
895
+ _context2.n = 1;
865
896
  return builder['buildInternal']();
866
897
  case 1:
867
- return _context.a(2, _context.v);
898
+ _yield$builder$buildI = _context2.v;
899
+ tx = _yield$builder$buildI.tx;
900
+ return _context2.a(2, tx);
868
901
  case 2:
869
- _context.n = 3;
902
+ _context2.n = 3;
870
903
  return overrideTxAmount(options, builder, amount);
871
904
  case 3:
872
- return _context.a(2, _context.v);
905
+ return _context2.a(2, _context2.v);
873
906
  }
874
- }, _callee);
907
+ }, _callee2);
875
908
  }));
876
- return function createTx(_x, _x2, _x3) {
877
- return _ref.apply(this, arguments);
909
+ return function createTx(_x4, _x5, _x6) {
910
+ return _ref2.apply(this, arguments);
878
911
  };
879
912
  }();
880
913
 
@@ -908,7 +941,7 @@ var getRelayChainOf = function getRelayChainOf(chain) {
908
941
  };
909
942
 
910
943
  var AssetHubPolkadot$1 = {
911
- name: "AssetHub",
944
+ name: "Asset Hub",
912
945
  info: "PolkadotAssetHub",
913
946
  paraId: 1000,
914
947
  providers: [
@@ -1009,10 +1042,6 @@ var Astar$1 = {
1009
1042
  name: "Astar",
1010
1043
  endpoint: "wss://rpc.astar.network"
1011
1044
  },
1012
- {
1013
- name: "Automata 1RPC",
1014
- endpoint: "wss://1rpc.io/astr"
1015
- },
1016
1045
  {
1017
1046
  name: "Blast",
1018
1047
  endpoint: "wss://astar.public.blastapi.io"
@@ -1051,15 +1080,11 @@ var BifrostPolkadot$1 = {
1051
1080
  {
1052
1081
  name: "LiebiEU",
1053
1082
  endpoint: "wss://eu.bifrost-polkadot-rpc.liebi.com/ws"
1054
- },
1055
- {
1056
- name: "RadiumBlock",
1057
- endpoint: "wss://bifrost.public.curie.radiumblock.co/ws"
1058
1083
  }
1059
1084
  ]
1060
1085
  };
1061
1086
  var BridgeHubPolkadot$1 = {
1062
- name: "BridgeHub",
1087
+ name: "Bridge Hub",
1063
1088
  info: "polkadotBridgeHub",
1064
1089
  paraId: 1002,
1065
1090
  providers: [
@@ -1208,16 +1233,16 @@ var Interlay$1 = {
1208
1233
  };
1209
1234
  var Heima$1 = {
1210
1235
  name: "Heima",
1211
- info: "litentry",
1236
+ info: "heima",
1212
1237
  paraId: 2013,
1213
1238
  providers: [
1214
1239
  {
1215
1240
  name: "Dwellir",
1216
- endpoint: "wss://litentry-rpc.dwellir.com"
1241
+ endpoint: "wss://heima-rpc.n.dwellir.com"
1217
1242
  },
1218
1243
  {
1219
- name: "Litentry",
1220
- endpoint: "wss://rpc.litentry-parachain.litentry.io"
1244
+ name: "Heima",
1245
+ endpoint: "wss://rpc.heima-parachain.heima.network"
1221
1246
  }
1222
1247
  ]
1223
1248
  };
@@ -1642,7 +1667,7 @@ var Xode$1 = {
1642
1667
  ]
1643
1668
  };
1644
1669
  var AssetHubKusama$1 = {
1645
- name: "AssetHub",
1670
+ name: "Asset Hub",
1646
1671
  info: "KusamaAssetHub",
1647
1672
  paraId: 1000,
1648
1673
  providers: [
@@ -1685,7 +1710,7 @@ var AssetHubKusama$1 = {
1685
1710
  ]
1686
1711
  };
1687
1712
  var BridgeHubKusama$1 = {
1688
- name: "BridgeHub",
1713
+ name: "Bridge Hub",
1689
1714
  info: "kusamaBridgeHub",
1690
1715
  paraId: 1002,
1691
1716
  providers: [
@@ -1987,10 +2012,6 @@ var Quartz$1 = {
1987
2012
  name: "Geo Load Balancer",
1988
2013
  endpoint: "wss://ws-quartz.unique.network"
1989
2014
  },
1990
- {
1991
- name: "Unique Asia",
1992
- endpoint: "wss://asia-ws-quartz.unique.network"
1993
- },
1994
2015
  {
1995
2016
  name: "Unique Europe",
1996
2017
  endpoint: "wss://eu-ws-quartz.unique.network"
@@ -2082,7 +2103,7 @@ var Zeitgeist$1 = {
2082
2103
  ]
2083
2104
  };
2084
2105
  var AssetHubWestend$1 = {
2085
- name: "AssetHub",
2106
+ name: "Asset Hub",
2086
2107
  info: "WestendAssetHub",
2087
2108
  paraId: 1000,
2088
2109
  providers: [
@@ -2105,7 +2126,7 @@ var AssetHubWestend$1 = {
2105
2126
  ]
2106
2127
  };
2107
2128
  var BridgeHubWestend$1 = {
2108
- name: "BridgeHub",
2129
+ name: "Bridge Hub",
2109
2130
  info: "westendBridgeHub",
2110
2131
  paraId: 1002,
2111
2132
  providers: [
@@ -2195,7 +2216,7 @@ var AjunaPaseo$1 = {
2195
2216
  ]
2196
2217
  };
2197
2218
  var AssetHubPaseo$1 = {
2198
- name: "AssetHub",
2219
+ name: "Asset Hub",
2199
2220
  info: "PaseoAssetHub",
2200
2221
  paraId: 1000,
2201
2222
  providers: [
@@ -2233,7 +2254,7 @@ var BifrostPaseo$1 = {
2233
2254
  ]
2234
2255
  };
2235
2256
  var BridgeHubPaseo$1 = {
2236
- name: "BridgeHub",
2257
+ name: "Bridge Hub",
2237
2258
  info: "PaseoBridgeHub",
2238
2259
  paraId: 1002,
2239
2260
  providers: [
@@ -2400,7 +2421,7 @@ var ZeitgeistPaseo$1 = {
2400
2421
  ]
2401
2422
  };
2402
2423
  var Polkadot = {
2403
- name: "Polkadot",
2424
+ name: "Polkadot Relay",
2404
2425
  info: "polkadot",
2405
2426
  paraId: 0,
2406
2427
  providers: [
@@ -2463,7 +2484,7 @@ var Polkadot = {
2463
2484
  ]
2464
2485
  };
2465
2486
  var Kusama = {
2466
- name: "Kusama",
2487
+ name: "Kusama Relay",
2467
2488
  info: "kusama",
2468
2489
  paraId: 0,
2469
2490
  providers: [
@@ -2514,7 +2535,7 @@ var Kusama = {
2514
2535
  ]
2515
2536
  };
2516
2537
  var Westend = {
2517
- name: "Westend",
2538
+ name: "Westend Relay",
2518
2539
  info: "westend",
2519
2540
  paraId: 0,
2520
2541
  providers: [
@@ -2541,7 +2562,7 @@ var Westend = {
2541
2562
  ]
2542
2563
  };
2543
2564
  var Paseo = {
2544
- name: "Paseo",
2565
+ name: "Paseo Relay",
2545
2566
  info: "paseo",
2546
2567
  paraId: 0,
2547
2568
  providers: [
@@ -3291,6 +3312,7 @@ var getAssetReserveChain = function getAssetReserveChain(chain, destChain, asset
3291
3312
  Here: null
3292
3313
  }
3293
3314
  })) {
3315
+ if (relaychain === 'Paseo') return ahChain;
3294
3316
  return CHAINS_DOT_RESERVE_AH.has(destChain) ? ahChain : relaychain;
3295
3317
  }
3296
3318
  return chain;
@@ -3750,7 +3772,7 @@ var determineAddress = function determineAddress(chain, address, senderAddress)
3750
3772
  };
3751
3773
  var getReverseTxFee = /*#__PURE__*/function () {
3752
3774
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref, currencyInput) {
3753
- var api, origin, destination, senderAddress, address, toAddress, fromAddress, tx, rawFee;
3775
+ var api, origin, destination, senderAddress, address, toAddress, fromAddress, _yield$Builder$from$t, tx, rawFee;
3754
3776
  return _regenerator().w(function (_context) {
3755
3777
  while (1) switch (_context.n) {
3756
3778
  case 0:
@@ -3760,7 +3782,8 @@ var getReverseTxFee = /*#__PURE__*/function () {
3760
3782
  _context.n = 1;
3761
3783
  return Builder(api).from(destination).to(origin).address(toAddress).senderAddress(fromAddress).currency(currencyInput)['buildInternal']();
3762
3784
  case 1:
3763
- tx = _context.v;
3785
+ _yield$Builder$from$t = _context.v;
3786
+ tx = _yield$Builder$from$t.tx;
3764
3787
  _context.n = 2;
3765
3788
  return api.calculateTransactionFee(tx, fromAddress);
3766
3789
  case 2:
@@ -3774,49 +3797,6 @@ var getReverseTxFee = /*#__PURE__*/function () {
3774
3797
  };
3775
3798
  }();
3776
3799
 
3777
- var AssetsPallet = /*#__PURE__*/function () {
3778
- function AssetsPallet() {
3779
- _classCallCheck(this, AssetsPallet);
3780
- }
3781
- return _createClass(AssetsPallet, [{
3782
- key: "mint",
3783
- value: function mint(address, asset, _balance, chain) {
3784
- assertHasId(asset);
3785
- var assetId = asset.assetId,
3786
- amount = asset.amount;
3787
- var id = chain === 'Astar' || chain === 'Shiden' || chain === 'Moonbeam' ? BigInt(assetId) : Number(assetId);
3788
- var addr = assets.isChainEvm(chain) ? address : {
3789
- Id: address
3790
- };
3791
- return Promise.resolve({
3792
- assetStatusTx: {
3793
- module: 'Assets',
3794
- method: 'force_asset_status',
3795
- parameters: {
3796
- id: id,
3797
- owner: addr,
3798
- issuer: addr,
3799
- admin: addr,
3800
- freezer: addr,
3801
- min_balance: 0n,
3802
- is_sufficient: true,
3803
- is_frozen: false
3804
- }
3805
- },
3806
- balanceTx: {
3807
- module: 'Assets',
3808
- method: 'mint',
3809
- parameters: {
3810
- id: id,
3811
- beneficiary: addr,
3812
- amount: amount
3813
- }
3814
- }
3815
- });
3816
- }
3817
- }]);
3818
- }();
3819
-
3820
3800
  // Inspired by Moonbeam XCM-SDK
3821
3801
  // https://github.com/moonbeam-foundation/xcm-sdk/blob/ab835c15bf41612604b1c858d956a9f07705ed65/packages/utils/src/format/asset.ts#L1
3822
3802
  var formatAssetIdToERC20 = function formatAssetIdToERC20(id) {
@@ -3897,7 +3877,7 @@ var getBalanceForeignPolkadotXcm = /*#__PURE__*/function () {
3897
3877
  assertHasLocation(asset);
3898
3878
  return _context.a(2, api.getBalanceForeignAssetsPallet(address, asset.location));
3899
3879
  case 3:
3900
- if (!(chain === 'AssetHubPolkadot')) {
3880
+ if (!chain.startsWith('AssetHub')) {
3901
3881
  _context.n = 5;
3902
3882
  break;
3903
3883
  }
@@ -3911,7 +3891,7 @@ var getBalanceForeignPolkadotXcm = /*#__PURE__*/function () {
3911
3891
  case 4:
3912
3892
  return _context.a(2, api.getBalanceForeignAssetsPallet(address, asset.location));
3913
3893
  case 5:
3914
- return _context.a(2, api.getBalanceForeignPolkadotXcm(address, asset.assetId));
3894
+ return _context.a(2, api.getBalanceForeignPolkadotXcm(chain, address, asset));
3915
3895
  }
3916
3896
  }, _callee);
3917
3897
  }));
@@ -4024,7 +4004,7 @@ var getBalanceForeignInternal = /*#__PURE__*/function () {
4024
4004
  }
4025
4005
  return _context.a(2, getBalanceForeignXTokens(api, chain, address, asset));
4026
4006
  case 3:
4027
- if (!(defaultPallet === 'PolkadotXcm')) {
4007
+ if (!(defaultPallet === 'PolkadotXcm' || defaultPallet === 'XTransfer')) {
4028
4008
  _context.n = 4;
4029
4009
  break;
4030
4010
  }
@@ -4239,77 +4219,6 @@ var getAssetBalance = /*#__PURE__*/function () {
4239
4219
  };
4240
4220
  }();
4241
4221
 
4242
- var getOriginFeeDetailsInternal = /*#__PURE__*/function () {
4243
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
4244
- var _getExistentialDeposi;
4245
- var api, account, accountDestination, ahAddress, currency, origin, destination, _ref$feeMarginPercent, feeMarginPercentage, tx, xcmFee, xcmFeeWithMargin, nativeBalance, existentialDeposit, sufficientForXCM;
4246
- return _regenerator().w(function (_context) {
4247
- while (1) switch (_context.n) {
4248
- case 0:
4249
- api = _ref.api, account = _ref.account, accountDestination = _ref.accountDestination, ahAddress = _ref.ahAddress, currency = _ref.currency, origin = _ref.origin, destination = _ref.destination, _ref$feeMarginPercent = _ref.feeMarginPercentage, feeMarginPercentage = _ref$feeMarginPercent === void 0 ? 10 : _ref$feeMarginPercent;
4250
- _context.n = 1;
4251
- return api.init(origin);
4252
- case 1:
4253
- _context.n = 2;
4254
- return Builder(api).from(origin).to(destination).currency(currency).address(accountDestination).senderAddress(account).ahAddress(ahAddress)['buildInternal']();
4255
- case 2:
4256
- tx = _context.v;
4257
- _context.n = 3;
4258
- return api.calculateTransactionFee(tx, account);
4259
- case 3:
4260
- xcmFee = _context.v;
4261
- xcmFeeWithMargin = xcmFee + xcmFee / BigInt(feeMarginPercentage);
4262
- _context.n = 4;
4263
- return getBalanceNativeInternal({
4264
- address: account,
4265
- chain: origin,
4266
- api: api
4267
- });
4268
- case 4:
4269
- nativeBalance = _context.v;
4270
- existentialDeposit = BigInt((_getExistentialDeposi = assets.getExistentialDeposit(origin)) !== null && _getExistentialDeposi !== void 0 ? _getExistentialDeposi : '0');
4271
- sufficientForXCM = nativeBalance - existentialDeposit - xcmFeeWithMargin > 0;
4272
- return _context.a(2, {
4273
- sufficientForXCM: sufficientForXCM,
4274
- xcmFee: xcmFee
4275
- });
4276
- }
4277
- }, _callee);
4278
- }));
4279
- return function getOriginFeeDetailsInternal(_x) {
4280
- return _ref2.apply(this, arguments);
4281
- };
4282
- }();
4283
- var getOriginFeeDetails = /*#__PURE__*/function () {
4284
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
4285
- var api;
4286
- return _regenerator().w(function (_context2) {
4287
- while (1) switch (_context2.p = _context2.n) {
4288
- case 0:
4289
- api = options.api;
4290
- api.setDisconnectAllowed(false);
4291
- _context2.p = 1;
4292
- _context2.n = 2;
4293
- return getOriginFeeDetailsInternal(options);
4294
- case 2:
4295
- return _context2.a(2, _context2.v);
4296
- case 3:
4297
- _context2.p = 3;
4298
- api.setDisconnectAllowed(true);
4299
- _context2.n = 4;
4300
- return api.disconnect();
4301
- case 4:
4302
- return _context2.f(3);
4303
- case 5:
4304
- return _context2.a(2);
4305
- }
4306
- }, _callee2, null, [[1,, 3, 5]]);
4307
- }));
4308
- return function getOriginFeeDetails(_x2) {
4309
- return _ref3.apply(this, arguments);
4310
- };
4311
- }();
4312
-
4313
4222
  var isSufficientOrigin = /*#__PURE__*/function () {
4314
4223
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(api, origin, destination, senderAddress, feeNative, currency, asset, feeAsset) {
4315
4224
  var edNative, balanceNative, isNativeAssetToOrigin, isNativeAssetToDest, isSufficientNative, balanceAsset, edAsset, isSufficientAsset;
@@ -4497,7 +4406,7 @@ var getDestXcmFee = /*#__PURE__*/function () {
4497
4406
  _context2.n = 5;
4498
4407
  break;
4499
4408
  }
4500
- throw _t2;
4409
+ return _context2.a(2, 0n);
4501
4410
  case 5:
4502
4411
  _context2.n = 6;
4503
4412
  return attempt(swapConfig.exchangeChain, swapConfig.currencyTo, swapConfig.amountOut);
@@ -4540,7 +4449,7 @@ var getDestXcmFee = /*#__PURE__*/function () {
4540
4449
  asset: asset,
4541
4450
  originFee: originFee,
4542
4451
  feeAsset: resolvedFeeAsset,
4543
- amount: currency.amount < 2n ? 2n : currency.amount
4452
+ amount: currency.amount < MIN_AMOUNT ? MIN_AMOUNT : currency.amount
4544
4453
  });
4545
4454
  case 4:
4546
4455
  dryRunResult = _context3.v;
@@ -5932,20 +5841,15 @@ var handleToAhTeleport = /*#__PURE__*/function () {
5932
5841
  while (1) switch (_context.n) {
5933
5842
  case 0:
5934
5843
  api = input.api, destination = input.destination, address = input.address, senderAddress = input.senderAddress, asset = input.assetInfo, currency = input.currency;
5935
- if (!sdkCommon.isTLocation(destination)) {
5936
- _context.n = 1;
5937
- break;
5938
- }
5939
- throw new InvalidParameterError('Location destination is not supported for this scenario');
5940
- case 1:
5844
+ assertToIsString(destination, 'Location destination is not supported for AH teleport.');
5941
5845
  if (!sdkCommon.isTLocation(address)) {
5942
- _context.n = 2;
5846
+ _context.n = 1;
5943
5847
  break;
5944
5848
  }
5945
5849
  throw new InvalidParameterError('Location address is not supported for this scenario');
5946
- case 2:
5850
+ case 1:
5947
5851
  assertSenderAddress(senderAddress);
5948
- _context.n = 3;
5852
+ _context.n = 2;
5949
5853
  return dryRunInternal({
5950
5854
  api: api,
5951
5855
  tx: defaultTx,
@@ -5955,19 +5859,19 @@ var handleToAhTeleport = /*#__PURE__*/function () {
5955
5859
  address: address,
5956
5860
  currency: currency
5957
5861
  });
5958
- case 3:
5862
+ case 2:
5959
5863
  dryRunResult = _context.v;
5960
5864
  if (!((_dryRunResult$destina = dryRunResult.destination) !== null && _dryRunResult$destina !== void 0 && _dryRunResult$destina.success)) {
5961
- _context.n = 4;
5865
+ _context.n = 3;
5962
5866
  break;
5963
5867
  }
5964
5868
  return _context.a(2, defaultTx);
5965
- case 4:
5869
+ case 3:
5966
5870
  // If the default tx dry run failed, we need to create execute transaction
5967
5871
  dummyTx = createExecuteExchangeXcm(input, origin, MAX_WEIGHT,
5968
5872
  // Enter dummy fee values just to get the dry run to pass
5969
5873
  asset.amount, asset.amount / 2n);
5970
- _context.n = 5;
5874
+ _context.n = 4;
5971
5875
  return getXcmFeeInternal({
5972
5876
  api: api,
5973
5877
  tx: dummyTx,
@@ -5979,7 +5883,7 @@ var handleToAhTeleport = /*#__PURE__*/function () {
5979
5883
  disableFallback: false,
5980
5884
  useRootOrigin: true
5981
5885
  });
5982
- case 5:
5886
+ case 4:
5983
5887
  feeResult = _context.v;
5984
5888
  originExecutionFee = padFeeBy(feeResult.origin.fee, 20); // Pad by 20%
5985
5889
  destinationExecutionFee = padFeeBy(
@@ -6154,39 +6058,161 @@ var transferXTokens = function transferXTokens(input, currencySelection) {
6154
6058
  return api.callTxMethod(call);
6155
6059
  };
6156
6060
 
6157
- var supportsXTokens = function supportsXTokens(obj) {
6158
- return _typeof(obj) === 'object' && obj !== null && 'transferXTokens' in obj;
6159
- };
6160
- var supportsXTransfer = function supportsXTransfer(obj) {
6161
- return _typeof(obj) === 'object' && obj !== null && 'transferXTransfer' in obj;
6162
- };
6163
- var supportsPolkadotXCM = function supportsPolkadotXCM(obj) {
6164
- return _typeof(obj) === 'object' && obj !== null && 'transferPolkadotXCM' in obj;
6165
- };
6166
- var Parachain = /*#__PURE__*/function () {
6167
- function Parachain(chain, info, ecosystem, version) {
6168
- _classCallCheck(this, Parachain);
6169
- this._info = info;
6170
- this._ecosystem = ecosystem;
6171
- this._chain = chain;
6172
- this._version = version;
6061
+ var BaseAssetsPallet = /*#__PURE__*/_createClass(function BaseAssetsPallet(palletName) {
6062
+ _classCallCheck(this, BaseAssetsPallet);
6063
+ this.palletName = palletName;
6064
+ });
6065
+
6066
+ var AssetsPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
6067
+ function AssetsPallet() {
6068
+ _classCallCheck(this, AssetsPallet);
6069
+ return _callSuper(this, AssetsPallet, arguments);
6173
6070
  }
6174
- return _createClass(Parachain, [{
6175
- key: "info",
6176
- get: function get() {
6177
- return this._info;
6178
- }
6179
- }, {
6180
- key: "ecosystem",
6181
- get: function get() {
6182
- return this._ecosystem;
6183
- }
6184
- }, {
6185
- key: "chain",
6186
- get: function get() {
6187
- return this._chain;
6071
+ _inherits(AssetsPallet, _BaseAssetsPallet);
6072
+ return _createClass(AssetsPallet, [{
6073
+ key: "mint",
6074
+ value: function mint(address, asset, _balance, chain) {
6075
+ assertHasId(asset);
6076
+ var assetId = asset.assetId,
6077
+ amount = asset.amount;
6078
+ var id = chain === 'Astar' || chain === 'Shiden' || chain === 'Moonbeam' ? BigInt(assetId) : Number(assetId);
6079
+ var addr = assets.isChainEvm(chain) ? address : {
6080
+ Id: address
6081
+ };
6082
+ return Promise.resolve({
6083
+ assetStatusTx: {
6084
+ module: this.palletName,
6085
+ method: 'force_asset_status',
6086
+ parameters: {
6087
+ id: id,
6088
+ owner: addr,
6089
+ issuer: addr,
6090
+ admin: addr,
6091
+ freezer: addr,
6092
+ min_balance: 0n,
6093
+ is_sufficient: true,
6094
+ is_frozen: false
6095
+ }
6096
+ },
6097
+ balanceTx: {
6098
+ module: this.palletName,
6099
+ method: 'mint',
6100
+ parameters: {
6101
+ id: id,
6102
+ beneficiary: addr,
6103
+ amount: amount
6104
+ }
6105
+ }
6106
+ });
6188
6107
  }
6189
- }, {
6108
+ }]);
6109
+ }(BaseAssetsPallet);
6110
+
6111
+ var getOriginFeeDetailsInternal = /*#__PURE__*/function () {
6112
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
6113
+ var _getExistentialDeposi;
6114
+ var api, account, accountDestination, ahAddress, currency, origin, destination, _ref$feeMarginPercent, feeMarginPercentage, _yield$Builder$from$t, tx, xcmFee, xcmFeeWithMargin, nativeBalance, existentialDeposit, sufficientForXCM;
6115
+ return _regenerator().w(function (_context) {
6116
+ while (1) switch (_context.n) {
6117
+ case 0:
6118
+ api = _ref.api, account = _ref.account, accountDestination = _ref.accountDestination, ahAddress = _ref.ahAddress, currency = _ref.currency, origin = _ref.origin, destination = _ref.destination, _ref$feeMarginPercent = _ref.feeMarginPercentage, feeMarginPercentage = _ref$feeMarginPercent === void 0 ? 10 : _ref$feeMarginPercent;
6119
+ _context.n = 1;
6120
+ return api.init(origin);
6121
+ case 1:
6122
+ _context.n = 2;
6123
+ return Builder(api).from(origin).to(destination).currency(currency).address(accountDestination).senderAddress(account).ahAddress(ahAddress)['buildInternal']();
6124
+ case 2:
6125
+ _yield$Builder$from$t = _context.v;
6126
+ tx = _yield$Builder$from$t.tx;
6127
+ _context.n = 3;
6128
+ return api.calculateTransactionFee(tx, account);
6129
+ case 3:
6130
+ xcmFee = _context.v;
6131
+ xcmFeeWithMargin = xcmFee + xcmFee / BigInt(feeMarginPercentage);
6132
+ _context.n = 4;
6133
+ return getBalanceNativeInternal({
6134
+ address: account,
6135
+ chain: origin,
6136
+ api: api
6137
+ });
6138
+ case 4:
6139
+ nativeBalance = _context.v;
6140
+ existentialDeposit = BigInt((_getExistentialDeposi = assets.getExistentialDeposit(origin)) !== null && _getExistentialDeposi !== void 0 ? _getExistentialDeposi : '0');
6141
+ sufficientForXCM = nativeBalance - existentialDeposit - xcmFeeWithMargin > 0;
6142
+ return _context.a(2, {
6143
+ sufficientForXCM: sufficientForXCM,
6144
+ xcmFee: xcmFee
6145
+ });
6146
+ }
6147
+ }, _callee);
6148
+ }));
6149
+ return function getOriginFeeDetailsInternal(_x) {
6150
+ return _ref2.apply(this, arguments);
6151
+ };
6152
+ }();
6153
+ var getOriginFeeDetails = /*#__PURE__*/function () {
6154
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
6155
+ var api;
6156
+ return _regenerator().w(function (_context2) {
6157
+ while (1) switch (_context2.p = _context2.n) {
6158
+ case 0:
6159
+ api = options.api;
6160
+ api.setDisconnectAllowed(false);
6161
+ _context2.p = 1;
6162
+ _context2.n = 2;
6163
+ return getOriginFeeDetailsInternal(options);
6164
+ case 2:
6165
+ return _context2.a(2, _context2.v);
6166
+ case 3:
6167
+ _context2.p = 3;
6168
+ api.setDisconnectAllowed(true);
6169
+ _context2.n = 4;
6170
+ return api.disconnect();
6171
+ case 4:
6172
+ return _context2.f(3);
6173
+ case 5:
6174
+ return _context2.a(2);
6175
+ }
6176
+ }, _callee2, null, [[1,, 3, 5]]);
6177
+ }));
6178
+ return function getOriginFeeDetails(_x2) {
6179
+ return _ref3.apply(this, arguments);
6180
+ };
6181
+ }();
6182
+
6183
+ var supportsXTokens = function supportsXTokens(obj) {
6184
+ return _typeof(obj) === 'object' && obj !== null && 'transferXTokens' in obj;
6185
+ };
6186
+ var supportsXTransfer = function supportsXTransfer(obj) {
6187
+ return _typeof(obj) === 'object' && obj !== null && 'transferXTransfer' in obj;
6188
+ };
6189
+ var supportsPolkadotXCM = function supportsPolkadotXCM(obj) {
6190
+ return _typeof(obj) === 'object' && obj !== null && 'transferPolkadotXCM' in obj;
6191
+ };
6192
+ var Parachain = /*#__PURE__*/function () {
6193
+ function Parachain(chain, info, ecosystem, version) {
6194
+ _classCallCheck(this, Parachain);
6195
+ this._info = info;
6196
+ this._ecosystem = ecosystem;
6197
+ this._chain = chain;
6198
+ this._version = version;
6199
+ }
6200
+ return _createClass(Parachain, [{
6201
+ key: "info",
6202
+ get: function get() {
6203
+ return this._info;
6204
+ }
6205
+ }, {
6206
+ key: "ecosystem",
6207
+ get: function get() {
6208
+ return this._ecosystem;
6209
+ }
6210
+ }, {
6211
+ key: "chain",
6212
+ get: function get() {
6213
+ return this._chain;
6214
+ }
6215
+ }, {
6190
6216
  key: "version",
6191
6217
  get: function get() {
6192
6218
  return this._version;
@@ -6202,7 +6228,7 @@ var Parachain = /*#__PURE__*/function () {
6202
6228
  key: "transfer",
6203
6229
  value: function () {
6204
6230
  var _transfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(sendOptions) {
6205
- var api, asset, currency, feeAsset, feeCurrency, address, destination, paraIdTo, overriddenAsset, version, senderAddress, ahAddress, pallet, method, scenario, paraId, destChain, isLocalTransfer, isRelayAsset, supportsTypeThen, useTypeAndThen, isBifrostOrigin, isJamtonOrigin, isAssetHubDest, useMultiAssets, input, options, shouldUseTeleport, isAhToOtherPara, isOtherParaToAh, isAllowedAhTransfer, isAHPOrigin, isAHPDest, isExternalAsset, isEthDest, isExternalAssetViaAh, isExternalAssetToAh, call;
6231
+ var api, asset, currency, feeAsset, feeCurrency, address, destination, paraIdTo, overriddenAsset, version, senderAddress, ahAddress, pallet, method, scenario, paraId, destChain, isLocalTransfer, isRelayAsset, supportsTypeThen, useTypeAndThen, isBifrostOrigin, isJamtonOrigin, isAssetHubDest, useMultiAssets, input, options, shouldUseTeleport, isAhToOtherPara, isOtherParaToAh, isAllowedAhTransfer, isAHPOrigin, isAHPDest, isExternalAsset, isEthDest, isExternalAssetViaAh, isExternalAssetToAh, call, _t;
6206
6232
  return _regenerator().w(function (_context) {
6207
6233
  while (1) switch (_context.n) {
6208
6234
  case 0:
@@ -6225,7 +6251,7 @@ var Parachain = /*#__PURE__*/function () {
6225
6251
  case 2:
6226
6252
  this.throwIfTempDisabled(sendOptions, destChain);
6227
6253
  this.throwIfCantReceive(destChain);
6228
- isRelayAsset = sdkCommon.deepEqual(asset.location, RELAY_LOCATION);
6254
+ isRelayAsset = sdkCommon.deepEqual(asset.location, RELAY_LOCATION) && assets.isSymbolMatch(assets.getRelayChainSymbol(this.chain), asset.symbol);
6229
6255
  _context.n = 3;
6230
6256
  return api.hasMethod('PolkadotXcm', 'transfer_assets_using_type_and_then');
6231
6257
  case 3:
@@ -6236,7 +6262,7 @@ var Parachain = /*#__PURE__*/function () {
6236
6262
  }
6237
6263
  throw new InvalidParameterError('Relaychain assets can only be transferred using the type-and-then method which is not supported by this chain');
6238
6264
  case 4:
6239
- useTypeAndThen = isRelayAsset && supportsTypeThen && destChain && (!sdkCommon.isTrustedChain(this.chain) || !sdkCommon.isTrustedChain(destChain));
6265
+ useTypeAndThen = isRelayAsset && supportsTypeThen && destChain && !feeAsset && (!sdkCommon.isTrustedChain(this.chain) || !sdkCommon.isTrustedChain(destChain));
6240
6266
  if (!(supportsXTokens(this) && this.canUseXTokens(sendOptions) && !useTypeAndThen)) {
6241
6267
  _context.n = 6;
6242
6268
  break;
@@ -6283,7 +6309,7 @@ var Parachain = /*#__PURE__*/function () {
6283
6309
  }));
6284
6310
  case 7:
6285
6311
  if (!(supportsPolkadotXCM(this) || useTypeAndThen)) {
6286
- _context.n = 13;
6312
+ _context.n = 16;
6287
6313
  break;
6288
6314
  }
6289
6315
  options = {
@@ -6336,7 +6362,7 @@ var Parachain = /*#__PURE__*/function () {
6336
6362
  isExternalAssetViaAh = isExternalAsset && !isAHPOrigin && !isAHPDest && !isEthDest && !feeAsset; // External asset - Any origin to AHP - DestinationReserve - one DepositAsset instruction
6337
6363
  isExternalAssetToAh = isExternalAsset && isAHPDest && !isAHPOrigin && !isEthDest && !feeAsset;
6338
6364
  if (!(isExternalAssetViaAh || isExternalAssetToAh || useTypeAndThen)) {
6339
- _context.n = 12;
6365
+ _context.n = 15;
6340
6366
  break;
6341
6367
  }
6342
6368
  if (!(useTypeAndThen && supportsPolkadotXCM(this))) {
@@ -6346,20 +6372,33 @@ var Parachain = /*#__PURE__*/function () {
6346
6372
  _context.n = 10;
6347
6373
  return this.transferPolkadotXCM(options);
6348
6374
  case 10:
6375
+ if (!isRelayAsset) {
6376
+ _context.n = 12;
6377
+ break;
6378
+ }
6349
6379
  _context.n = 11;
6350
- return createTypeAndThenCall(this.chain, options);
6380
+ return createTypeThenAutoReserve(this.chain, options);
6351
6381
  case 11:
6352
- call = _context.v;
6353
- return _context.a(2, api.callTxMethod(call));
6382
+ _t = _context.v;
6383
+ _context.n = 14;
6384
+ break;
6354
6385
  case 12:
6386
+ _context.n = 13;
6387
+ return createTypeAndThenCall(this.chain, options);
6388
+ case 13:
6389
+ _t = _context.v;
6390
+ case 14:
6391
+ call = _t;
6392
+ return _context.a(2, api.callTxMethod(call));
6393
+ case 15:
6355
6394
  if (!supportsPolkadotXCM(this)) {
6356
- _context.n = 13;
6395
+ _context.n = 16;
6357
6396
  break;
6358
6397
  }
6359
6398
  return _context.a(2, this.transferPolkadotXCM(options));
6360
- case 13:
6399
+ case 16:
6361
6400
  throw new NoXCMSupportImplementedError(this._chain);
6362
- case 14:
6401
+ case 17:
6363
6402
  return _context.a(2);
6364
6403
  }
6365
6404
  }, _callee, this);
@@ -6386,7 +6425,8 @@ var Parachain = /*#__PURE__*/function () {
6386
6425
  if (isSendingDisabled) {
6387
6426
  throw new InvalidParameterError("Sending from ".concat(this.chain, " is temporarily disabled"));
6388
6427
  }
6389
- var isReceivingDisabled = destChain && !sdkCommon.isRelayChain(destChain) && !sdkCommon.isExternalChain(destChain) && getChain(destChain).isReceivingTempDisabled(options);
6428
+ var scenario = resolveScenario(this.chain, options.to);
6429
+ var isReceivingDisabled = destChain && !sdkCommon.isRelayChain(destChain) && !sdkCommon.isExternalChain(destChain) && getChain(destChain).isReceivingTempDisabled(scenario);
6390
6430
  if (isReceivingDisabled) {
6391
6431
  throw new InvalidParameterError("Receiving on ".concat(destChain, " is temporarily disabled"));
6392
6432
  }
@@ -6398,7 +6438,7 @@ var Parachain = /*#__PURE__*/function () {
6398
6438
  }
6399
6439
  }, {
6400
6440
  key: "isReceivingTempDisabled",
6401
- value: function isReceivingTempDisabled(_options) {
6441
+ value: function isReceivingTempDisabled(_scenario) {
6402
6442
  return false;
6403
6443
  }
6404
6444
  }, {
@@ -6434,39 +6474,46 @@ var Parachain = /*#__PURE__*/function () {
6434
6474
  key: "transferRelayToPara",
6435
6475
  value: function () {
6436
6476
  var _transferRelayToPara = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
6437
- var api, version, pallet, assetInfo, address, destination, paraIdTo, methodOverride, _this$getRelayToParaO, method, includeFee, customMethod, paraId, destChain, scenario;
6477
+ var api, version, pallet, assetInfo, address, senderAddress, destination, paraIdTo, methodOverride, _this$getRelayToParaO, method, includeFee, customMethod, paraId, destChain, scenario;
6438
6478
  return _regenerator().w(function (_context2) {
6439
6479
  while (1) switch (_context2.n) {
6440
6480
  case 0:
6441
- api = options.api, version = options.version, pallet = options.pallet, assetInfo = options.assetInfo, address = options.address, destination = options.destination, paraIdTo = options.paraIdTo, methodOverride = options.method;
6481
+ api = options.api, version = options.version, pallet = options.pallet, assetInfo = options.assetInfo, address = options.address, senderAddress = options.senderAddress, destination = options.destination, paraIdTo = options.paraIdTo, methodOverride = options.method;
6442
6482
  _this$getRelayToParaO = this.getRelayToParaOverrides(), method = _this$getRelayToParaO.method, includeFee = _this$getRelayToParaO.includeFee;
6483
+ if (!this.isReceivingTempDisabled('RelayToPara')) {
6484
+ _context2.n = 1;
6485
+ break;
6486
+ }
6487
+ throw new InvalidParameterError("Receiving on ".concat(this.chain, " is temporarily disabled"));
6488
+ case 1:
6443
6489
  customMethod = methodOverride !== null && methodOverride !== void 0 ? methodOverride : method;
6444
6490
  if (!(customMethod === 'transfer_assets_using_type_and_then')) {
6445
- _context2.n = 2;
6491
+ _context2.n = 3;
6446
6492
  break;
6447
6493
  }
6448
6494
  paraId = resolveParaId(paraIdTo, destination);
6449
6495
  destChain = resolveDestChain(this.chain, paraId);
6450
6496
  scenario = 'RelayToPara';
6451
6497
  if (destChain) {
6452
- _context2.n = 1;
6498
+ _context2.n = 2;
6453
6499
  break;
6454
6500
  }
6455
6501
  throw new InvalidParameterError('Cannot override destination when using type and then transfer.');
6456
- case 1:
6457
- return _context2.a(2, createTypeAndThenCall(getRelayChainOf(destChain), _objectSpread2(_objectSpread2({}, options), {}, {
6502
+ case 2:
6503
+ return _context2.a(2, createTypeThenAutoReserve(getRelayChainOf(destChain), _objectSpread2(_objectSpread2({}, options), {}, {
6458
6504
  beneficiaryLocation: createBeneficiaryLocation({
6459
6505
  api: api,
6460
6506
  address: address,
6461
6507
  version: version
6462
6508
  }),
6509
+ senderAddress: senderAddress,
6463
6510
  asset: this.createCurrencySpec(assetInfo.amount, scenario, version, assetInfo, false),
6464
6511
  destLocation: createDestination(version, this.chain, destination, paraId),
6465
6512
  scenario: scenario,
6466
6513
  destChain: destChain,
6467
6514
  paraIdTo: paraId
6468
6515
  })));
6469
- case 2:
6516
+ case 3:
6470
6517
  return _context2.a(2, {
6471
6518
  module: pallet !== null && pallet !== void 0 ? pallet : 'XcmPallet',
6472
6519
  method: customMethod,
@@ -6499,54 +6546,120 @@ var Parachain = /*#__PURE__*/function () {
6499
6546
  }
6500
6547
  }, {
6501
6548
  key: "transferLocal",
6502
- value: function transferLocal(options) {
6503
- var asset = options.assetInfo,
6504
- address = options.address;
6505
- if (sdkCommon.isTLocation(address)) {
6506
- throw new InvalidAddressError('Location address is not supported for local transfers');
6507
- }
6508
- var validatedOptions = _objectSpread2(_objectSpread2({}, options), {}, {
6509
- address: address
6510
- });
6511
- var isNativeAsset = asset.symbol === this.getNativeAssetSymbol() && !assets.isForeignAsset(asset);
6512
- if (isNativeAsset) {
6513
- return this.transferLocalNativeAsset(validatedOptions);
6514
- } else {
6515
- return this.transferLocalNonNativeAsset(validatedOptions);
6549
+ value: function () {
6550
+ var _transferLocal = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(options) {
6551
+ var api, asset, address, senderAddress, currency, isAmountAll, validatedOptions, isNativeAsset, balance, localOptions;
6552
+ return _regenerator().w(function (_context3) {
6553
+ while (1) switch (_context3.n) {
6554
+ case 0:
6555
+ api = options.api, asset = options.assetInfo, address = options.address, senderAddress = options.senderAddress, currency = options.currency, isAmountAll = options.isAmountAll;
6556
+ if (!sdkCommon.isTLocation(address)) {
6557
+ _context3.n = 1;
6558
+ break;
6559
+ }
6560
+ throw new InvalidAddressError('Location address is not supported for local transfers');
6561
+ case 1:
6562
+ validatedOptions = _objectSpread2(_objectSpread2({}, options), {}, {
6563
+ address: address
6564
+ });
6565
+ isNativeAsset = asset.symbol === this.getNativeAssetSymbol() && !assets.isForeignAsset(asset);
6566
+ if (!isAmountAll) {
6567
+ _context3.n = 3;
6568
+ break;
6569
+ }
6570
+ assertSenderAddress(senderAddress);
6571
+ _context3.n = 2;
6572
+ return getAssetBalanceInternal({
6573
+ api: api,
6574
+ chain: this.chain,
6575
+ address: senderAddress,
6576
+ currency: currency
6577
+ });
6578
+ case 2:
6579
+ balance = _context3.v;
6580
+ _context3.n = 4;
6581
+ break;
6582
+ case 3:
6583
+ balance = MIN_AMOUNT;
6584
+ case 4:
6585
+ localOptions = _objectSpread2(_objectSpread2({}, validatedOptions), {}, {
6586
+ balance: balance
6587
+ });
6588
+ if (!isNativeAsset) {
6589
+ _context3.n = 5;
6590
+ break;
6591
+ }
6592
+ return _context3.a(2, this.transferLocalNativeAsset(localOptions));
6593
+ case 5:
6594
+ return _context3.a(2, this.transferLocalNonNativeAsset(localOptions));
6595
+ case 6:
6596
+ return _context3.a(2);
6597
+ }
6598
+ }, _callee3, this);
6599
+ }));
6600
+ function transferLocal(_x3) {
6601
+ return _transferLocal.apply(this, arguments);
6516
6602
  }
6517
- }
6603
+ return transferLocal;
6604
+ }()
6518
6605
  }, {
6519
6606
  key: "transferLocalNativeAsset",
6520
6607
  value: function transferLocalNativeAsset(options) {
6521
6608
  var api = options.api,
6522
6609
  asset = options.assetInfo,
6523
- address = options.address;
6524
- return api.callTxMethod({
6610
+ address = options.address,
6611
+ isAmountAll = options.isAmountAll;
6612
+ var dest = assets.isChainEvm(this.chain) ? address : {
6613
+ Id: address
6614
+ };
6615
+ if (isAmountAll) {
6616
+ return Promise.resolve(api.callTxMethod({
6617
+ module: 'Balances',
6618
+ method: 'transfer_all',
6619
+ parameters: {
6620
+ dest: dest,
6621
+ keep_alive: false
6622
+ }
6623
+ }));
6624
+ }
6625
+ return Promise.resolve(api.callTxMethod({
6525
6626
  module: 'Balances',
6526
6627
  method: 'transfer_keep_alive',
6527
6628
  parameters: {
6528
- dest: assets.isChainEvm(this.chain) ? address : {
6529
- Id: address
6530
- },
6629
+ dest: dest,
6531
6630
  value: asset.amount
6532
6631
  }
6533
- });
6632
+ }));
6534
6633
  }
6535
6634
  }, {
6536
6635
  key: "transferLocalNonNativeAsset",
6537
6636
  value: function transferLocalNonNativeAsset(options) {
6538
6637
  var api = options.api,
6539
6638
  asset = options.assetInfo,
6540
- address = options.address;
6639
+ address = options.address,
6640
+ isAmountAll = options.isAmountAll;
6541
6641
  assertHasId(asset);
6642
+ var dest = {
6643
+ Id: address
6644
+ };
6645
+ var currencyId = BigInt(asset.assetId);
6646
+ if (isAmountAll) {
6647
+ return api.callTxMethod({
6648
+ module: 'Tokens',
6649
+ method: 'transfer_all',
6650
+ parameters: {
6651
+ dest: dest,
6652
+ currency_id: currencyId,
6653
+ keep_alive: false
6654
+ }
6655
+ });
6656
+ }
6542
6657
  return api.callTxMethod({
6543
6658
  module: 'Tokens',
6544
6659
  method: 'transfer',
6545
6660
  parameters: {
6546
- dest: {
6547
- Id: address
6548
- },
6549
- currency_id: BigInt(asset.assetId),
6661
+ dest: dest,
6662
+ currency_id: currencyId,
6550
6663
  amount: asset.amount
6551
6664
  }
6552
6665
  });
@@ -6554,7 +6667,7 @@ var Parachain = /*#__PURE__*/function () {
6554
6667
  }, {
6555
6668
  key: "transferToEthereum",
6556
6669
  value: function () {
6557
- var _transferToEthereum = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(input) {
6670
+ var _transferToEthereum = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(input) {
6558
6671
  var _feeAsset$location;
6559
6672
  var useOnlyDepositInstruction,
6560
6673
  api,
@@ -6577,18 +6690,18 @@ var Parachain = /*#__PURE__*/function () {
6577
6690
  customXcmOnDest,
6578
6691
  messageId,
6579
6692
  call,
6580
- _args3 = arguments;
6581
- return _regenerator().w(function (_context3) {
6582
- while (1) switch (_context3.n) {
6693
+ _args4 = arguments;
6694
+ return _regenerator().w(function (_context4) {
6695
+ while (1) switch (_context4.n) {
6583
6696
  case 0:
6584
- useOnlyDepositInstruction = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : false;
6697
+ useOnlyDepositInstruction = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false;
6585
6698
  api = input.api, asset = input.assetInfo, version = input.version, destination = input.destination, address = input.address, senderAddress = input.senderAddress, feeAsset = input.feeAssetInfo;
6586
- _context3.n = 1;
6699
+ _context4.n = 1;
6587
6700
  return getBridgeStatus(api.clone());
6588
6701
  case 1:
6589
- bridgeStatus = _context3.v;
6702
+ bridgeStatus = _context4.v;
6590
6703
  if (!(bridgeStatus !== 'Normal')) {
6591
- _context3.n = 2;
6704
+ _context4.n = 2;
6592
6705
  break;
6593
6706
  }
6594
6707
  throw new BridgeHaltedError();
@@ -6597,14 +6710,14 @@ var Parachain = /*#__PURE__*/function () {
6597
6710
  assertAddressIsString(address);
6598
6711
  assertSenderAddress(senderAddress);
6599
6712
  ethAsset = createAsset(version, asset.amount, asset.location);
6600
- _context3.n = 3;
6713
+ _context4.n = 3;
6601
6714
  return api.createApiForChain('AssetHubPolkadot');
6602
6715
  case 3:
6603
- ahApi = _context3.v;
6604
- _context3.n = 4;
6716
+ ahApi = _context4.v;
6717
+ _context4.n = 4;
6605
6718
  return getParaEthTransferFees(ahApi);
6606
6719
  case 4:
6607
- _yield$getParaEthTran = _context3.v;
6720
+ _yield$getParaEthTran = _context4.v;
6608
6721
  _yield$getParaEthTran2 = _slicedToArray(_yield$getParaEthTran, 2);
6609
6722
  bridgeFee = _yield$getParaEthTran2[0];
6610
6723
  executionFee = _yield$getParaEthTran2[1];
@@ -6612,13 +6725,13 @@ var Parachain = /*#__PURE__*/function () {
6612
6725
  fee = useOnlyDepositInstruction ? PARA_TO_PARA_FEE_DOT : bridgeFee + executionFee;
6613
6726
  ethAssetInfo = assets.findAssetInfoByLoc(assets.getOtherAssets('Ethereum'), asset.location);
6614
6727
  if (ethAssetInfo) {
6615
- _context3.n = 5;
6728
+ _context4.n = 5;
6616
6729
  break;
6617
6730
  }
6618
6731
  throw new assets.InvalidCurrencyError("Could not obtain Ethereum asset address for ".concat(JSON.stringify(asset, sdkCommon.replaceBigInt)));
6619
6732
  case 5:
6620
6733
  if (!useOnlyDepositInstruction) {
6621
- _context3.n = 6;
6734
+ _context4.n = 6;
6622
6735
  break;
6623
6736
  }
6624
6737
  customXcmOnDest = addXcmVersionHeader([{
@@ -6635,14 +6748,14 @@ var Parachain = /*#__PURE__*/function () {
6635
6748
  })
6636
6749
  }
6637
6750
  }], version);
6638
- _context3.n = 8;
6751
+ _context4.n = 8;
6639
6752
  break;
6640
6753
  case 6:
6641
6754
  assertHasId(ethAssetInfo);
6642
- _context3.n = 7;
6755
+ _context4.n = 7;
6643
6756
  return generateMessageId(api, senderAddress, getParaId(this.chain), ethAssetInfo.assetId, address, asset.amount);
6644
6757
  case 7:
6645
- messageId = _context3.v;
6758
+ messageId = _context4.v;
6646
6759
  customXcmOnDest = createCustomXcmOnDest(input, this.chain, messageId);
6647
6760
  case 8:
6648
6761
  call = {
@@ -6658,11 +6771,11 @@ var Parachain = /*#__PURE__*/function () {
6658
6771
  weight_limit: 'Unlimited'
6659
6772
  }
6660
6773
  };
6661
- return _context3.a(2, api.callTxMethod(call));
6774
+ return _context4.a(2, api.callTxMethod(call));
6662
6775
  }
6663
- }, _callee3, this);
6776
+ }, _callee4, this);
6664
6777
  }));
6665
- function transferToEthereum(_x3) {
6778
+ function transferToEthereum(_x4) {
6666
6779
  return _transferToEthereum.apply(this, arguments);
6667
6780
  }
6668
6781
  return transferToEthereum;
@@ -6672,8 +6785,12 @@ var Parachain = /*#__PURE__*/function () {
6672
6785
 
6673
6786
  var Acala = /*#__PURE__*/function (_Parachain) {
6674
6787
  function Acala() {
6788
+ var chain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Acala';
6789
+ var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'acala';
6790
+ var ecosystem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Polkadot';
6791
+ var version = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : sdkCommon.Version.V4;
6675
6792
  _classCallCheck(this, Acala);
6676
- return _callSuper(this, Acala, ['Acala', 'acala', 'Polkadot', sdkCommon.Version.V4]);
6793
+ return _callSuper(this, Acala, [chain, info, ecosystem, version]);
6677
6794
  }
6678
6795
  _inherits(Acala, _Parachain);
6679
6796
  return _createClass(Acala, [{
@@ -6695,30 +6812,61 @@ var Acala = /*#__PURE__*/function (_Parachain) {
6695
6812
  }
6696
6813
  }, {
6697
6814
  key: "transferLocalNativeAsset",
6698
- value: function transferLocalNativeAsset(options) {
6699
- var api = options.api,
6700
- asset = options.assetInfo,
6701
- address = options.address;
6702
- return api.callTxMethod({
6703
- module: 'Currencies',
6704
- method: 'transfer_native_currency',
6705
- parameters: {
6706
- dest: {
6707
- Id: address
6708
- },
6709
- amount: asset.amount
6710
- }
6711
- });
6712
- }
6815
+ value: function () {
6816
+ var _transferLocalNativeAsset = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options) {
6817
+ var api, asset, address, balance, senderAddress, isAmountAll, createTx, amount, fee;
6818
+ return _regenerator().w(function (_context) {
6819
+ while (1) switch (_context.n) {
6820
+ case 0:
6821
+ api = options.api, asset = options.assetInfo, address = options.address, balance = options.balance, senderAddress = options.senderAddress, isAmountAll = options.isAmountAll;
6822
+ createTx = function createTx(amount) {
6823
+ return api.callTxMethod({
6824
+ module: 'Currencies',
6825
+ method: 'transfer_native_currency',
6826
+ parameters: {
6827
+ dest: {
6828
+ Id: address
6829
+ },
6830
+ amount: amount
6831
+ }
6832
+ });
6833
+ };
6834
+ if (!isAmountAll) {
6835
+ _context.n = 2;
6836
+ break;
6837
+ }
6838
+ assertSenderAddress(senderAddress);
6839
+ _context.n = 1;
6840
+ return api.calculateTransactionFee(createTx(MIN_AMOUNT), senderAddress);
6841
+ case 1:
6842
+ fee = _context.v;
6843
+ amount = balance - fee;
6844
+ _context.n = 3;
6845
+ break;
6846
+ case 2:
6847
+ amount = asset.amount;
6848
+ case 3:
6849
+ return _context.a(2, createTx(amount));
6850
+ }
6851
+ }, _callee);
6852
+ }));
6853
+ function transferLocalNativeAsset(_x) {
6854
+ return _transferLocalNativeAsset.apply(this, arguments);
6855
+ }
6856
+ return transferLocalNativeAsset;
6857
+ }()
6713
6858
  }, {
6714
6859
  key: "transferLocalNonNativeAsset",
6715
6860
  value: function transferLocalNonNativeAsset(options) {
6716
6861
  var api = options.api,
6717
6862
  asset = options.assetInfo,
6718
- address = options.address;
6863
+ address = options.address,
6864
+ balance = options.balance,
6865
+ isAmountAll = options.isAmountAll;
6719
6866
  if (asset.symbol.toLowerCase() === 'lcdot') {
6720
6867
  throw new assets.InvalidCurrencyError('LcDOT local transfers are not supported');
6721
6868
  }
6869
+ var amount = isAmountAll ? balance : asset.amount;
6722
6870
  return api.callTxMethod({
6723
6871
  module: 'Currencies',
6724
6872
  method: 'transfer',
@@ -6727,7 +6875,7 @@ var Acala = /*#__PURE__*/function (_Parachain) {
6727
6875
  Id: address
6728
6876
  },
6729
6877
  currency_id: this.getCurrencySelection(asset),
6730
- amount: asset.amount
6878
+ amount: amount
6731
6879
  }
6732
6880
  });
6733
6881
  }
@@ -6767,16 +6915,30 @@ var Ajuna = /*#__PURE__*/function (_Parachain) {
6767
6915
  value: function transferLocalNonNativeAsset(options) {
6768
6916
  var api = options.api,
6769
6917
  asset = options.assetInfo,
6770
- address = options.address;
6918
+ address = options.address,
6919
+ isAmountAll = options.isAmountAll;
6771
6920
  assertHasId(asset);
6921
+ var assetId = Number(asset.assetId);
6922
+ var dest = {
6923
+ Id: address
6924
+ };
6925
+ if (isAmountAll) {
6926
+ return api.callTxMethod({
6927
+ module: 'Assets',
6928
+ method: 'transfer_all',
6929
+ parameters: {
6930
+ id: assetId,
6931
+ dest: dest,
6932
+ keep_alive: false
6933
+ }
6934
+ });
6935
+ }
6772
6936
  return api.callTxMethod({
6773
6937
  module: 'Assets',
6774
6938
  method: 'transfer',
6775
6939
  parameters: {
6776
- id: Number(asset.assetId),
6777
- target: {
6778
- Id: address
6779
- },
6940
+ id: assetId,
6941
+ target: dest,
6780
6942
  amount: asset.amount
6781
6943
  }
6782
6944
  });
@@ -6868,16 +7030,29 @@ var Altair = /*#__PURE__*/function (_Parachain) {
6868
7030
  value: function transferLocalNonNativeAsset(options) {
6869
7031
  var api = options.api,
6870
7032
  asset = options.assetInfo,
6871
- address = options.address;
6872
- assertHasId(asset);
7033
+ address = options.address,
7034
+ isAmountAll = options.isAmountAll;
7035
+ var dest = {
7036
+ Id: address
7037
+ };
7038
+ var currencyId = this.getCurrencySelection(asset);
7039
+ if (isAmountAll) {
7040
+ return api.callTxMethod({
7041
+ module: 'Tokens',
7042
+ method: 'transfer_all',
7043
+ parameters: {
7044
+ dest: dest,
7045
+ currency_id: currencyId,
7046
+ keep_alive: false
7047
+ }
7048
+ });
7049
+ }
6873
7050
  return api.callTxMethod({
6874
7051
  module: 'Tokens',
6875
7052
  method: 'transfer',
6876
7053
  parameters: {
6877
- dest: {
6878
- Id: address
6879
- },
6880
- currency_id: this.getCurrencySelection(asset),
7054
+ dest: dest,
7055
+ currency_id: currencyId,
6881
7056
  amount: asset.amount
6882
7057
  }
6883
7058
  });
@@ -7288,18 +7463,45 @@ var AssetHubPolkadot = /*#__PURE__*/function (_Parachain) {
7288
7463
  value: function transferLocalNonNativeAsset(options) {
7289
7464
  var api = options.api,
7290
7465
  asset = options.assetInfo,
7291
- address = options.address;
7466
+ address = options.address,
7467
+ isAmountAll = options.isAmountAll;
7292
7468
  assertIsForeign(asset);
7293
7469
  if (asset.assetId !== undefined) {
7470
+ var assetId = Number(asset.assetId);
7471
+ var dest = {
7472
+ Id: address
7473
+ };
7474
+ if (isAmountAll) {
7475
+ return api.callTxMethod({
7476
+ module: 'Assets',
7477
+ method: 'transfer_all',
7478
+ parameters: {
7479
+ id: assetId,
7480
+ dest: dest,
7481
+ keep_alive: false
7482
+ }
7483
+ });
7484
+ }
7294
7485
  return api.callTxMethod({
7295
7486
  module: 'Assets',
7296
7487
  method: 'transfer',
7297
7488
  parameters: {
7298
- id: Number(asset.assetId),
7299
- target: {
7489
+ id: assetId,
7490
+ target: dest,
7491
+ amount: asset.amount
7492
+ }
7493
+ });
7494
+ }
7495
+ if (isAmountAll) {
7496
+ return api.callTxMethod({
7497
+ module: 'ForeignAssets',
7498
+ method: 'transfer_all',
7499
+ parameters: {
7500
+ id: asset.location,
7501
+ dest: {
7300
7502
  Id: address
7301
7503
  },
7302
- amount: asset.amount
7504
+ keep_alive: false
7303
7505
  }
7304
7506
  });
7305
7507
  }
@@ -7367,16 +7569,30 @@ var Astar = /*#__PURE__*/function (_Parachain) {
7367
7569
  value: function transferLocalNonNativeAsset(options) {
7368
7570
  var api = options.api,
7369
7571
  asset = options.assetInfo,
7370
- address = options.address;
7572
+ address = options.address,
7573
+ isAmountAll = options.isAmountAll;
7371
7574
  assertHasId(asset);
7575
+ var assetId = Number(asset.assetId);
7576
+ var dest = {
7577
+ Id: address
7578
+ };
7579
+ if (isAmountAll) {
7580
+ return api.callTxMethod({
7581
+ module: 'Assets',
7582
+ method: 'transfer_all',
7583
+ parameters: {
7584
+ id: assetId,
7585
+ dest: dest,
7586
+ keep_alive: false
7587
+ }
7588
+ });
7589
+ }
7372
7590
  return api.callTxMethod({
7373
7591
  module: 'Assets',
7374
7592
  method: 'transfer',
7375
7593
  parameters: {
7376
- id: Number(asset.assetId),
7377
- target: {
7378
- Id: address
7379
- },
7594
+ id: assetId,
7595
+ target: dest,
7380
7596
  amount: asset.amount
7381
7597
  }
7382
7598
  });
@@ -7532,15 +7748,29 @@ var BifrostPolkadot = /*#__PURE__*/function (_Parachain) {
7532
7748
  value: function transferLocalNonNativeAsset(options) {
7533
7749
  var api = options.api,
7534
7750
  asset = options.assetInfo,
7535
- address = options.address;
7751
+ address = options.address,
7752
+ isAmountAll = options.isAmountAll;
7753
+ var dest = {
7754
+ Id: address
7755
+ };
7756
+ var currencyId = this.getCurrencySelection(asset);
7757
+ if (isAmountAll) {
7758
+ return api.callTxMethod({
7759
+ module: 'Tokens',
7760
+ method: 'transfer_all',
7761
+ parameters: {
7762
+ dest: dest,
7763
+ currency_id: currencyId,
7764
+ keep_alive: false
7765
+ }
7766
+ });
7767
+ }
7536
7768
  return api.callTxMethod({
7537
7769
  module: 'Tokens',
7538
7770
  method: 'transfer',
7539
7771
  parameters: {
7540
- dest: {
7541
- Id: address
7542
- },
7543
- currency_id: this.getCurrencySelection(asset),
7772
+ dest: dest,
7773
+ currency_id: currencyId,
7544
7774
  amount: asset.amount
7545
7775
  }
7546
7776
  });
@@ -7660,16 +7890,29 @@ var Centrifuge = /*#__PURE__*/function (_Parachain) {
7660
7890
  value: function transferLocalNonNativeAsset(options) {
7661
7891
  var api = options.api,
7662
7892
  asset = options.assetInfo,
7663
- address = options.address;
7664
- assertHasId(asset);
7893
+ address = options.address,
7894
+ isAmountAll = options.isAmountAll;
7895
+ var dest = {
7896
+ Id: address
7897
+ };
7898
+ var currencyId = this.getCurrencySelection(asset);
7899
+ if (isAmountAll) {
7900
+ return api.callTxMethod({
7901
+ module: 'Tokens',
7902
+ method: 'transfer_all',
7903
+ parameters: {
7904
+ dest: dest,
7905
+ currency_id: currencyId,
7906
+ keep_alive: false
7907
+ }
7908
+ });
7909
+ }
7665
7910
  return api.callTxMethod({
7666
7911
  module: 'Tokens',
7667
7912
  method: 'transfer',
7668
7913
  parameters: {
7669
- dest: {
7670
- Id: address
7671
- },
7672
- currency_id: this.getCurrencySelection(asset),
7914
+ dest: dest,
7915
+ currency_id: currencyId,
7673
7916
  amount: asset.amount
7674
7917
  }
7675
7918
  });
@@ -7730,6 +7973,16 @@ var ComposableFinance = /*#__PURE__*/function (_Parachain) {
7730
7973
  assertHasId(asset);
7731
7974
  return transferXTokens(input, BigInt(asset.assetId));
7732
7975
  }
7976
+ }, {
7977
+ key: "isSendingTempDisabled",
7978
+ value: function isSendingTempDisabled(_options) {
7979
+ return true;
7980
+ }
7981
+ }, {
7982
+ key: "isReceivingTempDisabled",
7983
+ value: function isReceivingTempDisabled(_scenario) {
7984
+ return true;
7985
+ }
7733
7986
  }]);
7734
7987
  }(Parachain);
7735
7988
 
@@ -7742,10 +7995,11 @@ var CoretimeKusama = /*#__PURE__*/function (_Parachain) {
7742
7995
  return _createClass(CoretimeKusama, [{
7743
7996
  key: "transferPolkadotXCM",
7744
7997
  value: function transferPolkadotXCM(input) {
7745
- // TESTED block hash on Rococo: 0x78ace0f1bf7cac9a42e56143321b617d98327e2750f795efb0abb833025c9082
7746
7998
  var scenario = input.scenario;
7747
- var method = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
7748
- return transferPolkadotXcm(input, method, 'Unlimited');
7999
+ if (scenario === 'ParaToPara') {
8000
+ throw new ScenarioNotSupportedError(this.chain, scenario);
8001
+ }
8002
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
7749
8003
  }
7750
8004
  }, {
7751
8005
  key: "getRelayToParaOverrides",
@@ -7777,6 +8031,11 @@ var CoretimePolkadot = /*#__PURE__*/function (_Parachain) {
7777
8031
  }
7778
8032
  return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
7779
8033
  }
8034
+ }, {
8035
+ key: "canReceiveFrom",
8036
+ value: function canReceiveFrom(origin) {
8037
+ return origin !== 'Hydration' && origin !== 'Moonbeam';
8038
+ }
7780
8039
  }, {
7781
8040
  key: "getRelayToParaOverrides",
7782
8041
  value: function getRelayToParaOverrides() {
@@ -7878,16 +8137,30 @@ var Crust = /*#__PURE__*/function (_Parachain) {
7878
8137
  value: function transferLocalNonNativeAsset(options) {
7879
8138
  var api = options.api,
7880
8139
  asset = options.assetInfo,
7881
- address = options.address;
8140
+ address = options.address,
8141
+ isAmountAll = options.isAmountAll;
7882
8142
  assertHasId(asset);
8143
+ var assetId = BigInt(asset.assetId);
8144
+ var dest = {
8145
+ Id: address
8146
+ };
8147
+ if (isAmountAll) {
8148
+ return api.callTxMethod({
8149
+ module: 'Assets',
8150
+ method: 'transfer_all',
8151
+ parameters: {
8152
+ id: assetId,
8153
+ dest: dest,
8154
+ keep_alive: false
8155
+ }
8156
+ });
8157
+ }
7883
8158
  return api.callTxMethod({
7884
8159
  module: 'Assets',
7885
8160
  method: 'transfer',
7886
8161
  parameters: {
7887
- id: BigInt(asset.assetId),
7888
- target: {
7889
- Id: address
7890
- },
8162
+ id: assetId,
8163
+ target: dest,
7891
8164
  amount: asset.amount
7892
8165
  }
7893
8166
  });
@@ -7944,6 +8217,16 @@ var Curio = /*#__PURE__*/function (_Parachain) {
7944
8217
  };
7945
8218
  return transferXTokens(input, currencySelection);
7946
8219
  }
8220
+ }, {
8221
+ key: "isSendingTempDisabled",
8222
+ value: function isSendingTempDisabled(_options) {
8223
+ return true;
8224
+ }
8225
+ }, {
8226
+ key: "isReceivingTempDisabled",
8227
+ value: function isReceivingTempDisabled(_scenario) {
8228
+ return true;
8229
+ }
7947
8230
  }]);
7948
8231
  }(Parachain);
7949
8232
 
@@ -7984,13 +8267,26 @@ var Darwinia = /*#__PURE__*/function (_Parachain) {
7984
8267
  value: function transferLocalNonNativeAsset(options) {
7985
8268
  var api = options.api,
7986
8269
  asset = options.assetInfo,
7987
- address = options.address;
8270
+ address = options.address,
8271
+ isAmountAll = options.isAmountAll;
7988
8272
  assertHasId(asset);
8273
+ var assetId = BigInt(asset.assetId);
8274
+ if (isAmountAll) {
8275
+ return api.callTxMethod({
8276
+ module: 'Assets',
8277
+ method: 'transfer_all',
8278
+ parameters: {
8279
+ id: assetId,
8280
+ dest: address,
8281
+ keep_alive: false
8282
+ }
8283
+ });
8284
+ }
7989
8285
  return api.callTxMethod({
7990
8286
  module: 'Assets',
7991
8287
  method: 'transfer',
7992
8288
  parameters: {
7993
- id: BigInt(asset.assetId),
8289
+ id: assetId,
7994
8290
  target: address,
7995
8291
  amount: asset.amount
7996
8292
  }
@@ -8066,7 +8362,7 @@ var EnergyWebXPaseo = /*#__PURE__*/function (_EnergyWebX) {
8066
8362
  var Heima = /*#__PURE__*/function (_Parachain) {
8067
8363
  function Heima() {
8068
8364
  var chain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Heima';
8069
- var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'litentry';
8365
+ var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'heima';
8070
8366
  var ecosystem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Polkadot';
8071
8367
  var version = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : sdkCommon.Version.V5;
8072
8368
  _classCallCheck(this, Heima);
@@ -8238,6 +8534,12 @@ var Polimec = /*#__PURE__*/function (_Parachain) {
8238
8534
  }
8239
8535
  return transferPolkadotXCM;
8240
8536
  }()
8537
+ }, {
8538
+ key: "isSendingTempDisabled",
8539
+ value: function isSendingTempDisabled(_ref3) {
8540
+ var assetInfo = _ref3.assetInfo;
8541
+ return assets.isSymbolMatch(assetInfo.symbol, this.getNativeAssetSymbol());
8542
+ }
8241
8543
  }, {
8242
8544
  key: "transferRelayToPara",
8243
8545
  value: function transferRelayToPara(options) {
@@ -8252,9 +8554,23 @@ var Polimec = /*#__PURE__*/function (_Parachain) {
8252
8554
  value: function transferLocalNonNativeAsset(options) {
8253
8555
  var api = options.api,
8254
8556
  asset = options.assetInfo,
8255
- address = options.address;
8557
+ address = options.address,
8558
+ isAmountAll = options.isAmountAll;
8256
8559
  assertIsForeign(asset);
8257
8560
  assertHasLocation(asset);
8561
+ if (isAmountAll) {
8562
+ return api.callTxMethod({
8563
+ module: 'ForeignAssets',
8564
+ method: 'transfer_all',
8565
+ parameters: {
8566
+ id: asset.location,
8567
+ target: {
8568
+ Id: address
8569
+ },
8570
+ keep_alive: false
8571
+ }
8572
+ });
8573
+ }
8258
8574
  return api.callTxMethod({
8259
8575
  module: 'ForeignAssets',
8260
8576
  method: 'transfer',
@@ -8438,29 +8754,53 @@ var Hydration = /*#__PURE__*/function (_Parachain) {
8438
8754
  value: function transferLocalNativeAsset(options) {
8439
8755
  var api = options.api,
8440
8756
  asset = options.assetInfo,
8441
- address = options.address;
8442
- return api.callTxMethod({
8757
+ address = options.address,
8758
+ isAmountAll = options.isAmountAll;
8759
+ if (isAmountAll) {
8760
+ return Promise.resolve(api.callTxMethod({
8761
+ module: 'Balances',
8762
+ method: 'transfer_all',
8763
+ parameters: {
8764
+ dest: address,
8765
+ keep_alive: false
8766
+ }
8767
+ }));
8768
+ }
8769
+ return Promise.resolve(api.callTxMethod({
8443
8770
  module: 'Balances',
8444
8771
  method: 'transfer_keep_alive',
8445
8772
  parameters: {
8446
8773
  dest: address,
8447
8774
  value: asset.amount
8448
8775
  }
8449
- });
8776
+ }));
8450
8777
  }
8451
8778
  }, {
8452
8779
  key: "transferLocalNonNativeAsset",
8453
8780
  value: function transferLocalNonNativeAsset(options) {
8454
8781
  var api = options.api,
8455
8782
  asset = options.assetInfo,
8456
- address = options.address;
8783
+ address = options.address,
8784
+ isAmountAll = options.isAmountAll;
8457
8785
  assertHasId(asset);
8786
+ var currencyId = Number(asset.assetId);
8787
+ if (isAmountAll) {
8788
+ return api.callTxMethod({
8789
+ module: 'Tokens',
8790
+ method: 'transfer_all',
8791
+ parameters: {
8792
+ dest: address,
8793
+ currency_id: currencyId,
8794
+ keep_alive: false
8795
+ }
8796
+ });
8797
+ }
8458
8798
  return api.callTxMethod({
8459
8799
  module: 'Tokens',
8460
8800
  method: 'transfer',
8461
8801
  parameters: {
8462
8802
  dest: address,
8463
- currency_id: Number(asset.assetId),
8803
+ currency_id: currencyId,
8464
8804
  amount: asset.amount
8465
8805
  }
8466
8806
  });
@@ -8503,16 +8843,30 @@ var IntegriteePolkadot = /*#__PURE__*/function (_Parachain) {
8503
8843
  value: function transferLocalNonNativeAsset(options) {
8504
8844
  var api = options.api,
8505
8845
  asset = options.assetInfo,
8506
- address = options.address;
8846
+ address = options.address,
8847
+ isAmountAll = options.isAmountAll;
8507
8848
  assertHasId(asset);
8849
+ var assetId = Number(asset.assetId);
8850
+ var dest = {
8851
+ Id: address
8852
+ };
8853
+ if (isAmountAll) {
8854
+ return api.callTxMethod({
8855
+ module: 'Assets',
8856
+ method: 'transfer_all',
8857
+ parameters: {
8858
+ id: assetId,
8859
+ dest: dest,
8860
+ keep_alive: false
8861
+ }
8862
+ });
8863
+ }
8508
8864
  return api.callTxMethod({
8509
8865
  module: 'Assets',
8510
8866
  method: 'transfer',
8511
8867
  parameters: {
8512
- id: Number(asset.assetId),
8513
- target: {
8514
- Id: address
8515
- },
8868
+ id: assetId,
8869
+ target: dest,
8516
8870
  amount: asset.amount
8517
8871
  }
8518
8872
  });
@@ -8567,20 +8921,33 @@ var Interlay = /*#__PURE__*/function (_Parachain) {
8567
8921
  }, {
8568
8922
  key: "transferLocalNativeAsset",
8569
8923
  value: function transferLocalNativeAsset(options) {
8570
- return this.transferLocalNonNativeAsset(options);
8924
+ return Promise.resolve(this.transferLocalNonNativeAsset(options));
8571
8925
  }
8572
8926
  }, {
8573
8927
  key: "transferLocalNonNativeAsset",
8574
8928
  value: function transferLocalNonNativeAsset(options) {
8575
8929
  var api = options.api,
8576
8930
  asset = options.assetInfo,
8577
- address = options.address;
8931
+ address = options.address,
8932
+ isAmountAll = options.isAmountAll;
8933
+ var currencyId = this.getCurrencySelection(asset);
8934
+ if (isAmountAll) {
8935
+ return api.callTxMethod({
8936
+ module: 'Tokens',
8937
+ method: 'transfer_all',
8938
+ parameters: {
8939
+ dest: address,
8940
+ currency_id: currencyId,
8941
+ keep_alive: false
8942
+ }
8943
+ });
8944
+ }
8578
8945
  return api.callTxMethod({
8579
8946
  module: 'Tokens',
8580
8947
  method: 'transfer',
8581
8948
  parameters: {
8582
8949
  dest: address,
8583
- currency_id: this.getCurrencySelection(asset),
8950
+ currency_id: currencyId,
8584
8951
  value: asset.amount
8585
8952
  }
8586
8953
  });
@@ -8635,29 +9002,14 @@ Jamton.NATIVE_ASSET_IDS = {
8635
9002
  jamTON: 2
8636
9003
  };
8637
9004
 
8638
- var Karura = /*#__PURE__*/function (_Parachain) {
9005
+ var Karura = /*#__PURE__*/function (_Acala) {
8639
9006
  function Karura() {
8640
9007
  _classCallCheck(this, Karura);
8641
9008
  return _callSuper(this, Karura, ['Karura', 'karura', 'Kusama', sdkCommon.Version.V4]);
8642
9009
  }
8643
- _inherits(Karura, _Parachain);
8644
- return _createClass(Karura, [{
8645
- key: "transferXTokens",
8646
- value: function transferXTokens(input) {
8647
- return getChain('Acala').transferXTokens(input);
8648
- }
8649
- }, {
8650
- key: "transferLocalNativeAsset",
8651
- value: function transferLocalNativeAsset(options) {
8652
- return getChain('Acala').transferLocalNativeAsset(options);
8653
- }
8654
- }, {
8655
- key: "transferLocalNonNativeAsset",
8656
- value: function transferLocalNonNativeAsset(options) {
8657
- return getChain('Acala').transferLocalNonNativeAsset(options);
8658
- }
8659
- }]);
8660
- }(Parachain);
9010
+ _inherits(Karura, _Acala);
9011
+ return _createClass(Karura);
9012
+ }(Acala);
8661
9013
 
8662
9014
  var KiltSpiritnet = /*#__PURE__*/function (_Parachain) {
8663
9015
  function KiltSpiritnet() {
@@ -8721,20 +9073,33 @@ var Kintsugi = /*#__PURE__*/function (_Parachain) {
8721
9073
  }, {
8722
9074
  key: "transferLocalNativeAsset",
8723
9075
  value: function transferLocalNativeAsset(options) {
8724
- return this.transferLocalNonNativeAsset(options);
9076
+ return Promise.resolve(this.transferLocalNonNativeAsset(options));
8725
9077
  }
8726
9078
  }, {
8727
9079
  key: "transferLocalNonNativeAsset",
8728
9080
  value: function transferLocalNonNativeAsset(options) {
8729
9081
  var api = options.api,
8730
9082
  asset = options.assetInfo,
8731
- address = options.address;
9083
+ address = options.address,
9084
+ isAmountAll = options.isAmountAll;
9085
+ var currencyId = this.getCurrencySelection(asset);
9086
+ if (isAmountAll) {
9087
+ return api.callTxMethod({
9088
+ module: 'Tokens',
9089
+ method: 'transfer_all',
9090
+ parameters: {
9091
+ dest: address,
9092
+ currency_id: currencyId,
9093
+ keep_alive: false
9094
+ }
9095
+ });
9096
+ }
8732
9097
  return api.callTxMethod({
8733
9098
  module: 'Tokens',
8734
9099
  method: 'transfer',
8735
9100
  parameters: {
8736
9101
  dest: address,
8737
- currency_id: this.getCurrencySelection(asset),
9102
+ currency_id: currencyId,
8738
9103
  value: asset.amount
8739
9104
  }
8740
9105
  });
@@ -8813,17 +9178,21 @@ var Manta = /*#__PURE__*/function (_Parachain) {
8813
9178
  value: function transferLocalNonNativeAsset(options) {
8814
9179
  var api = options.api,
8815
9180
  asset = options.assetInfo,
8816
- address = options.address;
9181
+ address = options.address,
9182
+ balance = options.balance,
9183
+ isAmountAll = options.isAmountAll;
8817
9184
  assertHasId(asset);
9185
+ var assetId = BigInt(asset.assetId);
9186
+ var amount = isAmountAll ? balance : asset.amount;
8818
9187
  return api.callTxMethod({
8819
9188
  module: 'Assets',
8820
9189
  method: 'transfer',
8821
9190
  parameters: {
8822
- id: BigInt(asset.assetId),
9191
+ id: assetId,
8823
9192
  target: {
8824
9193
  Id: address
8825
9194
  },
8826
- amount: asset.amount
9195
+ amount: amount
8827
9196
  }
8828
9197
  });
8829
9198
  }
@@ -8895,20 +9264,8 @@ var Moonbeam = /*#__PURE__*/function (_Parachain) {
8895
9264
  }()
8896
9265
  }, {
8897
9266
  key: "transferLocalNonNativeAsset",
8898
- value: function transferLocalNonNativeAsset(options) {
8899
- var api = options.api,
8900
- assetInfo = options.assetInfo,
8901
- address = options.address;
8902
- assertHasId(assetInfo);
8903
- return api.callTxMethod({
8904
- module: 'Assets',
8905
- method: 'transfer',
8906
- parameters: {
8907
- id: BigInt(assetInfo.assetId),
8908
- target: address,
8909
- amount: assetInfo.amount
8910
- }
8911
- });
9267
+ value: function transferLocalNonNativeAsset(_options) {
9268
+ throw new ScenarioNotSupportedError(this.chain, 'ParaToPara', "".concat(this.chain, " local transfers are temporarily disabled"));
8912
9269
  }
8913
9270
  }]);
8914
9271
  }(Parachain);
@@ -9085,6 +9442,53 @@ var NeuroWeb = /*#__PURE__*/function (_Parachain) {
9085
9442
  value: function transferPolkadotXCM(input) {
9086
9443
  return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9087
9444
  }
9445
+ }, {
9446
+ key: "transferLocalNativeAsset",
9447
+ value: function transferLocalNativeAsset(options) {
9448
+ var api = options.api,
9449
+ asset = options.assetInfo,
9450
+ address = options.address,
9451
+ isAmountAll = options.isAmountAll;
9452
+ if (isAmountAll) {
9453
+ return Promise.resolve(api.callTxMethod({
9454
+ module: 'Balances',
9455
+ method: 'transfer_all',
9456
+ parameters: {
9457
+ dest: address,
9458
+ keep_alive: false
9459
+ }
9460
+ }));
9461
+ }
9462
+ return Promise.resolve(api.callTxMethod({
9463
+ module: 'Balances',
9464
+ method: 'transfer_keep_alive',
9465
+ parameters: {
9466
+ dest: address,
9467
+ value: asset.amount
9468
+ }
9469
+ }));
9470
+ }
9471
+ }, {
9472
+ key: "transferLocalNonNativeAsset",
9473
+ value: function transferLocalNonNativeAsset(options) {
9474
+ var api = options.api,
9475
+ asset = options.assetInfo,
9476
+ address = options.address,
9477
+ balance = options.balance,
9478
+ isAmountAll = options.isAmountAll;
9479
+ assertHasId(asset);
9480
+ var assetId = BigInt(asset.assetId);
9481
+ var amount = isAmountAll ? balance : asset.amount;
9482
+ return api.callTxMethod({
9483
+ module: 'Assets',
9484
+ method: 'transfer',
9485
+ parameters: {
9486
+ id: assetId,
9487
+ target: address,
9488
+ amount: amount
9489
+ }
9490
+ });
9491
+ }
9088
9492
  }]);
9089
9493
  }(Parachain);
9090
9494
 
@@ -9174,7 +9578,17 @@ var PAssetHub = /*#__PURE__*/function (_PeoplePolkadot) {
9174
9578
  return _callSuper(this, PAssetHub, ['PAssetHub', 'PAssetHub - Contracts', 'Paseo', sdkCommon.Version.V5]);
9175
9579
  }
9176
9580
  _inherits(PAssetHub, _PeoplePolkadot);
9177
- return _createClass(PAssetHub);
9581
+ return _createClass(PAssetHub, [{
9582
+ key: "isSendingTempDisabled",
9583
+ value: function isSendingTempDisabled(_options) {
9584
+ return true;
9585
+ }
9586
+ }, {
9587
+ key: "isReceivingTempDisabled",
9588
+ value: function isReceivingTempDisabled(_scenario) {
9589
+ return true;
9590
+ }
9591
+ }]);
9178
9592
  }(PeoplePolkadot);
9179
9593
 
9180
9594
  var Peaq = /*#__PURE__*/function (_Parachain) {
@@ -9199,21 +9613,45 @@ var Peaq = /*#__PURE__*/function (_Parachain) {
9199
9613
  value: function transferRelayToPara() {
9200
9614
  throw new ChainNotSupportedError();
9201
9615
  }
9616
+ }, {
9617
+ key: "isSendingTempDisabled",
9618
+ value: function isSendingTempDisabled(_options) {
9619
+ return true;
9620
+ }
9621
+ }, {
9622
+ key: "isReceivingTempDisabled",
9623
+ value: function isReceivingTempDisabled(_scenario) {
9624
+ return true;
9625
+ }
9202
9626
  }, {
9203
9627
  key: "transferLocalNonNativeAsset",
9204
9628
  value: function transferLocalNonNativeAsset(options) {
9205
9629
  var api = options.api,
9206
9630
  asset = options.assetInfo,
9207
- address = options.address;
9631
+ address = options.address,
9632
+ isAmountAll = options.isAmountAll;
9208
9633
  assertHasId(asset);
9634
+ var assetId = BigInt(asset.assetId);
9635
+ var dest = {
9636
+ Id: address
9637
+ };
9638
+ if (isAmountAll) {
9639
+ return api.callTxMethod({
9640
+ module: 'Assets',
9641
+ method: 'transfer_all',
9642
+ parameters: {
9643
+ id: assetId,
9644
+ dest: dest,
9645
+ keep_alive: false
9646
+ }
9647
+ });
9648
+ }
9209
9649
  return api.callTxMethod({
9210
9650
  module: 'Assets',
9211
9651
  method: 'transfer',
9212
9652
  parameters: {
9213
- id: BigInt(asset.assetId),
9214
- target: {
9215
- Id: address
9216
- },
9653
+ id: assetId,
9654
+ target: dest,
9217
9655
  amount: asset.amount
9218
9656
  }
9219
9657
  });
@@ -9385,17 +9823,21 @@ var Phala = /*#__PURE__*/function (_Parachain) {
9385
9823
  value: function transferLocalNonNativeAsset(options) {
9386
9824
  var api = options.api,
9387
9825
  asset = options.assetInfo,
9388
- address = options.address;
9826
+ address = options.address,
9827
+ isAmountAll = options.isAmountAll;
9389
9828
  assertHasId(asset);
9829
+ var assetId = BigInt(asset.assetId);
9830
+ var dest = {
9831
+ Id: address
9832
+ };
9833
+ var amount = isAmountAll ? options.balance : asset.amount;
9390
9834
  return api.callTxMethod({
9391
9835
  module: 'Assets',
9392
9836
  method: 'transfer',
9393
9837
  parameters: {
9394
- id: BigInt(asset.assetId),
9395
- target: {
9396
- Id: address
9397
- },
9398
- amount: asset.amount
9838
+ id: assetId,
9839
+ target: dest,
9840
+ amount: amount
9399
9841
  }
9400
9842
  });
9401
9843
  }
@@ -9450,23 +9892,46 @@ var RobonomicsPolkadot = /*#__PURE__*/function (_Parachain) {
9450
9892
  return _createClass(RobonomicsPolkadot, [{
9451
9893
  key: "transferPolkadotXCM",
9452
9894
  value: function transferPolkadotXCM(input) {
9895
+ var scenario = input.scenario;
9896
+ if (scenario === 'ParaToPara') {
9897
+ throw new ScenarioNotSupportedError(this.chain, scenario);
9898
+ }
9453
9899
  return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9454
9900
  }
9901
+ }, {
9902
+ key: "isReceivingTempDisabled",
9903
+ value: function isReceivingTempDisabled(scenario) {
9904
+ return scenario !== 'RelayToPara';
9905
+ }
9455
9906
  }, {
9456
9907
  key: "transferLocalNonNativeAsset",
9457
9908
  value: function transferLocalNonNativeAsset(options) {
9458
9909
  var api = options.api,
9459
9910
  asset = options.assetInfo,
9460
- address = options.address;
9911
+ address = options.address,
9912
+ isAmountAll = options.isAmountAll;
9461
9913
  assertHasId(asset);
9914
+ var assetId = BigInt(asset.assetId);
9915
+ var dest = {
9916
+ Id: address
9917
+ };
9918
+ if (isAmountAll) {
9919
+ return api.callTxMethod({
9920
+ module: 'Assets',
9921
+ method: 'transfer_all',
9922
+ parameters: {
9923
+ id: assetId,
9924
+ dest: dest,
9925
+ keep_alive: false
9926
+ }
9927
+ });
9928
+ }
9462
9929
  return api.callTxMethod({
9463
9930
  module: 'Assets',
9464
9931
  method: 'transfer',
9465
9932
  parameters: {
9466
- id: BigInt(asset.assetId),
9467
- target: {
9468
- Id: address
9469
- },
9933
+ id: assetId,
9934
+ target: dest,
9470
9935
  amount: asset.amount
9471
9936
  }
9472
9937
  });
@@ -9525,6 +9990,16 @@ var Subsocial = /*#__PURE__*/function (_Parachain) {
9525
9990
  }
9526
9991
  return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9527
9992
  }
9993
+ }, {
9994
+ key: "isSendingTempDisabled",
9995
+ value: function isSendingTempDisabled(_options) {
9996
+ return true;
9997
+ }
9998
+ }, {
9999
+ key: "isReceivingTempDisabled",
10000
+ value: function isReceivingTempDisabled(_scenario) {
10001
+ return true;
10002
+ }
9528
10003
  }]);
9529
10004
  }(Parachain);
9530
10005
 
@@ -9607,13 +10082,21 @@ var Zeitgeist = /*#__PURE__*/function (_Parachain) {
9607
10082
  var currencySelection = this.getCurrencySelection(asset);
9608
10083
  return transferXTokens(input, currencySelection);
9609
10084
  }
10085
+ }, {
10086
+ key: "canReceiveFrom",
10087
+ value: function canReceiveFrom(origin) {
10088
+ return origin !== 'Astar';
10089
+ }
9610
10090
  }, {
9611
10091
  key: "transferLocalNonNativeAsset",
9612
10092
  value: function transferLocalNonNativeAsset(options) {
9613
10093
  var api = options.api,
9614
10094
  asset = options.assetInfo,
9615
- address = options.address;
10095
+ address = options.address,
10096
+ balance = options.balance,
10097
+ isAmountAll = options.isAmountAll;
9616
10098
  assertHasId(asset);
10099
+ var amount = isAmountAll ? balance : asset.amount;
9617
10100
  return api.callTxMethod({
9618
10101
  module: 'AssetManager',
9619
10102
  method: 'transfer',
@@ -9622,7 +10105,7 @@ var Zeitgeist = /*#__PURE__*/function (_Parachain) {
9622
10105
  Id: address
9623
10106
  },
9624
10107
  currency_id: this.getCurrencySelection(asset),
9625
- amount: asset.amount
10108
+ amount: amount
9626
10109
  }
9627
10110
  });
9628
10111
  }
@@ -9755,6 +10238,8 @@ var MAX_WEIGHT = {
9755
10238
  refTime: MAX_U64
9756
10239
  };
9757
10240
  var BYPASS_MINT_AMOUNT = '1000';
10241
+ var MIN_AMOUNT = 2n;
10242
+ var AMOUNT_ALL = 'ALL';
9758
10243
 
9759
10244
  var buildClaimAssetsParams = function buildClaimAssetsParams(options) {
9760
10245
  var assets = options.assets,
@@ -9910,10 +10395,12 @@ var dryRunOrigin = /*#__PURE__*/function () {
9910
10395
  };
9911
10396
  }();
9912
10397
 
9913
- var AssetManagerPallet = /*#__PURE__*/function () {
10398
+ var AssetManagerPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9914
10399
  function AssetManagerPallet() {
9915
10400
  _classCallCheck(this, AssetManagerPallet);
10401
+ return _callSuper(this, AssetManagerPallet, arguments);
9916
10402
  }
10403
+ _inherits(AssetManagerPallet, _BaseAssetsPallet);
9917
10404
  return _createClass(AssetManagerPallet, [{
9918
10405
  key: "mint",
9919
10406
  value: function mint(address, asset, balance) {
@@ -9922,7 +10409,7 @@ var AssetManagerPallet = /*#__PURE__*/function () {
9922
10409
  amount = asset.amount;
9923
10410
  return Promise.resolve({
9924
10411
  balanceTx: {
9925
- module: 'AssetManager',
10412
+ module: this.palletName,
9926
10413
  method: 'updateBalance',
9927
10414
  parameters: {
9928
10415
  who: {
@@ -9937,12 +10424,14 @@ var AssetManagerPallet = /*#__PURE__*/function () {
9937
10424
  });
9938
10425
  }
9939
10426
  }]);
9940
- }();
10427
+ }(BaseAssetsPallet);
9941
10428
 
9942
- var BalancesPallet = /*#__PURE__*/function () {
10429
+ var BalancesPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9943
10430
  function BalancesPallet() {
9944
10431
  _classCallCheck(this, BalancesPallet);
10432
+ return _callSuper(this, BalancesPallet, arguments);
9945
10433
  }
10434
+ _inherits(BalancesPallet, _BaseAssetsPallet);
9946
10435
  return _createClass(BalancesPallet, [{
9947
10436
  key: "mint",
9948
10437
  value: function mint(address, assetInfo, balance, chain) {
@@ -9950,7 +10439,7 @@ var BalancesPallet = /*#__PURE__*/function () {
9950
10439
  var notUseId = chain.startsWith('Hydration') || chain === 'Basilisk' || assets.isChainEvm(chain);
9951
10440
  return Promise.resolve({
9952
10441
  balanceTx: {
9953
- module: 'Balances',
10442
+ module: this.palletName,
9954
10443
  method: 'force_set_balance',
9955
10444
  parameters: {
9956
10445
  who: notUseId ? address : {
@@ -9962,37 +10451,43 @@ var BalancesPallet = /*#__PURE__*/function () {
9962
10451
  });
9963
10452
  }
9964
10453
  }]);
9965
- }();
10454
+ }(BaseAssetsPallet);
9966
10455
 
9967
- var CurrenciesPallet = /*#__PURE__*/function () {
10456
+ var CurrenciesPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9968
10457
  function CurrenciesPallet() {
9969
10458
  _classCallCheck(this, CurrenciesPallet);
10459
+ return _callSuper(this, CurrenciesPallet, arguments);
9970
10460
  }
10461
+ _inherits(CurrenciesPallet, _BaseAssetsPallet);
9971
10462
  return _createClass(CurrenciesPallet, [{
9972
10463
  key: "mint",
9973
- value: function mint(address, assetInfo, balance) {
9974
- assertHasId(assetInfo);
9975
- var assetId = assetInfo.assetId,
9976
- amount = assetInfo.amount;
10464
+ value: function mint(address, asset, balance, chain) {
10465
+ var isKarura = chain.startsWith('Karura');
10466
+ var id = isKarura ? getChain('Karura').getCurrencySelection(asset) : (assertHasId(asset), Number(asset.assetId));
10467
+ var amount = asset.amount;
9977
10468
  return Promise.resolve({
9978
10469
  balanceTx: {
9979
- module: 'Currencies',
10470
+ module: this.palletName,
9980
10471
  method: 'update_balance',
9981
10472
  parameters: {
9982
- who: address,
9983
- currency_id: Number(assetId),
10473
+ who: isKarura ? {
10474
+ Id: address
10475
+ } : address,
10476
+ currency_id: id,
9984
10477
  amount: balance + amount
9985
10478
  }
9986
10479
  }
9987
10480
  });
9988
10481
  }
9989
10482
  }]);
9990
- }();
10483
+ }(BaseAssetsPallet);
9991
10484
 
9992
- var ForeignAssetsPallet = /*#__PURE__*/function () {
10485
+ var ForeignAssetsPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9993
10486
  function ForeignAssetsPallet() {
9994
10487
  _classCallCheck(this, ForeignAssetsPallet);
10488
+ return _callSuper(this, ForeignAssetsPallet, arguments);
9995
10489
  }
10490
+ _inherits(ForeignAssetsPallet, _BaseAssetsPallet);
9996
10491
  return _createClass(ForeignAssetsPallet, [{
9997
10492
  key: "mint",
9998
10493
  value: function mint(address, asset) {
@@ -10001,7 +10496,7 @@ var ForeignAssetsPallet = /*#__PURE__*/function () {
10001
10496
  amount = asset.amount;
10002
10497
  return Promise.resolve({
10003
10498
  assetStatusTx: {
10004
- module: 'ForeignAssets',
10499
+ module: this.palletName,
10005
10500
  method: 'force_asset_status',
10006
10501
  parameters: {
10007
10502
  id: location,
@@ -10023,7 +10518,7 @@ var ForeignAssetsPallet = /*#__PURE__*/function () {
10023
10518
  }
10024
10519
  },
10025
10520
  balanceTx: {
10026
- module: 'ForeignAssets',
10521
+ module: this.palletName,
10027
10522
  method: 'mint',
10028
10523
  parameters: {
10029
10524
  id: location,
@@ -10036,7 +10531,7 @@ var ForeignAssetsPallet = /*#__PURE__*/function () {
10036
10531
  });
10037
10532
  }
10038
10533
  }]);
10039
- }();
10534
+ }(BaseAssetsPallet);
10040
10535
 
10041
10536
  var SIZE = 32;
10042
10537
  var BALANCE_SLOT = 0;
@@ -10051,10 +10546,12 @@ var calculateMappingSlot = function calculateMappingSlot(key) {
10051
10546
  var encoded = viem.concat([keyPadded, slotHex]);
10052
10547
  return viem.keccak256(encoded);
10053
10548
  };
10054
- var SystemPallet = /*#__PURE__*/function () {
10549
+ var SystemPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
10055
10550
  function SystemPallet() {
10056
10551
  _classCallCheck(this, SystemPallet);
10552
+ return _callSuper(this, SystemPallet, arguments);
10057
10553
  }
10554
+ _inherits(SystemPallet, _BaseAssetsPallet);
10058
10555
  return _createClass(SystemPallet, [{
10059
10556
  key: "mint",
10060
10557
  value: function () {
@@ -10075,7 +10572,7 @@ var SystemPallet = /*#__PURE__*/function () {
10075
10572
  storageKey = _context.v;
10076
10573
  return _context.a(2, {
10077
10574
  balanceTx: {
10078
- module: 'System',
10575
+ module: this.palletName,
10079
10576
  method: 'set_storage',
10080
10577
  parameters: {
10081
10578
  items: [[storageKey, amountEncoded]]
@@ -10083,7 +10580,7 @@ var SystemPallet = /*#__PURE__*/function () {
10083
10580
  }
10084
10581
  });
10085
10582
  }
10086
- }, _callee);
10583
+ }, _callee, this);
10087
10584
  }));
10088
10585
  function mint(_x, _x2, _x3, _x4, _x5) {
10089
10586
  return _mint.apply(this, arguments);
@@ -10091,12 +10588,14 @@ var SystemPallet = /*#__PURE__*/function () {
10091
10588
  return mint;
10092
10589
  }()
10093
10590
  }]);
10094
- }();
10591
+ }(BaseAssetsPallet);
10095
10592
 
10096
- var TokensPallet = /*#__PURE__*/function () {
10593
+ var TokensPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
10097
10594
  function TokensPallet() {
10098
10595
  _classCallCheck(this, TokensPallet);
10596
+ return _callSuper(this, TokensPallet, arguments);
10099
10597
  }
10598
+ _inherits(TokensPallet, _BaseAssetsPallet);
10100
10599
  return _createClass(TokensPallet, [{
10101
10600
  key: "mint",
10102
10601
  value: function mint(address, asset, balance, chain) {
@@ -10106,7 +10605,7 @@ var TokensPallet = /*#__PURE__*/function () {
10106
10605
  var amount = asset.amount;
10107
10606
  return Promise.resolve({
10108
10607
  balanceTx: {
10109
- module: 'Tokens',
10608
+ module: this.palletName,
10110
10609
  method: 'set_balance',
10111
10610
  parameters: {
10112
10611
  who: {
@@ -10120,35 +10619,22 @@ var TokensPallet = /*#__PURE__*/function () {
10120
10619
  });
10121
10620
  }
10122
10621
  }]);
10123
- }();
10622
+ }(BaseAssetsPallet);
10124
10623
 
10125
10624
  var palletRegistry = {
10126
- Balances: BalancesPallet,
10127
- Tokens: TokensPallet,
10128
- Currencies: CurrenciesPallet,
10129
- Assets: AssetsPallet,
10130
- ForeignAssets: ForeignAssetsPallet,
10131
- AssetManager: AssetManagerPallet,
10132
- System: SystemPallet
10625
+ Balances: new BalancesPallet('Balances'),
10626
+ Tokens: new TokensPallet('Tokens'),
10627
+ Currencies: new CurrenciesPallet('Currencies'),
10628
+ Assets: new AssetsPallet('Assets'),
10629
+ ForeignAssets: new ForeignAssetsPallet('ForeignAssets'),
10630
+ AssetManager: new AssetManagerPallet('AssetManager'),
10631
+ System: new SystemPallet('System'),
10632
+ Fungibles: new AssetsPallet('Fungibles')
10133
10633
  };
10134
10634
  var getPalletInstance = function getPalletInstance(type) {
10135
- var HandlerClass = palletRegistry[type];
10136
- return new HandlerClass();
10635
+ return palletRegistry[type];
10137
10636
  };
10138
10637
 
10139
- var getCurrencySelection = function getCurrencySelection(asset) {
10140
- if (asset.location) return {
10141
- location: asset.location
10142
- };
10143
- if (assets.isForeignAsset(asset) && asset.assetId) {
10144
- return {
10145
- id: asset.assetId
10146
- };
10147
- }
10148
- return {
10149
- symbol: asset.symbol
10150
- };
10151
- };
10152
10638
  var pickOtherPallet = function pickOtherPallet(asset, pallets) {
10153
10639
  if (assets.isForeignAsset(asset) && (!asset.assetId || asset.assetId.startsWith('0x'))) {
10154
10640
  var _pallets$find;
@@ -10687,6 +11173,9 @@ var resolveOverriddenAsset = function resolveOverriddenAsset(options, isBridge,
10687
11173
  }
10688
11174
  // MultiAsset is an array of TCurrencyCore, search for assets
10689
11175
  var assets$1 = currency.map(function (currency) {
11176
+ if (currency.amount === AMOUNT_ALL) {
11177
+ throw new assets.InvalidCurrencyError('Multi assets cannot use amount all. Please specify amount.');
11178
+ }
10690
11179
  var asset = assets.findAssetInfo(origin, currency, !sdkCommon.isTLocation(destination) ? destination : null);
10691
11180
  if (!asset) {
10692
11181
  throw new assets.InvalidCurrencyError("Origin chain ".concat(origin, " does not support currency ").concat(JSON.stringify(currency)));
@@ -11438,11 +11927,11 @@ var transferRelayToPara = /*#__PURE__*/function () {
11438
11927
 
11439
11928
  var send = /*#__PURE__*/function () {
11440
11929
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options) {
11441
- var api, origin, currency, feeAsset, address, destination, paraIdTo, version, senderAddress, ahAddress, pallet, method, isBridge, assetCheckEnabled, asset, resolvedFeeAsset, amount, finalAmount, originVersion, destVersion, resolvedVersion, isLocalTransfer, overriddenAsset, resolvedAsset, finalAsset, finalVersion, normalizedAsset;
11930
+ var api, origin, currency, feeAsset, address, destination, paraIdTo, version, senderAddress, ahAddress, pallet, method, isAmountAll, isBridge, assetCheckEnabled, asset, resolvedFeeAsset, amount, finalAmount, originVersion, destVersion, resolvedVersion, isLocalTransfer, overriddenAsset, resolvedAsset, finalAsset, finalVersion, normalizedAsset;
11442
11931
  return _regenerator().w(function (_context) {
11443
11932
  while (1) switch (_context.n) {
11444
11933
  case 0:
11445
- api = options.api, origin = options.from, currency = options.currency, feeAsset = options.feeAsset, address = options.address, destination = options.to, paraIdTo = options.paraIdTo, version = options.version, senderAddress = options.senderAddress, ahAddress = options.ahAddress, pallet = options.pallet, method = options.method;
11934
+ api = options.api, origin = options.from, currency = options.currency, feeAsset = options.feeAsset, address = options.address, destination = options.to, paraIdTo = options.paraIdTo, version = options.version, senderAddress = options.senderAddress, ahAddress = options.ahAddress, pallet = options.pallet, method = options.method, isAmountAll = options.isAmountAll;
11446
11935
  validateCurrency(currency, feeAsset);
11447
11936
  validateDestination(origin, destination);
11448
11937
  validateDestinationAddress(address, destination);
@@ -11454,7 +11943,7 @@ var send = /*#__PURE__*/function () {
11454
11943
  resolvedFeeAsset = feeAsset ? resolveFeeAsset(feeAsset, origin, destination, currency) : undefined;
11455
11944
  validateAssetSupport(options, assetCheckEnabled, isBridge, asset);
11456
11945
  amount = Array.isArray(currency) ? 0n : abstractDecimals(currency.amount, asset === null || asset === void 0 ? void 0 : asset.decimals, api); // Ensure amount is at least 2 to avoid Rust panic (only for non-array currencies)
11457
- finalAmount = !Array.isArray(currency) && amount < 2n ? 2n : amount;
11946
+ finalAmount = !Array.isArray(currency) && amount < MIN_AMOUNT ? MIN_AMOUNT : amount;
11458
11947
  originVersion = getChainVersion(origin);
11459
11948
  destVersion = !sdkCommon.isTLocation(destination) ? getChainVersion(destination) : undefined;
11460
11949
  resolvedVersion = selectXcmVersion(version, originVersion, destVersion);
@@ -11488,7 +11977,16 @@ var send = /*#__PURE__*/function () {
11488
11977
  _context.n = 4;
11489
11978
  return api.init(origin, TX_CLIENT_TIMEOUT_MS);
11490
11979
  case 4:
11491
- return _context.a(2, api.callTxMethod({
11980
+ return _context.a(2, api.callTxMethod(isAmountAll ? {
11981
+ module: 'Balances',
11982
+ method: 'transfer_all',
11983
+ parameters: {
11984
+ dest: {
11985
+ Id: address
11986
+ },
11987
+ keepAlive: true
11988
+ }
11989
+ } : {
11492
11990
  module: 'Balances',
11493
11991
  method: 'transfer_keep_alive',
11494
11992
  parameters: {
@@ -11504,6 +12002,7 @@ var send = /*#__PURE__*/function () {
11504
12002
  origin: origin,
11505
12003
  destination: destination,
11506
12004
  address: address,
12005
+ senderAddress: senderAddress,
11507
12006
  assetInfo: _objectSpread2(_objectSpread2({}, asset), {}, {
11508
12007
  amount: finalAmount
11509
12008
  }),
@@ -11546,7 +12045,8 @@ var send = /*#__PURE__*/function () {
11546
12045
  senderAddress: senderAddress,
11547
12046
  ahAddress: ahAddress,
11548
12047
  pallet: pallet,
11549
- method: method
12048
+ method: method,
12049
+ isAmountAll: isAmountAll
11550
12050
  }));
11551
12051
  }
11552
12052
  }, _callee);
@@ -11971,7 +12471,7 @@ var getTransferInfo = /*#__PURE__*/function () {
11971
12471
 
11972
12472
  var getMinTransferableAmountInternal = /*#__PURE__*/function () {
11973
12473
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
11974
- var api, origin, senderAddress, address, chain, destination, currency, feeAsset, buildTx, builder, resolvedFeeAsset, asset, destAsset, destCurrency, destApi, destBalance, destEd, nativeAssetInfo, isNativeAsset, paysOriginInSendingAsset, amount, result, originFee, hopFeeTotal, destinationFee, edComponent, minAmount, modifiedBuilder, dryRunResult, _t, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9;
12474
+ var api, origin, senderAddress, address, chain, destination, currency, feeAsset, buildTx, builder, resolvedFeeAsset, asset, destAsset, destCurrency, destApi, destBalance, destEd, nativeAssetInfo, isNativeAsset, paysOriginInSendingAsset, amount, result, originFee, hopFeeTotal, destinationFee, edComponent, minAmount, modifiedBuilder, _yield$modifiedBuilde, tx, dryRunResult;
11975
12475
  return _regenerator().w(function (_context) {
11976
12476
  while (1) switch (_context.n) {
11977
12477
  case 0:
@@ -12030,30 +12530,23 @@ var getMinTransferableAmountInternal = /*#__PURE__*/function () {
12030
12530
  modifiedBuilder = builder.currency(_objectSpread2(_objectSpread2({}, currency), {}, {
12031
12531
  amount: minAmount
12032
12532
  }));
12033
- _t = dryRunInternal;
12034
- _t2 = api;
12035
12533
  _context.n = 4;
12036
12534
  return modifiedBuilder['buildInternal']();
12037
12535
  case 4:
12038
- _t3 = _context.v;
12039
- _t4 = chain;
12040
- _t5 = destination;
12041
- _t6 = senderAddress;
12042
- _t7 = address;
12043
- _t8 = _objectSpread2(_objectSpread2({}, currency), {}, {
12044
- amount: minAmount
12045
- });
12046
- _t9 = feeAsset;
12536
+ _yield$modifiedBuilde = _context.v;
12537
+ tx = _yield$modifiedBuilde.tx;
12047
12538
  _context.n = 5;
12048
- return _t({
12049
- api: _t2,
12050
- tx: _t3,
12051
- origin: _t4,
12052
- destination: _t5,
12053
- senderAddress: _t6,
12054
- address: _t7,
12055
- currency: _t8,
12056
- feeAsset: _t9
12539
+ return dryRunInternal({
12540
+ api: api,
12541
+ tx: tx,
12542
+ origin: chain,
12543
+ destination: destination,
12544
+ senderAddress: senderAddress,
12545
+ address: address,
12546
+ currency: _objectSpread2(_objectSpread2({}, currency), {}, {
12547
+ amount: minAmount
12548
+ }),
12549
+ feeAsset: feeAsset
12057
12550
  });
12058
12551
  case 5:
12059
12552
  dryRunResult = _context.v;
@@ -12244,12 +12737,13 @@ var computeInstructionFee = /*#__PURE__*/function () {
12244
12737
  }();
12245
12738
  var computeAllFees = /*#__PURE__*/function () {
12246
12739
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref3, customXcm, isDotAsset, refundInstruction) {
12740
+ var _customXcm$DepositRes;
12247
12741
  var reserve, dest, version, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
12248
12742
  return _regenerator().w(function (_context2) {
12249
12743
  while (1) switch (_context2.n) {
12250
12744
  case 0:
12251
12745
  reserve = _ref3.reserve, dest = _ref3.dest, version = _ref3.options.version;
12252
- if (!('DepositReserveAsset' in customXcm)) {
12746
+ if (!('DepositReserveAsset' in customXcm || 'InitiateTeleport' in customXcm)) {
12253
12747
  _context2.n = 6;
12254
12748
  break;
12255
12749
  }
@@ -12272,7 +12766,7 @@ var computeAllFees = /*#__PURE__*/function () {
12272
12766
  case 4:
12273
12767
  _t5 = _t4;
12274
12768
  _context2.n = 5;
12275
- return computeInstructionFee(assets.hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, customXcm.DepositReserveAsset.xcm);
12769
+ return computeInstructionFee(assets.hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, ((_customXcm$DepositRes = customXcm === null || customXcm === void 0 ? void 0 : customXcm.DepositReserveAsset) !== null && _customXcm$DepositRes !== void 0 ? _customXcm$DepositRes : customXcm.InitiateTeleport).xcm);
12276
12770
  case 5:
12277
12771
  _t6 = _context2.v;
12278
12772
  _t2 = {
@@ -12327,7 +12821,7 @@ var computeAllFees = /*#__PURE__*/function () {
12327
12821
  }();
12328
12822
 
12329
12823
  var createTypeAndThenCallContext = /*#__PURE__*/function () {
12330
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options) {
12824
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options, overrideReserve) {
12331
12825
  var api, destChain, assetInfo, reserveChain, destApi, reserveApi;
12332
12826
  return _regenerator().w(function (_context) {
12333
12827
  while (1) switch (_context.n) {
@@ -12340,12 +12834,14 @@ var createTypeAndThenCallContext = /*#__PURE__*/function () {
12340
12834
  }
12341
12835
  throw new InvalidParameterError('Cannot override destination when using type and then transfer.');
12342
12836
  case 1:
12343
- reserveChain = sdkCommon.isRelayChain(destChain) ? destChain : getAssetReserveChain(chain, chain, assetInfo.location);
12837
+ reserveChain = overrideReserve !== undefined ? overrideReserve :
12838
+ // Paseo ecosystem migrated reserves to AssetHub
12839
+ getRelayChainOf(chain) === 'Paseo' ? getAssetReserveChain(chain, chain, assetInfo.location) : sdkCommon.isRelayChain(destChain) ? destChain : getAssetReserveChain(chain, chain, assetInfo.location);
12344
12840
  destApi = api.clone();
12345
12841
  _context.n = 2;
12346
12842
  return destApi.init(destChain);
12347
12843
  case 2:
12348
- reserveApi = reserveChain !== chain ? api.clone() : destApi;
12844
+ reserveApi = reserveChain === chain ? api : reserveChain === destChain ? destApi : api.clone();
12349
12845
  _context.n = 3;
12350
12846
  return reserveApi.init(reserveChain);
12351
12847
  case 3:
@@ -12368,7 +12864,7 @@ var createTypeAndThenCallContext = /*#__PURE__*/function () {
12368
12864
  }
12369
12865
  }, _callee);
12370
12866
  }));
12371
- return function createTypeAndThenCallContext(_x, _x2) {
12867
+ return function createTypeAndThenCallContext(_x, _x2, _x3) {
12372
12868
  return _ref.apply(this, arguments);
12373
12869
  };
12374
12870
  }();
@@ -12416,20 +12912,33 @@ var createCustomXcm = function createCustomXcm(_ref, isDotAsset) {
12416
12912
  if (origin.chain !== reserve.chain && dest.chain !== reserve.chain) {
12417
12913
  var buyExecutionAmount = !isDotAsset ? destFee : assetInfo.amount - reserveFee - refundFee;
12418
12914
  if (buyExecutionAmount < 0n) throw new AmountTooLowError();
12915
+ var filter = fees.destFee === MIN_FEE ? {
12916
+ Wild: 'All'
12917
+ } : {
12918
+ Definite: assetsFilter
12919
+ };
12920
+ var buyExecution = {
12921
+ BuyExecution: {
12922
+ fees: createAsset(version, buyExecutionAmount, feeAssetLocation),
12923
+ weight_limit: 'Unlimited'
12924
+ }
12925
+ };
12926
+ var destLoc = createDestination(version, origin.chain, destination, paraIdTo);
12927
+ // If destination is a system chain, use teleport instead of reserve deposit
12928
+ if (sdkCommon.isSystemChain(dest.chain)) {
12929
+ return {
12930
+ InitiateTeleport: {
12931
+ assets: filter,
12932
+ dest: destLoc,
12933
+ xcm: [buyExecution, depositInstruction]
12934
+ }
12935
+ };
12936
+ }
12419
12937
  return {
12420
12938
  DepositReserveAsset: {
12421
- assets: fees.destFee === MIN_FEE ? {
12422
- Wild: 'All'
12423
- } : {
12424
- Definite: assetsFilter
12425
- },
12426
- dest: createDestination(version, origin.chain, destination, paraIdTo),
12427
- xcm: [{
12428
- BuyExecution: {
12429
- fees: createAsset(version, buyExecutionAmount, feeAssetLocation),
12430
- weight_limit: 'Unlimited'
12431
- }
12432
- }, depositInstruction]
12939
+ assets: filter,
12940
+ dest: destLoc,
12941
+ xcm: [buyExecution, depositInstruction]
12433
12942
  }
12434
12943
  };
12435
12944
  }
@@ -12467,14 +12976,14 @@ var buildAssets = function buildAssets(chain, asset, feeAmount, isDotAsset, vers
12467
12976
  * Creates a type and then call for transferring assets using XCM. Works only for DOT and snowbridge assets so far.
12468
12977
  */
12469
12978
  var createTypeAndThenCall = /*#__PURE__*/function () {
12470
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options) {
12979
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options, overrideReserve) {
12471
12980
  var api, senderAddress, version, context, assetInfo, isDotAsset, customXcm, assetCount, refundInstruction, fees, finalCustomXcm, totalFee, assets;
12472
12981
  return _regenerator().w(function (_context) {
12473
12982
  while (1) switch (_context.n) {
12474
12983
  case 0:
12475
12984
  api = options.api, senderAddress = options.senderAddress, version = options.version;
12476
12985
  _context.n = 1;
12477
- return createTypeAndThenCallContext(chain, options);
12986
+ return createTypeAndThenCallContext(chain, options, overrideReserve);
12478
12987
  case 1:
12479
12988
  context = _context.v;
12480
12989
  assetInfo = context.assetInfo;
@@ -12504,10 +13013,183 @@ var createTypeAndThenCall = /*#__PURE__*/function () {
12504
13013
  }
12505
13014
  }, _callee);
12506
13015
  }));
12507
- return function createTypeAndThenCall(_x, _x2) {
13016
+ return function createTypeAndThenCall(_x, _x2, _x3) {
13017
+ return _ref.apply(this, arguments);
13018
+ };
13019
+ }();
13020
+
13021
+ /**
13022
+ * Choose a reserve (AssetHub or Relay) by checking the beneficiary’s balance on each.
13023
+ * We resolve the beneficiary account on every candidate and return the first with
13024
+ * balance \>= amount, or undefined if none qualify.
13025
+ */
13026
+ var selectReserveByBalance = /*#__PURE__*/function () {
13027
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options) {
13028
+ var api, assetInfo, destination, version, paraIdTo, relay, candidates, _i, _candidates, reserve, reserveApi, location, resolvedAddress, balance;
13029
+ return _regenerator().w(function (_context) {
13030
+ while (1) switch (_context.n) {
13031
+ case 0:
13032
+ api = options.api, assetInfo = options.assetInfo, destination = options.destination, version = options.version, paraIdTo = options.paraIdTo;
13033
+ relay = getRelayChainOf(chain);
13034
+ candidates = ["AssetHub".concat(relay), relay];
13035
+ _i = 0, _candidates = candidates;
13036
+ case 1:
13037
+ if (!(_i < _candidates.length)) {
13038
+ _context.n = 7;
13039
+ break;
13040
+ }
13041
+ reserve = _candidates[_i];
13042
+ reserveApi = api.clone();
13043
+ _context.n = 2;
13044
+ return reserveApi.init(reserve);
13045
+ case 2:
13046
+ location = createDestination(version, chain, destination, paraIdTo);
13047
+ _context.n = 3;
13048
+ return reserveApi.convertLocationToAccount(location);
13049
+ case 3:
13050
+ resolvedAddress = _context.v;
13051
+ if (resolvedAddress) {
13052
+ _context.n = 4;
13053
+ break;
13054
+ }
13055
+ return _context.a(3, 6);
13056
+ case 4:
13057
+ assertAddressIsString(resolvedAddress);
13058
+ _context.n = 5;
13059
+ return getAssetBalanceInternal({
13060
+ api: reserveApi,
13061
+ chain: reserve,
13062
+ address: resolvedAddress,
13063
+ currency: getCurrencySelection(assetInfo)
13064
+ });
13065
+ case 5:
13066
+ balance = _context.v;
13067
+ if (!(balance >= assetInfo.amount)) {
13068
+ _context.n = 6;
13069
+ break;
13070
+ }
13071
+ return _context.a(2, reserve);
13072
+ case 6:
13073
+ _i++;
13074
+ _context.n = 1;
13075
+ break;
13076
+ case 7:
13077
+ return _context.a(2, undefined);
13078
+ }
13079
+ }, _callee);
13080
+ }));
13081
+ return function selectReserveByBalance(_x, _x2) {
13082
+ return _ref.apply(this, arguments);
13083
+ };
13084
+ }();
13085
+
13086
+ var createCallForReserve = /*#__PURE__*/function () {
13087
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, reserveChain, options) {
13088
+ var api, destination, address, senderAddress, currency, feeCurrency, serialized, tx, dryRunResult, success;
13089
+ return _regenerator().w(function (_context) {
13090
+ while (1) switch (_context.n) {
13091
+ case 0:
13092
+ api = options.api, destination = options.destination, address = options.address, senderAddress = options.senderAddress, currency = options.currency, feeCurrency = options.feeCurrency;
13093
+ _context.n = 1;
13094
+ return createTypeAndThenCall(chain, options, reserveChain);
13095
+ case 1:
13096
+ serialized = _context.v;
13097
+ assertAddressIsString(address);
13098
+ assertToIsString(destination, 'Location destination is not supported for reserve auto-selection.');
13099
+ assertSenderAddress(senderAddress);
13100
+ tx = api.callTxMethod(serialized);
13101
+ _context.n = 2;
13102
+ return dryRunInternal({
13103
+ api: api,
13104
+ tx: tx,
13105
+ origin: chain,
13106
+ destination: destination,
13107
+ address: address,
13108
+ senderAddress: senderAddress,
13109
+ currency: currency,
13110
+ feeAsset: feeCurrency,
13111
+ useRootOrigin: true
13112
+ });
13113
+ case 2:
13114
+ dryRunResult = _context.v;
13115
+ success = !dryRunResult.failureReason;
13116
+ return _context.a(2, {
13117
+ call: serialized,
13118
+ success: success
13119
+ });
13120
+ }
13121
+ }, _callee);
13122
+ }));
13123
+ return function createCallForReserve(_x, _x2, _x3) {
12508
13124
  return _ref.apply(this, arguments);
12509
13125
  };
12510
13126
  }();
13127
+ /**
13128
+ * Creates a type-and-then call but auto-selects the asset reserve between AssetHub and the Relay chain
13129
+ * by dry-running both variants and preferring the one that succeeds. If both fail, returns the
13130
+ * AssetHub variant. Supports only relaychain assets.
13131
+ */
13132
+ var createTypeThenAutoReserve = /*#__PURE__*/function () {
13133
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(chain, options) {
13134
+ var originSupports, destSupports, reserve, relay, assetHubReserve, ahResult, relayResult;
13135
+ return _regenerator().w(function (_context2) {
13136
+ while (1) switch (_context2.n) {
13137
+ case 0:
13138
+ // Use dry-run path only when BOTH origin and destination support it
13139
+ originSupports = assets.hasDryRunSupport(chain);
13140
+ destSupports = options.destChain ? assets.hasDryRunSupport(options.destChain) : false;
13141
+ if (originSupports && destSupports) {
13142
+ _context2.n = 5;
13143
+ break;
13144
+ }
13145
+ _context2.n = 1;
13146
+ return selectReserveByBalance(chain, options);
13147
+ case 1:
13148
+ reserve = _context2.v;
13149
+ if (!reserve) {
13150
+ _context2.n = 3;
13151
+ break;
13152
+ }
13153
+ _context2.n = 2;
13154
+ return createTypeAndThenCall(chain, options, reserve);
13155
+ case 2:
13156
+ return _context2.a(2, _context2.v);
13157
+ case 3:
13158
+ _context2.n = 4;
13159
+ return createTypeAndThenCall(chain, options);
13160
+ case 4:
13161
+ return _context2.a(2, _context2.v);
13162
+ case 5:
13163
+ relay = getRelayChainOf(chain);
13164
+ assetHubReserve = "AssetHub".concat(relay);
13165
+ _context2.n = 6;
13166
+ return createCallForReserve(chain, assetHubReserve, options);
13167
+ case 6:
13168
+ ahResult = _context2.v;
13169
+ if (!ahResult.success) {
13170
+ _context2.n = 7;
13171
+ break;
13172
+ }
13173
+ return _context2.a(2, ahResult.call);
13174
+ case 7:
13175
+ _context2.n = 8;
13176
+ return createCallForReserve(chain, relay, options);
13177
+ case 8:
13178
+ relayResult = _context2.v;
13179
+ if (!relayResult.success) {
13180
+ _context2.n = 9;
13181
+ break;
13182
+ }
13183
+ return _context2.a(2, relayResult.call);
13184
+ case 9:
13185
+ return _context2.a(2, ahResult.call);
13186
+ }
13187
+ }, _callee2);
13188
+ }));
13189
+ return function createTypeThenAutoReserve(_x4, _x5) {
13190
+ return _ref2.apply(this, arguments);
13191
+ };
13192
+ }();
12511
13193
 
12512
13194
  var calculateTotalXcmFee = function calculateTotalXcmFee(feeResult) {
12513
13195
  var _feeResult$assetHub;
@@ -12740,6 +13422,54 @@ var AssetClaimBuilder = /*#__PURE__*/function () {
12740
13422
  }]);
12741
13423
  }();
12742
13424
 
13425
+ var normalizeAmountAll = /*#__PURE__*/function () {
13426
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(api, buildTx, options) {
13427
+ var currency, isAmountAll, transferable;
13428
+ return _regenerator().w(function (_context) {
13429
+ while (1) switch (_context.n) {
13430
+ case 0:
13431
+ currency = options.currency;
13432
+ isAmountAll = !Array.isArray(currency) && currency.amount === AMOUNT_ALL;
13433
+ if (isAmountAll) {
13434
+ _context.n = 1;
13435
+ break;
13436
+ }
13437
+ return _context.a(2, _objectSpread2({
13438
+ api: api,
13439
+ isAmountAll: isAmountAll
13440
+ }, options));
13441
+ case 1:
13442
+ assertToIsString(options.to);
13443
+ assertSenderAddress(options.senderAddress);
13444
+ _context.n = 2;
13445
+ return getTransferableAmountInternal({
13446
+ api: api,
13447
+ buildTx: buildTx,
13448
+ origin: options.from,
13449
+ destination: options.to,
13450
+ senderAddress: options.senderAddress,
13451
+ feeAsset: options.feeAsset,
13452
+ currency: _objectSpread2(_objectSpread2({}, currency), {}, {
13453
+ amount: MIN_AMOUNT
13454
+ })
13455
+ });
13456
+ case 2:
13457
+ transferable = _context.v;
13458
+ return _context.a(2, _objectSpread2(_objectSpread2({}, options), {}, {
13459
+ api: api,
13460
+ isAmountAll: isAmountAll,
13461
+ currency: _objectSpread2(_objectSpread2({}, currency), {}, {
13462
+ amount: transferable
13463
+ })
13464
+ }));
13465
+ }
13466
+ }, _callee);
13467
+ }));
13468
+ return function normalizeAmountAll(_x, _x2, _x3) {
13469
+ return _ref.apply(this, arguments);
13470
+ };
13471
+ }();
13472
+
12743
13473
  var BatchTransactionManager = /*#__PURE__*/function () {
12744
13474
  function BatchTransactionManager() {
12745
13475
  _classCallCheck(this, BatchTransactionManager);
@@ -12758,25 +13488,25 @@ var BatchTransactionManager = /*#__PURE__*/function () {
12758
13488
  }, {
12759
13489
  key: "buildBatch",
12760
13490
  value: function () {
12761
- var _buildBatch = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(api, from) {
13491
+ var _buildBatch = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(api, from) {
12762
13492
  var options,
12763
13493
  mode,
12764
13494
  sameFrom,
12765
- results,
13495
+ normalized,
12766
13496
  txs,
12767
- _args = arguments;
12768
- return _regenerator().w(function (_context) {
12769
- while (1) switch (_context.n) {
13497
+ _args2 = arguments;
13498
+ return _regenerator().w(function (_context2) {
13499
+ while (1) switch (_context2.n) {
12770
13500
  case 0:
12771
- options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {
13501
+ options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {
12772
13502
  mode: exports.BatchMode.BATCH_ALL
12773
13503
  };
12774
- _context.n = 1;
13504
+ _context2.n = 1;
12775
13505
  return api.init(from, TX_CLIENT_TIMEOUT_MS);
12776
13506
  case 1:
12777
13507
  mode = options.mode;
12778
13508
  if (!(this.transactionOptions.length === 0)) {
12779
- _context.n = 2;
13509
+ _context2.n = 2;
12780
13510
  break;
12781
13511
  }
12782
13512
  throw new InvalidParameterError('No transactions to batch.');
@@ -12785,21 +13515,38 @@ var BatchTransactionManager = /*#__PURE__*/function () {
12785
13515
  return tx.from === from;
12786
13516
  });
12787
13517
  if (sameFrom) {
12788
- _context.n = 3;
13518
+ _context2.n = 3;
12789
13519
  break;
12790
13520
  }
12791
13521
  throw new InvalidParameterError('All transactions must have the same origin.');
12792
13522
  case 3:
12793
- results = this.transactionOptions.map(function (options) {
12794
- return send(options);
12795
- });
12796
- _context.n = 4;
12797
- return Promise.all(results);
13523
+ _context2.n = 4;
13524
+ return Promise.all(this.transactionOptions.map(/*#__PURE__*/function () {
13525
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(opts) {
13526
+ var buildTx;
13527
+ return _regenerator().w(function (_context) {
13528
+ while (1) switch (_context.n) {
13529
+ case 0:
13530
+ buildTx = opts.buildTx;
13531
+ return _context.a(2, normalizeAmountAll(api, buildTx, opts));
13532
+ }
13533
+ }, _callee);
13534
+ }));
13535
+ return function (_x3) {
13536
+ return _ref.apply(this, arguments);
13537
+ };
13538
+ }()));
12798
13539
  case 4:
12799
- txs = _context.v;
12800
- return _context.a(2, api.callBatchMethod(txs, mode));
13540
+ normalized = _context2.v;
13541
+ _context2.n = 5;
13542
+ return Promise.all(normalized.map(function (o) {
13543
+ return send(o);
13544
+ }));
13545
+ case 5:
13546
+ txs = _context2.v;
13547
+ return _context2.a(2, api.callBatchMethod(txs, mode));
12801
13548
  }
12802
- }, _callee, this);
13549
+ }, _callee2, this);
12803
13550
  }));
12804
13551
  function buildBatch(_x, _x2) {
12805
13552
  return _buildBatch.apply(this, arguments);
@@ -12992,9 +13739,12 @@ var GeneralBuilder = /*#__PURE__*/function () {
12992
13739
  }, {
12993
13740
  key: "addToBatch",
12994
13741
  value: function addToBatch() {
12995
- this.batchManager.addTransaction(_objectSpread2({
13742
+ var buildTx = this.createTxFactory();
13743
+ this.batchManager.addTransaction(_objectSpread2(_objectSpread2({
12996
13744
  api: this.api
12997
- }, this._options));
13745
+ }, this._options), {}, {
13746
+ buildTx: buildTx
13747
+ }));
12998
13748
  return new GeneralBuilder(this.api, this.batchManager, {
12999
13749
  from: this._options.from
13000
13750
  });
@@ -13035,10 +13785,16 @@ var GeneralBuilder = /*#__PURE__*/function () {
13035
13785
  key: "build",
13036
13786
  value: (function () {
13037
13787
  var _build = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
13788
+ var _yield$this$buildComm, tx;
13038
13789
  return _regenerator().w(function (_context2) {
13039
13790
  while (1) switch (_context2.n) {
13040
13791
  case 0:
13041
- return _context2.a(2, this.buildCommon());
13792
+ _context2.n = 1;
13793
+ return this.buildCommon();
13794
+ case 1:
13795
+ _yield$this$buildComm = _context2.v;
13796
+ tx = _yield$this$buildComm.tx;
13797
+ return _context2.a(2, tx);
13042
13798
  }
13043
13799
  }, _callee2, this);
13044
13800
  }));
@@ -13055,13 +13811,16 @@ var GeneralBuilder = /*#__PURE__*/function () {
13055
13811
  _this$_options,
13056
13812
  from,
13057
13813
  to,
13814
+ builder,
13815
+ createTx,
13816
+ normalizedOptions,
13058
13817
  tx,
13059
13818
  _args3 = arguments;
13060
13819
  return _regenerator().w(function (_context3) {
13061
13820
  while (1) switch (_context3.n) {
13062
13821
  case 0:
13063
13822
  isCalledInternally = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
13064
- if (this.batchManager.isEmpty()) {
13823
+ if (!(!this.batchManager.isEmpty() && !isCalledInternally)) {
13065
13824
  _context3.n = 1;
13066
13825
  break;
13067
13826
  }
@@ -13074,16 +13833,25 @@ var GeneralBuilder = /*#__PURE__*/function () {
13074
13833
  }
13075
13834
  throw new InvalidParameterError('Transfers between relay chains are not yet supported.');
13076
13835
  case 2:
13836
+ builder = this.currency(_objectSpread2(_objectSpread2({}, this._options.currency), {}, {
13837
+ amount: MIN_AMOUNT.toString()
13838
+ }));
13839
+ createTx = builder.createTxFactory();
13077
13840
  _context3.n = 3;
13078
- return send(_objectSpread2({
13079
- api: this.api
13080
- }, this._options));
13841
+ return normalizeAmountAll(this.api, createTx, this._options);
13081
13842
  case 3:
13082
- tx = _context3.v;
13843
+ normalizedOptions = _context3.v;
13083
13844
  _context3.n = 4;
13084
- return this.maybePerformXcmFormatCheck(tx, this._options, isCalledInternally);
13845
+ return send(normalizedOptions);
13085
13846
  case 4:
13086
- return _context3.a(2, tx);
13847
+ tx = _context3.v;
13848
+ _context3.n = 5;
13849
+ return this.maybePerformXcmFormatCheck(tx, normalizedOptions, isCalledInternally);
13850
+ case 5:
13851
+ return _context3.a(2, {
13852
+ tx: tx,
13853
+ options: normalizedOptions
13854
+ });
13087
13855
  }
13088
13856
  }, _callee3, this);
13089
13857
  }));
@@ -13134,15 +13902,17 @@ var GeneralBuilder = /*#__PURE__*/function () {
13134
13902
  key: "dryRun",
13135
13903
  value: function () {
13136
13904
  var _dryRun = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
13137
- var tx;
13905
+ var _yield$this$buildInte, tx, options;
13138
13906
  return _regenerator().w(function (_context5) {
13139
13907
  while (1) switch (_context5.n) {
13140
13908
  case 0:
13141
13909
  _context5.n = 1;
13142
13910
  return this.buildInternal();
13143
13911
  case 1:
13144
- tx = _context5.v;
13145
- return _context5.a(2, buildDryRun(this.api, tx, this._options));
13912
+ _yield$this$buildInte = _context5.v;
13913
+ tx = _yield$this$buildInte.tx;
13914
+ options = _yield$this$buildInte.options;
13915
+ return _context5.a(2, buildDryRun(this.api, tx, options));
13146
13916
  }
13147
13917
  }, _callee5, this);
13148
13918
  }));
@@ -13154,18 +13924,20 @@ var GeneralBuilder = /*#__PURE__*/function () {
13154
13924
  }, {
13155
13925
  key: "dryRunPreview",
13156
13926
  value: function () {
13157
- var _dryRunPreview = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(options) {
13158
- var tx;
13927
+ var _dryRunPreview = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(dryRunOptions) {
13928
+ var _yield$this$buildInte2, tx, options;
13159
13929
  return _regenerator().w(function (_context6) {
13160
13930
  while (1) switch (_context6.n) {
13161
13931
  case 0:
13162
13932
  _context6.n = 1;
13163
13933
  return this.buildInternal();
13164
13934
  case 1:
13165
- tx = _context6.v;
13166
- return _context6.a(2, buildDryRun(this.api, tx, this._options, {
13935
+ _yield$this$buildInte2 = _context6.v;
13936
+ tx = _yield$this$buildInte2.tx;
13937
+ options = _yield$this$buildInte2.options;
13938
+ return _context6.a(2, buildDryRun(this.api, tx, options, {
13167
13939
  sentAssetMintMode: 'preview',
13168
- mintFeeAssets: options === null || options === void 0 ? void 0 : options.mintFeeAssets
13940
+ mintFeeAssets: dryRunOptions === null || dryRunOptions === void 0 ? void 0 : dryRunOptions.mintFeeAssets
13169
13941
  }));
13170
13942
  }
13171
13943
  }, _callee6, this);
@@ -13303,7 +14075,7 @@ var GeneralBuilder = /*#__PURE__*/function () {
13303
14075
  key: "getXcmFeeEstimate",
13304
14076
  value: (function () {
13305
14077
  var _getXcmFeeEstimate2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {
13306
- var _this$_options4, from, to, address, senderAddress, currency, tx;
14078
+ var _this$_options4, from, to, address, senderAddress, currency, _yield$this$buildInte3, tx;
13307
14079
  return _regenerator().w(function (_context9) {
13308
14080
  while (1) switch (_context9.p = _context9.n) {
13309
14081
  case 0:
@@ -13313,7 +14085,8 @@ var GeneralBuilder = /*#__PURE__*/function () {
13313
14085
  _context9.n = 1;
13314
14086
  return this.buildInternal();
13315
14087
  case 1:
13316
- tx = _context9.v;
14088
+ _yield$this$buildInte3 = _context9.v;
14089
+ tx = _yield$this$buildInte3.tx;
13317
14090
  _context9.p = 2;
13318
14091
  _context9.n = 3;
13319
14092
  return getXcmFeeEstimate({
@@ -13353,7 +14126,7 @@ var GeneralBuilder = /*#__PURE__*/function () {
13353
14126
  key: "getOriginXcmFeeEstimate",
13354
14127
  value: (function () {
13355
14128
  var _getOriginXcmFeeEstimate2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {
13356
- var _this$_options5, from, to, senderAddress, currency, tx;
14129
+ var _this$_options5, from, to, senderAddress, currency, _yield$this$buildInte4, tx;
13357
14130
  return _regenerator().w(function (_context0) {
13358
14131
  while (1) switch (_context0.p = _context0.n) {
13359
14132
  case 0:
@@ -13362,7 +14135,8 @@ var GeneralBuilder = /*#__PURE__*/function () {
13362
14135
  _context0.n = 1;
13363
14136
  return this.buildInternal();
13364
14137
  case 1:
13365
- tx = _context0.v;
14138
+ _yield$this$buildInte4 = _context0.v;
14139
+ tx = _yield$this$buildInte4.tx;
13366
14140
  _context0.p = 2;
13367
14141
  _context0.n = 3;
13368
14142
  return getOriginXcmFeeEstimate({
@@ -13615,6 +14389,7 @@ exports.createExecuteCall = createExecuteCall;
13615
14389
  exports.createExecuteExchangeXcm = createExecuteExchangeXcm;
13616
14390
  exports.createTx = createTx;
13617
14391
  exports.createTypeAndThenCall = createTypeAndThenCall;
14392
+ exports.createTypeThenAutoReserve = createTypeThenAutoReserve;
13618
14393
  exports.createVersionedAssets = createVersionedAssets;
13619
14394
  exports.createX1Payload = createX1Payload;
13620
14395
  exports.deriveAccountId = deriveAccountId;