@paraspell/sdk-core 11.8.5 → 11.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -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;
@@ -908,7 +922,7 @@ var getRelayChainOf = function getRelayChainOf(chain) {
908
922
  };
909
923
 
910
924
  var AssetHubPolkadot$1 = {
911
- name: "AssetHub",
925
+ name: "Asset Hub",
912
926
  info: "PolkadotAssetHub",
913
927
  paraId: 1000,
914
928
  providers: [
@@ -1009,10 +1023,6 @@ var Astar$1 = {
1009
1023
  name: "Astar",
1010
1024
  endpoint: "wss://rpc.astar.network"
1011
1025
  },
1012
- {
1013
- name: "Automata 1RPC",
1014
- endpoint: "wss://1rpc.io/astr"
1015
- },
1016
1026
  {
1017
1027
  name: "Blast",
1018
1028
  endpoint: "wss://astar.public.blastapi.io"
@@ -1051,15 +1061,11 @@ var BifrostPolkadot$1 = {
1051
1061
  {
1052
1062
  name: "LiebiEU",
1053
1063
  endpoint: "wss://eu.bifrost-polkadot-rpc.liebi.com/ws"
1054
- },
1055
- {
1056
- name: "RadiumBlock",
1057
- endpoint: "wss://bifrost.public.curie.radiumblock.co/ws"
1058
1064
  }
1059
1065
  ]
1060
1066
  };
1061
1067
  var BridgeHubPolkadot$1 = {
1062
- name: "BridgeHub",
1068
+ name: "Bridge Hub",
1063
1069
  info: "polkadotBridgeHub",
1064
1070
  paraId: 1002,
1065
1071
  providers: [
@@ -1208,16 +1214,16 @@ var Interlay$1 = {
1208
1214
  };
1209
1215
  var Heima$1 = {
1210
1216
  name: "Heima",
1211
- info: "litentry",
1217
+ info: "heima",
1212
1218
  paraId: 2013,
1213
1219
  providers: [
1214
1220
  {
1215
1221
  name: "Dwellir",
1216
- endpoint: "wss://litentry-rpc.dwellir.com"
1222
+ endpoint: "wss://heima-rpc.n.dwellir.com"
1217
1223
  },
1218
1224
  {
1219
- name: "Litentry",
1220
- endpoint: "wss://rpc.litentry-parachain.litentry.io"
1225
+ name: "Heima",
1226
+ endpoint: "wss://rpc.heima-parachain.heima.network"
1221
1227
  }
1222
1228
  ]
1223
1229
  };
@@ -1642,7 +1648,7 @@ var Xode$1 = {
1642
1648
  ]
1643
1649
  };
1644
1650
  var AssetHubKusama$1 = {
1645
- name: "AssetHub",
1651
+ name: "Asset Hub",
1646
1652
  info: "KusamaAssetHub",
1647
1653
  paraId: 1000,
1648
1654
  providers: [
@@ -1685,7 +1691,7 @@ var AssetHubKusama$1 = {
1685
1691
  ]
1686
1692
  };
1687
1693
  var BridgeHubKusama$1 = {
1688
- name: "BridgeHub",
1694
+ name: "Bridge Hub",
1689
1695
  info: "kusamaBridgeHub",
1690
1696
  paraId: 1002,
1691
1697
  providers: [
@@ -1987,10 +1993,6 @@ var Quartz$1 = {
1987
1993
  name: "Geo Load Balancer",
1988
1994
  endpoint: "wss://ws-quartz.unique.network"
1989
1995
  },
1990
- {
1991
- name: "Unique Asia",
1992
- endpoint: "wss://asia-ws-quartz.unique.network"
1993
- },
1994
1996
  {
1995
1997
  name: "Unique Europe",
1996
1998
  endpoint: "wss://eu-ws-quartz.unique.network"
@@ -2082,7 +2084,7 @@ var Zeitgeist$1 = {
2082
2084
  ]
2083
2085
  };
2084
2086
  var AssetHubWestend$1 = {
2085
- name: "AssetHub",
2087
+ name: "Asset Hub",
2086
2088
  info: "WestendAssetHub",
2087
2089
  paraId: 1000,
2088
2090
  providers: [
@@ -2105,7 +2107,7 @@ var AssetHubWestend$1 = {
2105
2107
  ]
2106
2108
  };
2107
2109
  var BridgeHubWestend$1 = {
2108
- name: "BridgeHub",
2110
+ name: "Bridge Hub",
2109
2111
  info: "westendBridgeHub",
2110
2112
  paraId: 1002,
2111
2113
  providers: [
@@ -2195,7 +2197,7 @@ var AjunaPaseo$1 = {
2195
2197
  ]
2196
2198
  };
2197
2199
  var AssetHubPaseo$1 = {
2198
- name: "AssetHub",
2200
+ name: "Asset Hub",
2199
2201
  info: "PaseoAssetHub",
2200
2202
  paraId: 1000,
2201
2203
  providers: [
@@ -2233,7 +2235,7 @@ var BifrostPaseo$1 = {
2233
2235
  ]
2234
2236
  };
2235
2237
  var BridgeHubPaseo$1 = {
2236
- name: "BridgeHub",
2238
+ name: "Bridge Hub",
2237
2239
  info: "PaseoBridgeHub",
2238
2240
  paraId: 1002,
2239
2241
  providers: [
@@ -2400,7 +2402,7 @@ var ZeitgeistPaseo$1 = {
2400
2402
  ]
2401
2403
  };
2402
2404
  var Polkadot = {
2403
- name: "Polkadot",
2405
+ name: "Polkadot Relay",
2404
2406
  info: "polkadot",
2405
2407
  paraId: 0,
2406
2408
  providers: [
@@ -2463,7 +2465,7 @@ var Polkadot = {
2463
2465
  ]
2464
2466
  };
2465
2467
  var Kusama = {
2466
- name: "Kusama",
2468
+ name: "Kusama Relay",
2467
2469
  info: "kusama",
2468
2470
  paraId: 0,
2469
2471
  providers: [
@@ -2514,7 +2516,7 @@ var Kusama = {
2514
2516
  ]
2515
2517
  };
2516
2518
  var Westend = {
2517
- name: "Westend",
2519
+ name: "Westend Relay",
2518
2520
  info: "westend",
2519
2521
  paraId: 0,
2520
2522
  providers: [
@@ -2541,7 +2543,7 @@ var Westend = {
2541
2543
  ]
2542
2544
  };
2543
2545
  var Paseo = {
2544
- name: "Paseo",
2546
+ name: "Paseo Relay",
2545
2547
  info: "paseo",
2546
2548
  paraId: 0,
2547
2549
  providers: [
@@ -3291,6 +3293,7 @@ var getAssetReserveChain = function getAssetReserveChain(chain, destChain, asset
3291
3293
  Here: null
3292
3294
  }
3293
3295
  })) {
3296
+ if (relaychain === 'Paseo') return ahChain;
3294
3297
  return CHAINS_DOT_RESERVE_AH.has(destChain) ? ahChain : relaychain;
3295
3298
  }
3296
3299
  return chain;
@@ -3774,49 +3777,6 @@ var getReverseTxFee = /*#__PURE__*/function () {
3774
3777
  };
3775
3778
  }();
3776
3779
 
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
3780
  // Inspired by Moonbeam XCM-SDK
3821
3781
  // https://github.com/moonbeam-foundation/xcm-sdk/blob/ab835c15bf41612604b1c858d956a9f07705ed65/packages/utils/src/format/asset.ts#L1
3822
3782
  var formatAssetIdToERC20 = function formatAssetIdToERC20(id) {
@@ -3897,7 +3857,7 @@ var getBalanceForeignPolkadotXcm = /*#__PURE__*/function () {
3897
3857
  assertHasLocation(asset);
3898
3858
  return _context.a(2, api.getBalanceForeignAssetsPallet(address, asset.location));
3899
3859
  case 3:
3900
- if (!(chain === 'AssetHubPolkadot')) {
3860
+ if (!chain.startsWith('AssetHub')) {
3901
3861
  _context.n = 5;
3902
3862
  break;
3903
3863
  }
@@ -3911,7 +3871,7 @@ var getBalanceForeignPolkadotXcm = /*#__PURE__*/function () {
3911
3871
  case 4:
3912
3872
  return _context.a(2, api.getBalanceForeignAssetsPallet(address, asset.location));
3913
3873
  case 5:
3914
- return _context.a(2, api.getBalanceForeignPolkadotXcm(address, asset.assetId));
3874
+ return _context.a(2, api.getBalanceForeignPolkadotXcm(chain, address, asset));
3915
3875
  }
3916
3876
  }, _callee);
3917
3877
  }));
@@ -4239,77 +4199,6 @@ var getAssetBalance = /*#__PURE__*/function () {
4239
4199
  };
4240
4200
  }();
4241
4201
 
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
4202
  var isSufficientOrigin = /*#__PURE__*/function () {
4314
4203
  var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(api, origin, destination, senderAddress, feeNative, currency, asset, feeAsset) {
4315
4204
  var edNative, balanceNative, isNativeAssetToOrigin, isNativeAssetToDest, isSufficientNative, balanceAsset, edAsset, isSufficientAsset;
@@ -4497,7 +4386,7 @@ var getDestXcmFee = /*#__PURE__*/function () {
4497
4386
  _context2.n = 5;
4498
4387
  break;
4499
4388
  }
4500
- throw _t2;
4389
+ return _context2.a(2, 0n);
4501
4390
  case 5:
4502
4391
  _context2.n = 6;
4503
4392
  return attempt(swapConfig.exchangeChain, swapConfig.currencyTo, swapConfig.amountOut);
@@ -5932,20 +5821,15 @@ var handleToAhTeleport = /*#__PURE__*/function () {
5932
5821
  while (1) switch (_context.n) {
5933
5822
  case 0:
5934
5823
  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:
5824
+ assertToIsString(destination, 'Location destination is not supported for AH teleport.');
5941
5825
  if (!sdkCommon.isTLocation(address)) {
5942
- _context.n = 2;
5826
+ _context.n = 1;
5943
5827
  break;
5944
5828
  }
5945
5829
  throw new InvalidParameterError('Location address is not supported for this scenario');
5946
- case 2:
5830
+ case 1:
5947
5831
  assertSenderAddress(senderAddress);
5948
- _context.n = 3;
5832
+ _context.n = 2;
5949
5833
  return dryRunInternal({
5950
5834
  api: api,
5951
5835
  tx: defaultTx,
@@ -5955,19 +5839,19 @@ var handleToAhTeleport = /*#__PURE__*/function () {
5955
5839
  address: address,
5956
5840
  currency: currency
5957
5841
  });
5958
- case 3:
5842
+ case 2:
5959
5843
  dryRunResult = _context.v;
5960
5844
  if (!((_dryRunResult$destina = dryRunResult.destination) !== null && _dryRunResult$destina !== void 0 && _dryRunResult$destina.success)) {
5961
- _context.n = 4;
5845
+ _context.n = 3;
5962
5846
  break;
5963
5847
  }
5964
5848
  return _context.a(2, defaultTx);
5965
- case 4:
5849
+ case 3:
5966
5850
  // If the default tx dry run failed, we need to create execute transaction
5967
5851
  dummyTx = createExecuteExchangeXcm(input, origin, MAX_WEIGHT,
5968
5852
  // Enter dummy fee values just to get the dry run to pass
5969
5853
  asset.amount, asset.amount / 2n);
5970
- _context.n = 5;
5854
+ _context.n = 4;
5971
5855
  return getXcmFeeInternal({
5972
5856
  api: api,
5973
5857
  tx: dummyTx,
@@ -5979,7 +5863,7 @@ var handleToAhTeleport = /*#__PURE__*/function () {
5979
5863
  disableFallback: false,
5980
5864
  useRootOrigin: true
5981
5865
  });
5982
- case 5:
5866
+ case 4:
5983
5867
  feeResult = _context.v;
5984
5868
  originExecutionFee = padFeeBy(feeResult.origin.fee, 20); // Pad by 20%
5985
5869
  destinationExecutionFee = padFeeBy(
@@ -6202,7 +6086,7 @@ var Parachain = /*#__PURE__*/function () {
6202
6086
  key: "transfer",
6203
6087
  value: function () {
6204
6088
  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;
6089
+ 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
6090
  return _regenerator().w(function (_context) {
6207
6091
  while (1) switch (_context.n) {
6208
6092
  case 0:
@@ -6225,7 +6109,7 @@ var Parachain = /*#__PURE__*/function () {
6225
6109
  case 2:
6226
6110
  this.throwIfTempDisabled(sendOptions, destChain);
6227
6111
  this.throwIfCantReceive(destChain);
6228
- isRelayAsset = sdkCommon.deepEqual(asset.location, RELAY_LOCATION);
6112
+ isRelayAsset = sdkCommon.deepEqual(asset.location, RELAY_LOCATION) && assets.isSymbolMatch(assets.getRelayChainSymbol(this.chain), asset.symbol);
6229
6113
  _context.n = 3;
6230
6114
  return api.hasMethod('PolkadotXcm', 'transfer_assets_using_type_and_then');
6231
6115
  case 3:
@@ -6236,7 +6120,7 @@ var Parachain = /*#__PURE__*/function () {
6236
6120
  }
6237
6121
  throw new InvalidParameterError('Relaychain assets can only be transferred using the type-and-then method which is not supported by this chain');
6238
6122
  case 4:
6239
- useTypeAndThen = isRelayAsset && supportsTypeThen && destChain && (!sdkCommon.isTrustedChain(this.chain) || !sdkCommon.isTrustedChain(destChain));
6123
+ useTypeAndThen = isRelayAsset && supportsTypeThen && destChain && !feeAsset && (!sdkCommon.isTrustedChain(this.chain) || !sdkCommon.isTrustedChain(destChain));
6240
6124
  if (!(supportsXTokens(this) && this.canUseXTokens(sendOptions) && !useTypeAndThen)) {
6241
6125
  _context.n = 6;
6242
6126
  break;
@@ -6283,7 +6167,7 @@ var Parachain = /*#__PURE__*/function () {
6283
6167
  }));
6284
6168
  case 7:
6285
6169
  if (!(supportsPolkadotXCM(this) || useTypeAndThen)) {
6286
- _context.n = 13;
6170
+ _context.n = 16;
6287
6171
  break;
6288
6172
  }
6289
6173
  options = {
@@ -6336,7 +6220,7 @@ var Parachain = /*#__PURE__*/function () {
6336
6220
  isExternalAssetViaAh = isExternalAsset && !isAHPOrigin && !isAHPDest && !isEthDest && !feeAsset; // External asset - Any origin to AHP - DestinationReserve - one DepositAsset instruction
6337
6221
  isExternalAssetToAh = isExternalAsset && isAHPDest && !isAHPOrigin && !isEthDest && !feeAsset;
6338
6222
  if (!(isExternalAssetViaAh || isExternalAssetToAh || useTypeAndThen)) {
6339
- _context.n = 12;
6223
+ _context.n = 15;
6340
6224
  break;
6341
6225
  }
6342
6226
  if (!(useTypeAndThen && supportsPolkadotXCM(this))) {
@@ -6346,20 +6230,33 @@ var Parachain = /*#__PURE__*/function () {
6346
6230
  _context.n = 10;
6347
6231
  return this.transferPolkadotXCM(options);
6348
6232
  case 10:
6233
+ if (!isRelayAsset) {
6234
+ _context.n = 12;
6235
+ break;
6236
+ }
6349
6237
  _context.n = 11;
6350
- return createTypeAndThenCall(this.chain, options);
6238
+ return createTypeThenAutoReserve(this.chain, options);
6351
6239
  case 11:
6352
- call = _context.v;
6353
- return _context.a(2, api.callTxMethod(call));
6240
+ _t = _context.v;
6241
+ _context.n = 14;
6242
+ break;
6354
6243
  case 12:
6244
+ _context.n = 13;
6245
+ return createTypeAndThenCall(this.chain, options);
6246
+ case 13:
6247
+ _t = _context.v;
6248
+ case 14:
6249
+ call = _t;
6250
+ return _context.a(2, api.callTxMethod(call));
6251
+ case 15:
6355
6252
  if (!supportsPolkadotXCM(this)) {
6356
- _context.n = 13;
6253
+ _context.n = 16;
6357
6254
  break;
6358
6255
  }
6359
6256
  return _context.a(2, this.transferPolkadotXCM(options));
6360
- case 13:
6257
+ case 16:
6361
6258
  throw new NoXCMSupportImplementedError(this._chain);
6362
- case 14:
6259
+ case 17:
6363
6260
  return _context.a(2);
6364
6261
  }
6365
6262
  }, _callee, this);
@@ -6386,7 +6283,8 @@ var Parachain = /*#__PURE__*/function () {
6386
6283
  if (isSendingDisabled) {
6387
6284
  throw new InvalidParameterError("Sending from ".concat(this.chain, " is temporarily disabled"));
6388
6285
  }
6389
- var isReceivingDisabled = destChain && !sdkCommon.isRelayChain(destChain) && !sdkCommon.isExternalChain(destChain) && getChain(destChain).isReceivingTempDisabled(options);
6286
+ var scenario = resolveScenario(this.chain, options.to);
6287
+ var isReceivingDisabled = destChain && !sdkCommon.isRelayChain(destChain) && !sdkCommon.isExternalChain(destChain) && getChain(destChain).isReceivingTempDisabled(scenario);
6390
6288
  if (isReceivingDisabled) {
6391
6289
  throw new InvalidParameterError("Receiving on ".concat(destChain, " is temporarily disabled"));
6392
6290
  }
@@ -6398,7 +6296,7 @@ var Parachain = /*#__PURE__*/function () {
6398
6296
  }
6399
6297
  }, {
6400
6298
  key: "isReceivingTempDisabled",
6401
- value: function isReceivingTempDisabled(_options) {
6299
+ value: function isReceivingTempDisabled(_scenario) {
6402
6300
  return false;
6403
6301
  }
6404
6302
  }, {
@@ -6434,39 +6332,46 @@ var Parachain = /*#__PURE__*/function () {
6434
6332
  key: "transferRelayToPara",
6435
6333
  value: function () {
6436
6334
  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;
6335
+ var api, version, pallet, assetInfo, address, senderAddress, destination, paraIdTo, methodOverride, _this$getRelayToParaO, method, includeFee, customMethod, paraId, destChain, scenario;
6438
6336
  return _regenerator().w(function (_context2) {
6439
6337
  while (1) switch (_context2.n) {
6440
6338
  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;
6339
+ 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
6340
  _this$getRelayToParaO = this.getRelayToParaOverrides(), method = _this$getRelayToParaO.method, includeFee = _this$getRelayToParaO.includeFee;
6341
+ if (!this.isReceivingTempDisabled('RelayToPara')) {
6342
+ _context2.n = 1;
6343
+ break;
6344
+ }
6345
+ throw new InvalidParameterError("Receiving on ".concat(this.chain, " is temporarily disabled"));
6346
+ case 1:
6443
6347
  customMethod = methodOverride !== null && methodOverride !== void 0 ? methodOverride : method;
6444
6348
  if (!(customMethod === 'transfer_assets_using_type_and_then')) {
6445
- _context2.n = 2;
6349
+ _context2.n = 3;
6446
6350
  break;
6447
6351
  }
6448
6352
  paraId = resolveParaId(paraIdTo, destination);
6449
6353
  destChain = resolveDestChain(this.chain, paraId);
6450
6354
  scenario = 'RelayToPara';
6451
6355
  if (destChain) {
6452
- _context2.n = 1;
6356
+ _context2.n = 2;
6453
6357
  break;
6454
6358
  }
6455
6359
  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), {}, {
6360
+ case 2:
6361
+ return _context2.a(2, createTypeThenAutoReserve(getRelayChainOf(destChain), _objectSpread2(_objectSpread2({}, options), {}, {
6458
6362
  beneficiaryLocation: createBeneficiaryLocation({
6459
6363
  api: api,
6460
6364
  address: address,
6461
6365
  version: version
6462
6366
  }),
6367
+ senderAddress: senderAddress,
6463
6368
  asset: this.createCurrencySpec(assetInfo.amount, scenario, version, assetInfo, false),
6464
6369
  destLocation: createDestination(version, this.chain, destination, paraId),
6465
6370
  scenario: scenario,
6466
6371
  destChain: destChain,
6467
6372
  paraIdTo: paraId
6468
6373
  })));
6469
- case 2:
6374
+ case 3:
6470
6375
  return _context2.a(2, {
6471
6376
  module: pallet !== null && pallet !== void 0 ? pallet : 'XcmPallet',
6472
6377
  method: customMethod,
@@ -7730,6 +7635,16 @@ var ComposableFinance = /*#__PURE__*/function (_Parachain) {
7730
7635
  assertHasId(asset);
7731
7636
  return transferXTokens(input, BigInt(asset.assetId));
7732
7637
  }
7638
+ }, {
7639
+ key: "isSendingTempDisabled",
7640
+ value: function isSendingTempDisabled(_options) {
7641
+ return true;
7642
+ }
7643
+ }, {
7644
+ key: "isReceivingTempDisabled",
7645
+ value: function isReceivingTempDisabled(_scenario) {
7646
+ return true;
7647
+ }
7733
7648
  }]);
7734
7649
  }(Parachain);
7735
7650
 
@@ -7742,10 +7657,11 @@ var CoretimeKusama = /*#__PURE__*/function (_Parachain) {
7742
7657
  return _createClass(CoretimeKusama, [{
7743
7658
  key: "transferPolkadotXCM",
7744
7659
  value: function transferPolkadotXCM(input) {
7745
- // TESTED block hash on Rococo: 0x78ace0f1bf7cac9a42e56143321b617d98327e2750f795efb0abb833025c9082
7746
7660
  var scenario = input.scenario;
7747
- var method = scenario === 'ParaToPara' ? 'limited_reserve_transfer_assets' : 'limited_teleport_assets';
7748
- return transferPolkadotXcm(input, method, 'Unlimited');
7661
+ if (scenario === 'ParaToPara') {
7662
+ throw new ScenarioNotSupportedError(this.chain, scenario);
7663
+ }
7664
+ return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
7749
7665
  }
7750
7666
  }, {
7751
7667
  key: "getRelayToParaOverrides",
@@ -7777,6 +7693,11 @@ var CoretimePolkadot = /*#__PURE__*/function (_Parachain) {
7777
7693
  }
7778
7694
  return transferPolkadotXcm(input, 'limited_teleport_assets', 'Unlimited');
7779
7695
  }
7696
+ }, {
7697
+ key: "canReceiveFrom",
7698
+ value: function canReceiveFrom(origin) {
7699
+ return origin !== 'Hydration' && origin !== 'Moonbeam';
7700
+ }
7780
7701
  }, {
7781
7702
  key: "getRelayToParaOverrides",
7782
7703
  value: function getRelayToParaOverrides() {
@@ -7944,6 +7865,16 @@ var Curio = /*#__PURE__*/function (_Parachain) {
7944
7865
  };
7945
7866
  return transferXTokens(input, currencySelection);
7946
7867
  }
7868
+ }, {
7869
+ key: "isSendingTempDisabled",
7870
+ value: function isSendingTempDisabled(_options) {
7871
+ return true;
7872
+ }
7873
+ }, {
7874
+ key: "isReceivingTempDisabled",
7875
+ value: function isReceivingTempDisabled(_scenario) {
7876
+ return true;
7877
+ }
7947
7878
  }]);
7948
7879
  }(Parachain);
7949
7880
 
@@ -8066,7 +7997,7 @@ var EnergyWebXPaseo = /*#__PURE__*/function (_EnergyWebX) {
8066
7997
  var Heima = /*#__PURE__*/function (_Parachain) {
8067
7998
  function Heima() {
8068
7999
  var chain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Heima';
8069
- var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'litentry';
8000
+ var info = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'heima';
8070
8001
  var ecosystem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Polkadot';
8071
8002
  var version = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : sdkCommon.Version.V5;
8072
8003
  _classCallCheck(this, Heima);
@@ -8238,6 +8169,12 @@ var Polimec = /*#__PURE__*/function (_Parachain) {
8238
8169
  }
8239
8170
  return transferPolkadotXCM;
8240
8171
  }()
8172
+ }, {
8173
+ key: "isSendingTempDisabled",
8174
+ value: function isSendingTempDisabled(_ref3) {
8175
+ var assetInfo = _ref3.assetInfo;
8176
+ return assets.isSymbolMatch(assetInfo.symbol, this.getNativeAssetSymbol());
8177
+ }
8241
8178
  }, {
8242
8179
  key: "transferRelayToPara",
8243
8180
  value: function transferRelayToPara(options) {
@@ -9174,7 +9111,17 @@ var PAssetHub = /*#__PURE__*/function (_PeoplePolkadot) {
9174
9111
  return _callSuper(this, PAssetHub, ['PAssetHub', 'PAssetHub - Contracts', 'Paseo', sdkCommon.Version.V5]);
9175
9112
  }
9176
9113
  _inherits(PAssetHub, _PeoplePolkadot);
9177
- return _createClass(PAssetHub);
9114
+ return _createClass(PAssetHub, [{
9115
+ key: "isSendingTempDisabled",
9116
+ value: function isSendingTempDisabled(_options) {
9117
+ return true;
9118
+ }
9119
+ }, {
9120
+ key: "isReceivingTempDisabled",
9121
+ value: function isReceivingTempDisabled(_scenario) {
9122
+ return true;
9123
+ }
9124
+ }]);
9178
9125
  }(PeoplePolkadot);
9179
9126
 
9180
9127
  var Peaq = /*#__PURE__*/function (_Parachain) {
@@ -9199,6 +9146,16 @@ var Peaq = /*#__PURE__*/function (_Parachain) {
9199
9146
  value: function transferRelayToPara() {
9200
9147
  throw new ChainNotSupportedError();
9201
9148
  }
9149
+ }, {
9150
+ key: "isSendingTempDisabled",
9151
+ value: function isSendingTempDisabled(_options) {
9152
+ return true;
9153
+ }
9154
+ }, {
9155
+ key: "isReceivingTempDisabled",
9156
+ value: function isReceivingTempDisabled(_scenario) {
9157
+ return true;
9158
+ }
9202
9159
  }, {
9203
9160
  key: "transferLocalNonNativeAsset",
9204
9161
  value: function transferLocalNonNativeAsset(options) {
@@ -9450,8 +9407,17 @@ var RobonomicsPolkadot = /*#__PURE__*/function (_Parachain) {
9450
9407
  return _createClass(RobonomicsPolkadot, [{
9451
9408
  key: "transferPolkadotXCM",
9452
9409
  value: function transferPolkadotXCM(input) {
9410
+ var scenario = input.scenario;
9411
+ if (scenario === 'ParaToPara') {
9412
+ throw new ScenarioNotSupportedError(this.chain, scenario);
9413
+ }
9453
9414
  return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9454
9415
  }
9416
+ }, {
9417
+ key: "isReceivingTempDisabled",
9418
+ value: function isReceivingTempDisabled(scenario) {
9419
+ return scenario !== 'RelayToPara';
9420
+ }
9455
9421
  }, {
9456
9422
  key: "transferLocalNonNativeAsset",
9457
9423
  value: function transferLocalNonNativeAsset(options) {
@@ -9525,6 +9491,16 @@ var Subsocial = /*#__PURE__*/function (_Parachain) {
9525
9491
  }
9526
9492
  return transferPolkadotXcm(input, 'limited_reserve_transfer_assets', 'Unlimited');
9527
9493
  }
9494
+ }, {
9495
+ key: "isSendingTempDisabled",
9496
+ value: function isSendingTempDisabled(_options) {
9497
+ return true;
9498
+ }
9499
+ }, {
9500
+ key: "isReceivingTempDisabled",
9501
+ value: function isReceivingTempDisabled(_scenario) {
9502
+ return true;
9503
+ }
9528
9504
  }]);
9529
9505
  }(Parachain);
9530
9506
 
@@ -9607,6 +9583,11 @@ var Zeitgeist = /*#__PURE__*/function (_Parachain) {
9607
9583
  var currencySelection = this.getCurrencySelection(asset);
9608
9584
  return transferXTokens(input, currencySelection);
9609
9585
  }
9586
+ }, {
9587
+ key: "canReceiveFrom",
9588
+ value: function canReceiveFrom(origin) {
9589
+ return origin !== 'Astar';
9590
+ }
9610
9591
  }, {
9611
9592
  key: "transferLocalNonNativeAsset",
9612
9593
  value: function transferLocalNonNativeAsset(options) {
@@ -9910,10 +9891,17 @@ var dryRunOrigin = /*#__PURE__*/function () {
9910
9891
  };
9911
9892
  }();
9912
9893
 
9913
- var AssetManagerPallet = /*#__PURE__*/function () {
9894
+ var BaseAssetsPallet = /*#__PURE__*/_createClass(function BaseAssetsPallet(palletName) {
9895
+ _classCallCheck(this, BaseAssetsPallet);
9896
+ this.palletName = palletName;
9897
+ });
9898
+
9899
+ var AssetManagerPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9914
9900
  function AssetManagerPallet() {
9915
9901
  _classCallCheck(this, AssetManagerPallet);
9902
+ return _callSuper(this, AssetManagerPallet, arguments);
9916
9903
  }
9904
+ _inherits(AssetManagerPallet, _BaseAssetsPallet);
9917
9905
  return _createClass(AssetManagerPallet, [{
9918
9906
  key: "mint",
9919
9907
  value: function mint(address, asset, balance) {
@@ -9922,7 +9910,7 @@ var AssetManagerPallet = /*#__PURE__*/function () {
9922
9910
  amount = asset.amount;
9923
9911
  return Promise.resolve({
9924
9912
  balanceTx: {
9925
- module: 'AssetManager',
9913
+ module: this.palletName,
9926
9914
  method: 'updateBalance',
9927
9915
  parameters: {
9928
9916
  who: {
@@ -9937,12 +9925,59 @@ var AssetManagerPallet = /*#__PURE__*/function () {
9937
9925
  });
9938
9926
  }
9939
9927
  }]);
9940
- }();
9928
+ }(BaseAssetsPallet);
9941
9929
 
9942
- var BalancesPallet = /*#__PURE__*/function () {
9930
+ var AssetsPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9931
+ function AssetsPallet() {
9932
+ _classCallCheck(this, AssetsPallet);
9933
+ return _callSuper(this, AssetsPallet, arguments);
9934
+ }
9935
+ _inherits(AssetsPallet, _BaseAssetsPallet);
9936
+ return _createClass(AssetsPallet, [{
9937
+ key: "mint",
9938
+ value: function mint(address, asset, _balance, chain) {
9939
+ assertHasId(asset);
9940
+ var assetId = asset.assetId,
9941
+ amount = asset.amount;
9942
+ var id = chain === 'Astar' || chain === 'Shiden' || chain === 'Moonbeam' ? BigInt(assetId) : Number(assetId);
9943
+ var addr = assets.isChainEvm(chain) ? address : {
9944
+ Id: address
9945
+ };
9946
+ return Promise.resolve({
9947
+ assetStatusTx: {
9948
+ module: this.palletName,
9949
+ method: 'force_asset_status',
9950
+ parameters: {
9951
+ id: id,
9952
+ owner: addr,
9953
+ issuer: addr,
9954
+ admin: addr,
9955
+ freezer: addr,
9956
+ min_balance: 0n,
9957
+ is_sufficient: true,
9958
+ is_frozen: false
9959
+ }
9960
+ },
9961
+ balanceTx: {
9962
+ module: this.palletName,
9963
+ method: 'mint',
9964
+ parameters: {
9965
+ id: id,
9966
+ beneficiary: addr,
9967
+ amount: amount
9968
+ }
9969
+ }
9970
+ });
9971
+ }
9972
+ }]);
9973
+ }(BaseAssetsPallet);
9974
+
9975
+ var BalancesPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9943
9976
  function BalancesPallet() {
9944
9977
  _classCallCheck(this, BalancesPallet);
9978
+ return _callSuper(this, BalancesPallet, arguments);
9945
9979
  }
9980
+ _inherits(BalancesPallet, _BaseAssetsPallet);
9946
9981
  return _createClass(BalancesPallet, [{
9947
9982
  key: "mint",
9948
9983
  value: function mint(address, assetInfo, balance, chain) {
@@ -9950,7 +9985,7 @@ var BalancesPallet = /*#__PURE__*/function () {
9950
9985
  var notUseId = chain.startsWith('Hydration') || chain === 'Basilisk' || assets.isChainEvm(chain);
9951
9986
  return Promise.resolve({
9952
9987
  balanceTx: {
9953
- module: 'Balances',
9988
+ module: this.palletName,
9954
9989
  method: 'force_set_balance',
9955
9990
  parameters: {
9956
9991
  who: notUseId ? address : {
@@ -9962,12 +9997,14 @@ var BalancesPallet = /*#__PURE__*/function () {
9962
9997
  });
9963
9998
  }
9964
9999
  }]);
9965
- }();
10000
+ }(BaseAssetsPallet);
9966
10001
 
9967
- var CurrenciesPallet = /*#__PURE__*/function () {
10002
+ var CurrenciesPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9968
10003
  function CurrenciesPallet() {
9969
10004
  _classCallCheck(this, CurrenciesPallet);
10005
+ return _callSuper(this, CurrenciesPallet, arguments);
9970
10006
  }
10007
+ _inherits(CurrenciesPallet, _BaseAssetsPallet);
9971
10008
  return _createClass(CurrenciesPallet, [{
9972
10009
  key: "mint",
9973
10010
  value: function mint(address, assetInfo, balance) {
@@ -9976,7 +10013,7 @@ var CurrenciesPallet = /*#__PURE__*/function () {
9976
10013
  amount = assetInfo.amount;
9977
10014
  return Promise.resolve({
9978
10015
  balanceTx: {
9979
- module: 'Currencies',
10016
+ module: this.palletName,
9980
10017
  method: 'update_balance',
9981
10018
  parameters: {
9982
10019
  who: address,
@@ -9987,12 +10024,14 @@ var CurrenciesPallet = /*#__PURE__*/function () {
9987
10024
  });
9988
10025
  }
9989
10026
  }]);
9990
- }();
10027
+ }(BaseAssetsPallet);
9991
10028
 
9992
- var ForeignAssetsPallet = /*#__PURE__*/function () {
10029
+ var ForeignAssetsPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
9993
10030
  function ForeignAssetsPallet() {
9994
10031
  _classCallCheck(this, ForeignAssetsPallet);
10032
+ return _callSuper(this, ForeignAssetsPallet, arguments);
9995
10033
  }
10034
+ _inherits(ForeignAssetsPallet, _BaseAssetsPallet);
9996
10035
  return _createClass(ForeignAssetsPallet, [{
9997
10036
  key: "mint",
9998
10037
  value: function mint(address, asset) {
@@ -10001,7 +10040,7 @@ var ForeignAssetsPallet = /*#__PURE__*/function () {
10001
10040
  amount = asset.amount;
10002
10041
  return Promise.resolve({
10003
10042
  assetStatusTx: {
10004
- module: 'ForeignAssets',
10043
+ module: this.palletName,
10005
10044
  method: 'force_asset_status',
10006
10045
  parameters: {
10007
10046
  id: location,
@@ -10023,7 +10062,7 @@ var ForeignAssetsPallet = /*#__PURE__*/function () {
10023
10062
  }
10024
10063
  },
10025
10064
  balanceTx: {
10026
- module: 'ForeignAssets',
10065
+ module: this.palletName,
10027
10066
  method: 'mint',
10028
10067
  parameters: {
10029
10068
  id: location,
@@ -10036,7 +10075,7 @@ var ForeignAssetsPallet = /*#__PURE__*/function () {
10036
10075
  });
10037
10076
  }
10038
10077
  }]);
10039
- }();
10078
+ }(BaseAssetsPallet);
10040
10079
 
10041
10080
  var SIZE = 32;
10042
10081
  var BALANCE_SLOT = 0;
@@ -10051,10 +10090,12 @@ var calculateMappingSlot = function calculateMappingSlot(key) {
10051
10090
  var encoded = viem.concat([keyPadded, slotHex]);
10052
10091
  return viem.keccak256(encoded);
10053
10092
  };
10054
- var SystemPallet = /*#__PURE__*/function () {
10093
+ var SystemPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
10055
10094
  function SystemPallet() {
10056
10095
  _classCallCheck(this, SystemPallet);
10096
+ return _callSuper(this, SystemPallet, arguments);
10057
10097
  }
10098
+ _inherits(SystemPallet, _BaseAssetsPallet);
10058
10099
  return _createClass(SystemPallet, [{
10059
10100
  key: "mint",
10060
10101
  value: function () {
@@ -10075,7 +10116,7 @@ var SystemPallet = /*#__PURE__*/function () {
10075
10116
  storageKey = _context.v;
10076
10117
  return _context.a(2, {
10077
10118
  balanceTx: {
10078
- module: 'System',
10119
+ module: this.palletName,
10079
10120
  method: 'set_storage',
10080
10121
  parameters: {
10081
10122
  items: [[storageKey, amountEncoded]]
@@ -10083,7 +10124,7 @@ var SystemPallet = /*#__PURE__*/function () {
10083
10124
  }
10084
10125
  });
10085
10126
  }
10086
- }, _callee);
10127
+ }, _callee, this);
10087
10128
  }));
10088
10129
  function mint(_x, _x2, _x3, _x4, _x5) {
10089
10130
  return _mint.apply(this, arguments);
@@ -10091,12 +10132,14 @@ var SystemPallet = /*#__PURE__*/function () {
10091
10132
  return mint;
10092
10133
  }()
10093
10134
  }]);
10094
- }();
10135
+ }(BaseAssetsPallet);
10095
10136
 
10096
- var TokensPallet = /*#__PURE__*/function () {
10137
+ var TokensPallet = /*#__PURE__*/function (_BaseAssetsPallet) {
10097
10138
  function TokensPallet() {
10098
10139
  _classCallCheck(this, TokensPallet);
10140
+ return _callSuper(this, TokensPallet, arguments);
10099
10141
  }
10142
+ _inherits(TokensPallet, _BaseAssetsPallet);
10100
10143
  return _createClass(TokensPallet, [{
10101
10144
  key: "mint",
10102
10145
  value: function mint(address, asset, balance, chain) {
@@ -10106,7 +10149,7 @@ var TokensPallet = /*#__PURE__*/function () {
10106
10149
  var amount = asset.amount;
10107
10150
  return Promise.resolve({
10108
10151
  balanceTx: {
10109
- module: 'Tokens',
10152
+ module: this.palletName,
10110
10153
  method: 'set_balance',
10111
10154
  parameters: {
10112
10155
  who: {
@@ -10120,35 +10163,93 @@ var TokensPallet = /*#__PURE__*/function () {
10120
10163
  });
10121
10164
  }
10122
10165
  }]);
10123
- }();
10166
+ }(BaseAssetsPallet);
10124
10167
 
10125
10168
  var palletRegistry = {
10126
- Balances: BalancesPallet,
10127
- Tokens: TokensPallet,
10128
- Currencies: CurrenciesPallet,
10129
- Assets: AssetsPallet,
10130
- ForeignAssets: ForeignAssetsPallet,
10131
- AssetManager: AssetManagerPallet,
10132
- System: SystemPallet
10169
+ Balances: new BalancesPallet('Balances'),
10170
+ Tokens: new TokensPallet('Tokens'),
10171
+ Currencies: new CurrenciesPallet('Currencies'),
10172
+ Assets: new AssetsPallet('Assets'),
10173
+ ForeignAssets: new ForeignAssetsPallet('ForeignAssets'),
10174
+ AssetManager: new AssetManagerPallet('AssetManager'),
10175
+ System: new SystemPallet('System'),
10176
+ Fungibles: new AssetsPallet('Fungibles')
10133
10177
  };
10134
10178
  var getPalletInstance = function getPalletInstance(type) {
10135
- var HandlerClass = palletRegistry[type];
10136
- return new HandlerClass();
10179
+ return palletRegistry[type];
10137
10180
  };
10138
10181
 
10139
- var getCurrencySelection = function getCurrencySelection(asset) {
10140
- if (asset.location) return {
10141
- location: asset.location
10182
+ var getOriginFeeDetailsInternal = /*#__PURE__*/function () {
10183
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
10184
+ var _getExistentialDeposi;
10185
+ var api, account, accountDestination, ahAddress, currency, origin, destination, _ref$feeMarginPercent, feeMarginPercentage, tx, xcmFee, xcmFeeWithMargin, nativeBalance, existentialDeposit, sufficientForXCM;
10186
+ return _regenerator().w(function (_context) {
10187
+ while (1) switch (_context.n) {
10188
+ case 0:
10189
+ 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;
10190
+ _context.n = 1;
10191
+ return api.init(origin);
10192
+ case 1:
10193
+ _context.n = 2;
10194
+ return Builder(api).from(origin).to(destination).currency(currency).address(accountDestination).senderAddress(account).ahAddress(ahAddress)['buildInternal']();
10195
+ case 2:
10196
+ tx = _context.v;
10197
+ _context.n = 3;
10198
+ return api.calculateTransactionFee(tx, account);
10199
+ case 3:
10200
+ xcmFee = _context.v;
10201
+ xcmFeeWithMargin = xcmFee + xcmFee / BigInt(feeMarginPercentage);
10202
+ _context.n = 4;
10203
+ return getBalanceNativeInternal({
10204
+ address: account,
10205
+ chain: origin,
10206
+ api: api
10207
+ });
10208
+ case 4:
10209
+ nativeBalance = _context.v;
10210
+ existentialDeposit = BigInt((_getExistentialDeposi = assets.getExistentialDeposit(origin)) !== null && _getExistentialDeposi !== void 0 ? _getExistentialDeposi : '0');
10211
+ sufficientForXCM = nativeBalance - existentialDeposit - xcmFeeWithMargin > 0;
10212
+ return _context.a(2, {
10213
+ sufficientForXCM: sufficientForXCM,
10214
+ xcmFee: xcmFee
10215
+ });
10216
+ }
10217
+ }, _callee);
10218
+ }));
10219
+ return function getOriginFeeDetailsInternal(_x) {
10220
+ return _ref2.apply(this, arguments);
10142
10221
  };
10143
- if (assets.isForeignAsset(asset) && asset.assetId) {
10144
- return {
10145
- id: asset.assetId
10146
- };
10147
- }
10148
- return {
10149
- symbol: asset.symbol
10222
+ }();
10223
+ var getOriginFeeDetails = /*#__PURE__*/function () {
10224
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
10225
+ var api;
10226
+ return _regenerator().w(function (_context2) {
10227
+ while (1) switch (_context2.p = _context2.n) {
10228
+ case 0:
10229
+ api = options.api;
10230
+ api.setDisconnectAllowed(false);
10231
+ _context2.p = 1;
10232
+ _context2.n = 2;
10233
+ return getOriginFeeDetailsInternal(options);
10234
+ case 2:
10235
+ return _context2.a(2, _context2.v);
10236
+ case 3:
10237
+ _context2.p = 3;
10238
+ api.setDisconnectAllowed(true);
10239
+ _context2.n = 4;
10240
+ return api.disconnect();
10241
+ case 4:
10242
+ return _context2.f(3);
10243
+ case 5:
10244
+ return _context2.a(2);
10245
+ }
10246
+ }, _callee2, null, [[1,, 3, 5]]);
10247
+ }));
10248
+ return function getOriginFeeDetails(_x2) {
10249
+ return _ref3.apply(this, arguments);
10150
10250
  };
10151
- };
10251
+ }();
10252
+
10152
10253
  var pickOtherPallet = function pickOtherPallet(asset, pallets) {
10153
10254
  if (assets.isForeignAsset(asset) && (!asset.assetId || asset.assetId.startsWith('0x'))) {
10154
10255
  var _pallets$find;
@@ -11504,6 +11605,7 @@ var send = /*#__PURE__*/function () {
11504
11605
  origin: origin,
11505
11606
  destination: destination,
11506
11607
  address: address,
11608
+ senderAddress: senderAddress,
11507
11609
  assetInfo: _objectSpread2(_objectSpread2({}, asset), {}, {
11508
11610
  amount: finalAmount
11509
11611
  }),
@@ -12244,12 +12346,13 @@ var computeInstructionFee = /*#__PURE__*/function () {
12244
12346
  }();
12245
12347
  var computeAllFees = /*#__PURE__*/function () {
12246
12348
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref3, customXcm, isDotAsset, refundInstruction) {
12349
+ var _customXcm$DepositRes;
12247
12350
  var reserve, dest, version, _t2, _t3, _t4, _t5, _t6, _t7, _t8, _t9, _t0;
12248
12351
  return _regenerator().w(function (_context2) {
12249
12352
  while (1) switch (_context2.n) {
12250
12353
  case 0:
12251
12354
  reserve = _ref3.reserve, dest = _ref3.dest, version = _ref3.options.version;
12252
- if (!('DepositReserveAsset' in customXcm)) {
12355
+ if (!('DepositReserveAsset' in customXcm || 'InitiateTeleport' in customXcm)) {
12253
12356
  _context2.n = 6;
12254
12357
  break;
12255
12358
  }
@@ -12272,7 +12375,7 @@ var computeAllFees = /*#__PURE__*/function () {
12272
12375
  case 4:
12273
12376
  _t5 = _t4;
12274
12377
  _context2.n = 5;
12275
- return computeInstructionFee(assets.hasXcmPaymentApiSupport(dest.chain) ? dest : reserve, version, customXcm.DepositReserveAsset.xcm);
12378
+ 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
12379
  case 5:
12277
12380
  _t6 = _context2.v;
12278
12381
  _t2 = {
@@ -12327,7 +12430,7 @@ var computeAllFees = /*#__PURE__*/function () {
12327
12430
  }();
12328
12431
 
12329
12432
  var createTypeAndThenCallContext = /*#__PURE__*/function () {
12330
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options) {
12433
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options, overrideReserve) {
12331
12434
  var api, destChain, assetInfo, reserveChain, destApi, reserveApi;
12332
12435
  return _regenerator().w(function (_context) {
12333
12436
  while (1) switch (_context.n) {
@@ -12340,12 +12443,14 @@ var createTypeAndThenCallContext = /*#__PURE__*/function () {
12340
12443
  }
12341
12444
  throw new InvalidParameterError('Cannot override destination when using type and then transfer.');
12342
12445
  case 1:
12343
- reserveChain = sdkCommon.isRelayChain(destChain) ? destChain : getAssetReserveChain(chain, chain, assetInfo.location);
12446
+ reserveChain = overrideReserve !== undefined ? overrideReserve :
12447
+ // Paseo ecosystem migrated reserves to AssetHub
12448
+ getRelayChainOf(chain) === 'Paseo' ? getAssetReserveChain(chain, chain, assetInfo.location) : sdkCommon.isRelayChain(destChain) ? destChain : getAssetReserveChain(chain, chain, assetInfo.location);
12344
12449
  destApi = api.clone();
12345
12450
  _context.n = 2;
12346
12451
  return destApi.init(destChain);
12347
12452
  case 2:
12348
- reserveApi = reserveChain !== chain ? api.clone() : destApi;
12453
+ reserveApi = reserveChain === chain ? api : reserveChain === destChain ? destApi : api.clone();
12349
12454
  _context.n = 3;
12350
12455
  return reserveApi.init(reserveChain);
12351
12456
  case 3:
@@ -12368,7 +12473,7 @@ var createTypeAndThenCallContext = /*#__PURE__*/function () {
12368
12473
  }
12369
12474
  }, _callee);
12370
12475
  }));
12371
- return function createTypeAndThenCallContext(_x, _x2) {
12476
+ return function createTypeAndThenCallContext(_x, _x2, _x3) {
12372
12477
  return _ref.apply(this, arguments);
12373
12478
  };
12374
12479
  }();
@@ -12416,20 +12521,33 @@ var createCustomXcm = function createCustomXcm(_ref, isDotAsset) {
12416
12521
  if (origin.chain !== reserve.chain && dest.chain !== reserve.chain) {
12417
12522
  var buyExecutionAmount = !isDotAsset ? destFee : assetInfo.amount - reserveFee - refundFee;
12418
12523
  if (buyExecutionAmount < 0n) throw new AmountTooLowError();
12524
+ var filter = fees.destFee === MIN_FEE ? {
12525
+ Wild: 'All'
12526
+ } : {
12527
+ Definite: assetsFilter
12528
+ };
12529
+ var buyExecution = {
12530
+ BuyExecution: {
12531
+ fees: createAsset(version, buyExecutionAmount, feeAssetLocation),
12532
+ weight_limit: 'Unlimited'
12533
+ }
12534
+ };
12535
+ var destLoc = createDestination(version, origin.chain, destination, paraIdTo);
12536
+ // If destination is a system chain, use teleport instead of reserve deposit
12537
+ if (sdkCommon.isSystemChain(dest.chain)) {
12538
+ return {
12539
+ InitiateTeleport: {
12540
+ assets: filter,
12541
+ dest: destLoc,
12542
+ xcm: [buyExecution, depositInstruction]
12543
+ }
12544
+ };
12545
+ }
12419
12546
  return {
12420
12547
  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]
12548
+ assets: filter,
12549
+ dest: destLoc,
12550
+ xcm: [buyExecution, depositInstruction]
12433
12551
  }
12434
12552
  };
12435
12553
  }
@@ -12467,14 +12585,14 @@ var buildAssets = function buildAssets(chain, asset, feeAmount, isDotAsset, vers
12467
12585
  * Creates a type and then call for transferring assets using XCM. Works only for DOT and snowbridge assets so far.
12468
12586
  */
12469
12587
  var createTypeAndThenCall = /*#__PURE__*/function () {
12470
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options) {
12588
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options, overrideReserve) {
12471
12589
  var api, senderAddress, version, context, assetInfo, isDotAsset, customXcm, assetCount, refundInstruction, fees, finalCustomXcm, totalFee, assets;
12472
12590
  return _regenerator().w(function (_context) {
12473
12591
  while (1) switch (_context.n) {
12474
12592
  case 0:
12475
12593
  api = options.api, senderAddress = options.senderAddress, version = options.version;
12476
12594
  _context.n = 1;
12477
- return createTypeAndThenCallContext(chain, options);
12595
+ return createTypeAndThenCallContext(chain, options, overrideReserve);
12478
12596
  case 1:
12479
12597
  context = _context.v;
12480
12598
  assetInfo = context.assetInfo;
@@ -12504,11 +12622,184 @@ var createTypeAndThenCall = /*#__PURE__*/function () {
12504
12622
  }
12505
12623
  }, _callee);
12506
12624
  }));
12507
- return function createTypeAndThenCall(_x, _x2) {
12625
+ return function createTypeAndThenCall(_x, _x2, _x3) {
12508
12626
  return _ref.apply(this, arguments);
12509
12627
  };
12510
12628
  }();
12511
12629
 
12630
+ /**
12631
+ * Choose a reserve (AssetHub or Relay) by checking the beneficiary’s balance on each.
12632
+ * We resolve the beneficiary account on every candidate and return the first with
12633
+ * balance \>= amount, or undefined if none qualify.
12634
+ */
12635
+ var selectReserveByBalance = /*#__PURE__*/function () {
12636
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, options) {
12637
+ var api, assetInfo, destination, version, paraIdTo, relay, candidates, _i, _candidates, reserve, reserveApi, location, resolvedAddress, balance;
12638
+ return _regenerator().w(function (_context) {
12639
+ while (1) switch (_context.n) {
12640
+ case 0:
12641
+ api = options.api, assetInfo = options.assetInfo, destination = options.destination, version = options.version, paraIdTo = options.paraIdTo;
12642
+ relay = getRelayChainOf(chain);
12643
+ candidates = ["AssetHub".concat(relay), relay];
12644
+ _i = 0, _candidates = candidates;
12645
+ case 1:
12646
+ if (!(_i < _candidates.length)) {
12647
+ _context.n = 7;
12648
+ break;
12649
+ }
12650
+ reserve = _candidates[_i];
12651
+ reserveApi = api.clone();
12652
+ _context.n = 2;
12653
+ return reserveApi.init(reserve);
12654
+ case 2:
12655
+ location = createDestination(version, chain, destination, paraIdTo);
12656
+ _context.n = 3;
12657
+ return reserveApi.convertLocationToAccount(location);
12658
+ case 3:
12659
+ resolvedAddress = _context.v;
12660
+ if (resolvedAddress) {
12661
+ _context.n = 4;
12662
+ break;
12663
+ }
12664
+ return _context.a(3, 6);
12665
+ case 4:
12666
+ assertAddressIsString(resolvedAddress);
12667
+ _context.n = 5;
12668
+ return getAssetBalanceInternal({
12669
+ api: reserveApi,
12670
+ chain: reserve,
12671
+ address: resolvedAddress,
12672
+ currency: getCurrencySelection(assetInfo)
12673
+ });
12674
+ case 5:
12675
+ balance = _context.v;
12676
+ if (!(balance >= assetInfo.amount)) {
12677
+ _context.n = 6;
12678
+ break;
12679
+ }
12680
+ return _context.a(2, reserve);
12681
+ case 6:
12682
+ _i++;
12683
+ _context.n = 1;
12684
+ break;
12685
+ case 7:
12686
+ return _context.a(2, undefined);
12687
+ }
12688
+ }, _callee);
12689
+ }));
12690
+ return function selectReserveByBalance(_x, _x2) {
12691
+ return _ref.apply(this, arguments);
12692
+ };
12693
+ }();
12694
+
12695
+ var createCallForReserve = /*#__PURE__*/function () {
12696
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, reserveChain, options) {
12697
+ var api, destination, address, senderAddress, currency, feeCurrency, serialized, tx, dryRunResult, success;
12698
+ return _regenerator().w(function (_context) {
12699
+ while (1) switch (_context.n) {
12700
+ case 0:
12701
+ api = options.api, destination = options.destination, address = options.address, senderAddress = options.senderAddress, currency = options.currency, feeCurrency = options.feeCurrency;
12702
+ _context.n = 1;
12703
+ return createTypeAndThenCall(chain, options, reserveChain);
12704
+ case 1:
12705
+ serialized = _context.v;
12706
+ assertAddressIsString(address);
12707
+ assertToIsString(destination, 'Location destination is not supported for reserve auto-selection.');
12708
+ assertSenderAddress(senderAddress);
12709
+ tx = api.callTxMethod(serialized);
12710
+ _context.n = 2;
12711
+ return dryRunInternal({
12712
+ api: api,
12713
+ tx: tx,
12714
+ origin: chain,
12715
+ destination: destination,
12716
+ address: address,
12717
+ senderAddress: senderAddress,
12718
+ currency: currency,
12719
+ feeAsset: feeCurrency,
12720
+ useRootOrigin: true
12721
+ });
12722
+ case 2:
12723
+ dryRunResult = _context.v;
12724
+ success = !dryRunResult.failureReason;
12725
+ return _context.a(2, {
12726
+ call: serialized,
12727
+ success: success
12728
+ });
12729
+ }
12730
+ }, _callee);
12731
+ }));
12732
+ return function createCallForReserve(_x, _x2, _x3) {
12733
+ return _ref.apply(this, arguments);
12734
+ };
12735
+ }();
12736
+ /**
12737
+ * Creates a type-and-then call but auto-selects the asset reserve between AssetHub and the Relay chain
12738
+ * by dry-running both variants and preferring the one that succeeds. If both fail, returns the
12739
+ * AssetHub variant. Supports only relaychain assets.
12740
+ */
12741
+ var createTypeThenAutoReserve = /*#__PURE__*/function () {
12742
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(chain, options) {
12743
+ var originSupports, destSupports, reserve, relay, assetHubReserve, ahResult, relayResult;
12744
+ return _regenerator().w(function (_context2) {
12745
+ while (1) switch (_context2.n) {
12746
+ case 0:
12747
+ // Use dry-run path only when BOTH origin and destination support it
12748
+ originSupports = assets.hasDryRunSupport(chain);
12749
+ destSupports = options.destChain ? assets.hasDryRunSupport(options.destChain) : false;
12750
+ if (originSupports && destSupports) {
12751
+ _context2.n = 5;
12752
+ break;
12753
+ }
12754
+ _context2.n = 1;
12755
+ return selectReserveByBalance(chain, options);
12756
+ case 1:
12757
+ reserve = _context2.v;
12758
+ if (!reserve) {
12759
+ _context2.n = 3;
12760
+ break;
12761
+ }
12762
+ _context2.n = 2;
12763
+ return createTypeAndThenCall(chain, options, reserve);
12764
+ case 2:
12765
+ return _context2.a(2, _context2.v);
12766
+ case 3:
12767
+ _context2.n = 4;
12768
+ return createTypeAndThenCall(chain, options);
12769
+ case 4:
12770
+ return _context2.a(2, _context2.v);
12771
+ case 5:
12772
+ relay = getRelayChainOf(chain);
12773
+ assetHubReserve = "AssetHub".concat(relay);
12774
+ _context2.n = 6;
12775
+ return createCallForReserve(chain, assetHubReserve, options);
12776
+ case 6:
12777
+ ahResult = _context2.v;
12778
+ if (!ahResult.success) {
12779
+ _context2.n = 7;
12780
+ break;
12781
+ }
12782
+ return _context2.a(2, ahResult.call);
12783
+ case 7:
12784
+ _context2.n = 8;
12785
+ return createCallForReserve(chain, relay, options);
12786
+ case 8:
12787
+ relayResult = _context2.v;
12788
+ if (!relayResult.success) {
12789
+ _context2.n = 9;
12790
+ break;
12791
+ }
12792
+ return _context2.a(2, relayResult.call);
12793
+ case 9:
12794
+ return _context2.a(2, ahResult.call);
12795
+ }
12796
+ }, _callee2);
12797
+ }));
12798
+ return function createTypeThenAutoReserve(_x4, _x5) {
12799
+ return _ref2.apply(this, arguments);
12800
+ };
12801
+ }();
12802
+
12512
12803
  var calculateTotalXcmFee = function calculateTotalXcmFee(feeResult) {
12513
12804
  var _feeResult$assetHub;
12514
12805
  var totalFee = 0n;
@@ -13615,6 +13906,7 @@ exports.createExecuteCall = createExecuteCall;
13615
13906
  exports.createExecuteExchangeXcm = createExecuteExchangeXcm;
13616
13907
  exports.createTx = createTx;
13617
13908
  exports.createTypeAndThenCall = createTypeAndThenCall;
13909
+ exports.createTypeThenAutoReserve = createTypeThenAutoReserve;
13618
13910
  exports.createVersionedAssets = createVersionedAssets;
13619
13911
  exports.createX1Payload = createX1Payload;
13620
13912
  exports.deriveAccountId = deriveAccountId;