@paraspell/sdk-core 8.10.0 → 8.11.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
@@ -3211,7 +3211,7 @@ var ParachainNode = /*#__PURE__*/function () {
3211
3211
  key: "transfer",
3212
3212
  value: function () {
3213
3213
  var _transfer = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
3214
- var api, asset, feeAsset, address, destination, paraIdTo, overriddenAsset, version, senderAddress, pallet, method, isRelayDestination, scenario, paraId, versionOrDefault, isBifrostOrigin, isAssetHubDest, shouldUseMultiasset, input, _options, isEthAsset, isAHPOrigin, isAHPDest, isEthDest;
3214
+ var api, asset, feeAsset, address, destination, paraIdTo, overriddenAsset, version, senderAddress, pallet, method, isRelayDestination, scenario, paraId, versionOrDefault, isLocalTransfer, isBifrostOrigin, isAssetHubDest, shouldUseMultiasset, input, _options, isEthAsset, isAHPOrigin, isAHPDest, isEthDest;
3215
3215
  return _regeneratorRuntime().wrap(function _callee$(_context) {
3216
3216
  while (1) switch (_context.prev = _context.next) {
3217
3217
  case 0:
@@ -3219,15 +3219,22 @@ var ParachainNode = /*#__PURE__*/function () {
3219
3219
  isRelayDestination = !sdkCommon.isTMultiLocation(destination) && sdkCommon.isRelayChain(destination);
3220
3220
  scenario = isRelayDestination ? 'ParaToRelay' : 'ParaToPara';
3221
3221
  paraId = resolveParaId(paraIdTo, destination);
3222
- if (!(destination === 'Polimec' && this.node !== 'AssetHubPolkadot' && this.node !== 'Hydration')) {
3222
+ if (!(destination === 'Polimec' && this.node !== 'AssetHubPolkadot' && this.node !== 'Hydration' && this.node !== destination)) {
3223
3223
  _context.next = 6;
3224
3224
  break;
3225
3225
  }
3226
3226
  throw new Error('Sending assets to Polimec is supported only from AssetHubPolkadot and Hydration');
3227
3227
  case 6:
3228
3228
  versionOrDefault = version !== null && version !== void 0 ? version : this.version;
3229
+ isLocalTransfer = this.node === destination;
3230
+ if (!isLocalTransfer) {
3231
+ _context.next = 10;
3232
+ break;
3233
+ }
3234
+ return _context.abrupt("return", this.transferLocal(options));
3235
+ case 10:
3229
3236
  if (!(supportsXTokens(this) && this.canUseXTokens(options))) {
3230
- _context.next = 17;
3237
+ _context.next = 20;
3231
3238
  break;
3232
3239
  }
3233
3240
  isBifrostOrigin = this.node === 'BifrostPolkadot' || this.node === 'BifrostKusama';
@@ -3254,15 +3261,15 @@ var ParachainNode = /*#__PURE__*/function () {
3254
3261
  method: method
3255
3262
  };
3256
3263
  if (!shouldUseMultiasset) {
3257
- _context.next = 14;
3264
+ _context.next = 17;
3258
3265
  break;
3259
3266
  }
3260
3267
  return _context.abrupt("return", XTokensTransferImpl.transferXTokens(input, undefined));
3261
- case 14:
3262
- return _context.abrupt("return", this.transferXTokens(input));
3263
3268
  case 17:
3269
+ return _context.abrupt("return", this.transferXTokens(input));
3270
+ case 20:
3264
3271
  if (!supportsXTransfer(this)) {
3265
- _context.next = 21;
3272
+ _context.next = 24;
3266
3273
  break;
3267
3274
  }
3268
3275
  return _context.abrupt("return", this.transferXTransfer({
@@ -3276,9 +3283,9 @@ var ParachainNode = /*#__PURE__*/function () {
3276
3283
  pallet: pallet,
3277
3284
  method: method
3278
3285
  }));
3279
- case 21:
3286
+ case 24:
3280
3287
  if (!supportsPolkadotXCM(this)) {
3281
- _context.next = 34;
3288
+ _context.next = 37;
3282
3289
  break;
3283
3290
  }
3284
3291
  _options = {
@@ -3310,21 +3317,21 @@ var ParachainNode = /*#__PURE__*/function () {
3310
3317
  isAHPDest = destination === 'AssetHubPolkadot' || destination === 'AssetHubKusama';
3311
3318
  isEthDest = destination === 'Ethereum'; // Any origin to any dest via AH - DestinationReserve - multiple instructions
3312
3319
  if (!(isEthAsset && !isAHPOrigin && !isAHPDest && !isEthDest)) {
3313
- _context.next = 29;
3320
+ _context.next = 32;
3314
3321
  break;
3315
3322
  }
3316
3323
  return _context.abrupt("return", this.transferEthAssetViaAH(_options));
3317
- case 29:
3324
+ case 32:
3318
3325
  if (!(isEthAsset && isAHPDest && !isAHPOrigin && !isEthDest)) {
3319
- _context.next = 31;
3326
+ _context.next = 34;
3320
3327
  break;
3321
3328
  }
3322
3329
  return _context.abrupt("return", this.transferToEthereum(_options, true));
3323
- case 31:
3324
- return _context.abrupt("return", this.transferPolkadotXCM(_options));
3325
3330
  case 34:
3331
+ return _context.abrupt("return", this.transferPolkadotXCM(_options));
3332
+ case 37:
3326
3333
  throw new NoXCMSupportImplementedError(this._node);
3327
- case 35:
3334
+ case 38:
3328
3335
  case "end":
3329
3336
  return _context.stop();
3330
3337
  }
@@ -3379,6 +3386,65 @@ var ParachainNode = /*#__PURE__*/function () {
3379
3386
  value: function getNativeAssetSymbol() {
3380
3387
  return assets.getNativeAssetSymbol(this.node);
3381
3388
  }
3389
+ }, {
3390
+ key: "transferLocal",
3391
+ value: function transferLocal(options) {
3392
+ var asset = options.asset,
3393
+ address = options.address;
3394
+ if (sdkCommon.isTMultiLocation(address)) {
3395
+ throw new InvalidAddressError('Multi-Location address is not supported for local transfers');
3396
+ }
3397
+ var validatedOptions = _objectSpread2(_objectSpread2({}, options), {}, {
3398
+ address: address
3399
+ });
3400
+ var isNativeAsset = asset.symbol === this.getNativeAssetSymbol() && !assets.isForeignAsset(asset);
3401
+ if (isNativeAsset) {
3402
+ return this.transferLocalNativeAsset(validatedOptions);
3403
+ } else {
3404
+ return this.transferLocalNonNativeAsset(validatedOptions);
3405
+ }
3406
+ }
3407
+ }, {
3408
+ key: "transferLocalNativeAsset",
3409
+ value: function transferLocalNativeAsset(options) {
3410
+ var api = options.api,
3411
+ asset = options.asset,
3412
+ address = options.address;
3413
+ return api.callTxMethod({
3414
+ module: 'Balances',
3415
+ section: 'transfer_keep_alive',
3416
+ parameters: {
3417
+ dest: assets.isNodeEvm(this.node) ? address : {
3418
+ Id: address
3419
+ },
3420
+ value: BigInt(asset.amount)
3421
+ }
3422
+ });
3423
+ }
3424
+ }, {
3425
+ key: "transferLocalNonNativeAsset",
3426
+ value: function transferLocalNonNativeAsset(options) {
3427
+ var api = options.api,
3428
+ asset = options.asset,
3429
+ address = options.address;
3430
+ if (!assets.isForeignAsset(asset)) {
3431
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
3432
+ }
3433
+ if (asset.assetId === undefined) {
3434
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
3435
+ }
3436
+ return api.callTxMethod({
3437
+ module: 'Tokens',
3438
+ section: 'transfer',
3439
+ parameters: {
3440
+ dest: {
3441
+ Id: address
3442
+ },
3443
+ currency_id: BigInt(asset.assetId),
3444
+ amount: BigInt(asset.amount)
3445
+ }
3446
+ });
3447
+ }
3382
3448
  }, {
3383
3449
  key: "transferEthAssetViaAH",
3384
3450
  value: function () {
@@ -3635,16 +3701,61 @@ var Acala = /*#__PURE__*/function (_ParachainNode) {
3635
3701
  }
3636
3702
  _inherits(Acala, _ParachainNode);
3637
3703
  return _createClass(Acala, [{
3638
- key: "transferXTokens",
3639
- value: function transferXTokens(input) {
3640
- var asset = input.asset;
3641
- var currencySelection = assets.isForeignAsset(asset) ? {
3704
+ key: "getCurrencySelection",
3705
+ value: function getCurrencySelection(asset) {
3706
+ return assets.isForeignAsset(asset) ? {
3642
3707
  ForeignAsset: Number(asset.assetId)
3643
3708
  } : {
3644
3709
  Token: asset.symbol
3645
3710
  };
3711
+ }
3712
+ }, {
3713
+ key: "transferXTokens",
3714
+ value: function transferXTokens(input) {
3715
+ var asset = input.asset;
3716
+ var currencySelection = this.getCurrencySelection(asset);
3646
3717
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
3647
3718
  }
3719
+ }, {
3720
+ key: "transferLocalNativeAsset",
3721
+ value: function transferLocalNativeAsset(options) {
3722
+ var api = options.api,
3723
+ asset = options.asset,
3724
+ address = options.address;
3725
+ return api.callTxMethod({
3726
+ module: 'Currencies',
3727
+ section: 'transfer_native_currency',
3728
+ parameters: {
3729
+ dest: {
3730
+ Id: address
3731
+ },
3732
+ amount: BigInt(asset.amount)
3733
+ }
3734
+ });
3735
+ }
3736
+ }, {
3737
+ key: "transferLocalNonNativeAsset",
3738
+ value: function transferLocalNonNativeAsset(options) {
3739
+ var api = options.api,
3740
+ asset = options.asset,
3741
+ address = options.address;
3742
+ if (asset.symbol.toLowerCase() === 'lcdot') {
3743
+ throw new assets.InvalidCurrencyError('LcDOT local transfers are not supported');
3744
+ }
3745
+ return api.callTxMethod({
3746
+ module: 'Currencies',
3747
+ section: 'transfer',
3748
+ parameters: {
3749
+ dest: {
3750
+ Id: address
3751
+ },
3752
+ currency_id: this.getCurrencySelection(_objectSpread2(_objectSpread2({}, asset), {}, {
3753
+ symbol: asset.symbol === 'aSEED' ? 'AUSD' : asset.symbol
3754
+ })),
3755
+ amount: BigInt(asset.amount)
3756
+ }
3757
+ });
3758
+ }
3648
3759
  }]);
3649
3760
  }(ParachainNode);
3650
3761
 
@@ -3672,6 +3783,30 @@ var Altair = /*#__PURE__*/function (_ParachainNode) {
3672
3783
  var currencySelection = this.getCurrencySelection(asset);
3673
3784
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
3674
3785
  }
3786
+ }, {
3787
+ key: "transferLocalNonNativeAsset",
3788
+ value: function transferLocalNonNativeAsset(options) {
3789
+ var api = options.api,
3790
+ asset = options.asset,
3791
+ address = options.address;
3792
+ if (!assets.isForeignAsset(asset)) {
3793
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
3794
+ }
3795
+ if (asset.assetId === undefined) {
3796
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
3797
+ }
3798
+ return api.callTxMethod({
3799
+ module: 'Tokens',
3800
+ section: 'transfer',
3801
+ parameters: {
3802
+ dest: {
3803
+ Id: address
3804
+ },
3805
+ currency_id: this.getCurrencySelection(asset),
3806
+ amount: BigInt(asset.amount)
3807
+ }
3808
+ });
3809
+ }
3675
3810
  }]);
3676
3811
  }(ParachainNode);
3677
3812
 
@@ -3777,6 +3912,11 @@ var AssetHubKusama = /*#__PURE__*/function (_ParachainNode) {
3777
3912
  value: function createCurrencySpec(amount, scenario, version, asset, isOverridenAsset) {
3778
3913
  return getNode('AssetHubPolkadot').createCurrencySpec(amount, scenario, version, asset, isOverridenAsset);
3779
3914
  }
3915
+ }, {
3916
+ key: "transferLocalNonNativeAsset",
3917
+ value: function transferLocalNonNativeAsset(options) {
3918
+ return getNode('AssetHubPolkadot').transferLocalNonNativeAsset(options);
3919
+ }
3780
3920
  }]);
3781
3921
  }(ParachainNode);
3782
3922
 
@@ -4343,6 +4483,40 @@ var AssetHubPolkadot = /*#__PURE__*/function (_ParachainNode) {
4343
4483
  return _superPropGet(AssetHubPolkadot, "createCurrencySpec", this, 3)([amount, scenario, version, asset]);
4344
4484
  }
4345
4485
  }
4486
+ }, {
4487
+ key: "transferLocalNonNativeAsset",
4488
+ value: function transferLocalNonNativeAsset(options) {
4489
+ var api = options.api,
4490
+ asset = options.asset,
4491
+ address = options.address;
4492
+ if (!assets.isForeignAsset(asset)) {
4493
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
4494
+ }
4495
+ if (asset.assetId !== undefined) {
4496
+ return api.callTxMethod({
4497
+ module: 'Assets',
4498
+ section: 'transfer',
4499
+ parameters: {
4500
+ id: Number(asset.assetId),
4501
+ target: {
4502
+ Id: address
4503
+ },
4504
+ amount: BigInt(asset.amount)
4505
+ }
4506
+ });
4507
+ }
4508
+ return api.callTxMethod({
4509
+ module: 'ForeignAssets',
4510
+ section: 'transfer',
4511
+ parameters: {
4512
+ id: asset.multiLocation,
4513
+ target: {
4514
+ Id: address
4515
+ },
4516
+ amount: BigInt(asset.amount)
4517
+ }
4518
+ });
4519
+ }
4346
4520
  }]);
4347
4521
  }(ParachainNode);
4348
4522
 
@@ -4373,6 +4547,30 @@ var Astar = /*#__PURE__*/function (_ParachainNode) {
4373
4547
  var asset = _ref.asset;
4374
4548
  return asset.symbol !== this.getNativeAssetSymbol();
4375
4549
  }
4550
+ }, {
4551
+ key: "transferLocalNonNativeAsset",
4552
+ value: function transferLocalNonNativeAsset(options) {
4553
+ var api = options.api,
4554
+ asset = options.asset,
4555
+ address = options.address;
4556
+ if (!assets.isForeignAsset(asset)) {
4557
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
4558
+ }
4559
+ if (asset.assetId === undefined) {
4560
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
4561
+ }
4562
+ return api.callTxMethod({
4563
+ module: 'Assets',
4564
+ section: 'transfer',
4565
+ parameters: {
4566
+ id: Number(asset.assetId),
4567
+ target: {
4568
+ Id: address
4569
+ },
4570
+ amount: BigInt(asset.amount)
4571
+ }
4572
+ });
4573
+ }
4376
4574
  }]);
4377
4575
  }(ParachainNode);
4378
4576
 
@@ -4391,6 +4589,16 @@ var Basilisk = /*#__PURE__*/function (_ParachainNode) {
4391
4589
  }
4392
4590
  return XTokensTransferImpl.transferXTokens(input, Number(asset.assetId));
4393
4591
  }
4592
+ }, {
4593
+ key: "transferLocalNativeAsset",
4594
+ value: function transferLocalNativeAsset(options) {
4595
+ return getNode('Hydration').transferLocalNativeAsset(options);
4596
+ }
4597
+ }, {
4598
+ key: "transferLocalNonNativeAsset",
4599
+ value: function transferLocalNonNativeAsset(options) {
4600
+ return getNode('Hydration').transferLocalNonNativeAsset(options);
4601
+ }
4394
4602
  }]);
4395
4603
  }(ParachainNode);
4396
4604
 
@@ -4405,6 +4613,11 @@ var BifrostKusama = /*#__PURE__*/function (_ParachainNode) {
4405
4613
  value: function transferXTokens(input) {
4406
4614
  return getNode('BifrostPolkadot').transferXTokens(input);
4407
4615
  }
4616
+ }, {
4617
+ key: "transferLocalNonNativeAsset",
4618
+ value: function transferLocalNonNativeAsset(options) {
4619
+ return getNode('BifrostPolkadot').transferLocalNonNativeAsset(options);
4620
+ }
4408
4621
  }]);
4409
4622
  }(ParachainNode);
4410
4623
 
@@ -4489,6 +4702,24 @@ var BifrostPolkadot = /*#__PURE__*/function (_ParachainNode) {
4489
4702
  if (destination === 'Ethereum') return false;
4490
4703
  return asset.symbol !== 'WETH' && asset.symbol !== 'DOT' || destination !== 'AssetHubPolkadot';
4491
4704
  }
4705
+ }, {
4706
+ key: "transferLocalNonNativeAsset",
4707
+ value: function transferLocalNonNativeAsset(options) {
4708
+ var api = options.api,
4709
+ asset = options.asset,
4710
+ address = options.address;
4711
+ return api.callTxMethod({
4712
+ module: 'Tokens',
4713
+ section: 'transfer',
4714
+ parameters: {
4715
+ dest: {
4716
+ Id: address
4717
+ },
4718
+ currency_id: this.getCurrencySelection(asset),
4719
+ amount: BigInt(asset.amount)
4720
+ }
4721
+ });
4722
+ }
4492
4723
  }]);
4493
4724
  }(ParachainNode);
4494
4725
 
@@ -4607,6 +4838,30 @@ var Centrifuge = /*#__PURE__*/function (_ParachainNode) {
4607
4838
  var currencySelection = this.getCurrencySelection(asset);
4608
4839
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
4609
4840
  }
4841
+ }, {
4842
+ key: "transferLocalNonNativeAsset",
4843
+ value: function transferLocalNonNativeAsset(options) {
4844
+ var api = options.api,
4845
+ asset = options.asset,
4846
+ address = options.address;
4847
+ if (!assets.isForeignAsset(asset)) {
4848
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
4849
+ }
4850
+ if (asset.assetId === undefined) {
4851
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
4852
+ }
4853
+ return api.callTxMethod({
4854
+ module: 'Tokens',
4855
+ section: 'transfer',
4856
+ parameters: {
4857
+ dest: {
4858
+ Id: address
4859
+ },
4860
+ currency_id: this.getCurrencySelection(asset),
4861
+ amount: BigInt(asset.amount)
4862
+ }
4863
+ });
4864
+ }
4610
4865
  }]);
4611
4866
  }(ParachainNode);
4612
4867
 
@@ -4750,6 +5005,11 @@ var Crab = /*#__PURE__*/function (_ParachainNode) {
4750
5005
  return _superPropGet(Crab, "createCurrencySpec", this, 3)([amount, scenario, version]);
4751
5006
  }
4752
5007
  }
5008
+ }, {
5009
+ key: "transferLocalNonNativeAsset",
5010
+ value: function transferLocalNonNativeAsset(options) {
5011
+ return getNode('Darwinia').transferLocalNonNativeAsset(options);
5012
+ }
4753
5013
  }]);
4754
5014
  }(ParachainNode);
4755
5015
 
@@ -4779,6 +5039,30 @@ var Crust = /*#__PURE__*/function (_ParachainNode) {
4779
5039
  var currencySelection = this.getCurrencySelection(asset);
4780
5040
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
4781
5041
  }
5042
+ }, {
5043
+ key: "transferLocalNonNativeAsset",
5044
+ value: function transferLocalNonNativeAsset(options) {
5045
+ var api = options.api,
5046
+ asset = options.asset,
5047
+ address = options.address;
5048
+ if (!assets.isForeignAsset(asset)) {
5049
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5050
+ }
5051
+ if (asset.assetId === undefined) {
5052
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
5053
+ }
5054
+ return api.callTxMethod({
5055
+ module: 'Assets',
5056
+ section: 'transfer',
5057
+ parameters: {
5058
+ id: BigInt(asset.assetId),
5059
+ target: {
5060
+ Id: address
5061
+ },
5062
+ amount: BigInt(asset.amount)
5063
+ }
5064
+ });
5065
+ }
4782
5066
  }]);
4783
5067
  }(ParachainNode);
4784
5068
 
@@ -4808,6 +5092,11 @@ var CrustShadow = /*#__PURE__*/function (_ParachainNode) {
4808
5092
  var currencySelection = this.getCurrencySelection(asset);
4809
5093
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
4810
5094
  }
5095
+ }, {
5096
+ key: "transferLocalNonNativeAsset",
5097
+ value: function transferLocalNonNativeAsset(options) {
5098
+ return getNode('Crust').transferLocalNonNativeAsset(options);
5099
+ }
4811
5100
  }]);
4812
5101
  }(ParachainNode);
4813
5102
 
@@ -4846,6 +5135,28 @@ var Darwinia = /*#__PURE__*/function (_ParachainNode) {
4846
5135
  }
4847
5136
  return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'reserve_transfer_assets'));
4848
5137
  }
5138
+ }, {
5139
+ key: "transferLocalNonNativeAsset",
5140
+ value: function transferLocalNonNativeAsset(options) {
5141
+ var api = options.api,
5142
+ asset = options.asset,
5143
+ address = options.address;
5144
+ if (!assets.isForeignAsset(asset)) {
5145
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5146
+ }
5147
+ if (asset.assetId === undefined) {
5148
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
5149
+ }
5150
+ return api.callTxMethod({
5151
+ module: 'Assets',
5152
+ section: 'transfer',
5153
+ parameters: {
5154
+ id: BigInt(asset.assetId),
5155
+ target: address,
5156
+ amount: BigInt(asset.amount)
5157
+ }
5158
+ });
5159
+ }
4849
5160
  }]);
4850
5161
  }(ParachainNode);
4851
5162
 
@@ -5057,6 +5368,30 @@ var Polimec = /*#__PURE__*/function (_ParachainNode) {
5057
5368
  }), version, 'Teleport');
5058
5369
  return call;
5059
5370
  }
5371
+ }, {
5372
+ key: "transferLocalNonNativeAsset",
5373
+ value: function transferLocalNonNativeAsset(options) {
5374
+ var api = options.api,
5375
+ asset = options.asset,
5376
+ address = options.address;
5377
+ if (!assets.isForeignAsset(asset)) {
5378
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5379
+ }
5380
+ if (asset.multiLocation === undefined) {
5381
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no multi-location"));
5382
+ }
5383
+ return api.callTxMethod({
5384
+ module: 'ForeignAssets',
5385
+ section: 'transfer',
5386
+ parameters: {
5387
+ id: asset.multiLocation,
5388
+ target: {
5389
+ Id: address
5390
+ },
5391
+ amount: BigInt(asset.amount)
5392
+ }
5393
+ });
5394
+ }
5060
5395
  }]);
5061
5396
  }(ParachainNode);
5062
5397
 
@@ -5186,6 +5521,43 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
5186
5521
  var isEthAsset = asset.multiLocation && assets.findAssetByMultiLocation(assets.getOtherAssets('Ethereum'), asset.multiLocation);
5187
5522
  return destination !== 'Ethereum' && destination !== 'Polimec' && !(destination === 'AssetHubPolkadot' && asset.symbol === 'DOT') && !isEthAsset;
5188
5523
  }
5524
+ }, {
5525
+ key: "transferLocalNativeAsset",
5526
+ value: function transferLocalNativeAsset(options) {
5527
+ var api = options.api,
5528
+ asset = options.asset,
5529
+ address = options.address;
5530
+ return api.callTxMethod({
5531
+ module: 'Balances',
5532
+ section: 'transfer_keep_alive',
5533
+ parameters: {
5534
+ dest: address,
5535
+ value: BigInt(asset.amount)
5536
+ }
5537
+ });
5538
+ }
5539
+ }, {
5540
+ key: "transferLocalNonNativeAsset",
5541
+ value: function transferLocalNonNativeAsset(options) {
5542
+ var api = options.api,
5543
+ asset = options.asset,
5544
+ address = options.address;
5545
+ if (!assets.isForeignAsset(asset)) {
5546
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5547
+ }
5548
+ if (asset.assetId === undefined) {
5549
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
5550
+ }
5551
+ return api.callTxMethod({
5552
+ module: 'Tokens',
5553
+ section: 'transfer',
5554
+ parameters: {
5555
+ dest: address,
5556
+ currency_id: Number(asset.assetId),
5557
+ amount: BigInt(asset.amount)
5558
+ }
5559
+ });
5560
+ }
5189
5561
  }]);
5190
5562
  }(ParachainNode);
5191
5563
  Hydration.NATIVE_ASSET_ID = 0;
@@ -5197,16 +5569,42 @@ var Interlay = /*#__PURE__*/function (_ParachainNode) {
5197
5569
  }
5198
5570
  _inherits(Interlay, _ParachainNode);
5199
5571
  return _createClass(Interlay, [{
5200
- key: "transferXTokens",
5201
- value: function transferXTokens(input) {
5202
- var asset = input.asset;
5203
- var currencySelection = assets.isForeignAsset(asset) ? {
5572
+ key: "getCurrencySelection",
5573
+ value: function getCurrencySelection(asset) {
5574
+ return assets.isForeignAsset(asset) ? {
5204
5575
  ForeignAsset: Number(asset.assetId)
5205
5576
  } : {
5206
5577
  Token: asset.symbol
5207
5578
  };
5579
+ }
5580
+ }, {
5581
+ key: "transferXTokens",
5582
+ value: function transferXTokens(input) {
5583
+ var asset = input.asset;
5584
+ var currencySelection = this.getCurrencySelection(asset);
5208
5585
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
5209
5586
  }
5587
+ }, {
5588
+ key: "transferLocalNativeAsset",
5589
+ value: function transferLocalNativeAsset(options) {
5590
+ return this.transferLocalNonNativeAsset(options);
5591
+ }
5592
+ }, {
5593
+ key: "transferLocalNonNativeAsset",
5594
+ value: function transferLocalNonNativeAsset(options) {
5595
+ var api = options.api,
5596
+ asset = options.asset,
5597
+ address = options.address;
5598
+ return api.callTxMethod({
5599
+ module: 'Tokens',
5600
+ section: 'transfer',
5601
+ parameters: {
5602
+ dest: address,
5603
+ currency_id: this.getCurrencySelection(asset),
5604
+ value: BigInt(asset.amount)
5605
+ }
5606
+ });
5607
+ }
5210
5608
  }]);
5211
5609
  }(ParachainNode);
5212
5610
 
@@ -5239,6 +5637,16 @@ var Karura = /*#__PURE__*/function (_ParachainNode) {
5239
5637
  value: function transferXTokens(input) {
5240
5638
  return getNode('Acala').transferXTokens(input);
5241
5639
  }
5640
+ }, {
5641
+ key: "transferLocalNativeAsset",
5642
+ value: function transferLocalNativeAsset(options) {
5643
+ return getNode('Acala').transferLocalNativeAsset(options);
5644
+ }
5645
+ }, {
5646
+ key: "transferLocalNonNativeAsset",
5647
+ value: function transferLocalNonNativeAsset(options) {
5648
+ return getNode('Acala').transferLocalNonNativeAsset(options);
5649
+ }
5242
5650
  }]);
5243
5651
  }(ParachainNode);
5244
5652
 
@@ -5271,16 +5679,42 @@ var Kintsugi = /*#__PURE__*/function (_ParachainNode) {
5271
5679
  }
5272
5680
  _inherits(Kintsugi, _ParachainNode);
5273
5681
  return _createClass(Kintsugi, [{
5274
- key: "transferXTokens",
5275
- value: function transferXTokens(input) {
5276
- var asset = input.asset;
5277
- var currencySelection = assets.isForeignAsset(asset) ? {
5682
+ key: "getCurrencySelection",
5683
+ value: function getCurrencySelection(asset) {
5684
+ return assets.isForeignAsset(asset) ? {
5278
5685
  ForeignAsset: Number(asset.assetId)
5279
5686
  } : {
5280
5687
  Token: asset.symbol
5281
5688
  };
5689
+ }
5690
+ }, {
5691
+ key: "transferXTokens",
5692
+ value: function transferXTokens(input) {
5693
+ var asset = input.asset;
5694
+ var currencySelection = this.getCurrencySelection(asset);
5282
5695
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
5283
5696
  }
5697
+ }, {
5698
+ key: "transferLocalNativeAsset",
5699
+ value: function transferLocalNativeAsset(options) {
5700
+ return this.transferLocalNonNativeAsset(options);
5701
+ }
5702
+ }, {
5703
+ key: "transferLocalNonNativeAsset",
5704
+ value: function transferLocalNonNativeAsset(options) {
5705
+ var api = options.api,
5706
+ asset = options.asset,
5707
+ address = options.address;
5708
+ return api.callTxMethod({
5709
+ module: 'Tokens',
5710
+ section: 'transfer',
5711
+ parameters: {
5712
+ dest: address,
5713
+ currency_id: this.getCurrencySelection(asset),
5714
+ value: BigInt(asset.amount)
5715
+ }
5716
+ });
5717
+ }
5284
5718
  }]);
5285
5719
  }(ParachainNode);
5286
5720
 
@@ -5308,6 +5742,30 @@ var Manta = /*#__PURE__*/function (_ParachainNode) {
5308
5742
  };
5309
5743
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
5310
5744
  }
5745
+ }, {
5746
+ key: "transferLocalNonNativeAsset",
5747
+ value: function transferLocalNonNativeAsset(options) {
5748
+ var api = options.api,
5749
+ asset = options.asset,
5750
+ address = options.address;
5751
+ if (!assets.isForeignAsset(asset)) {
5752
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5753
+ }
5754
+ if (asset.assetId === undefined) {
5755
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
5756
+ }
5757
+ return api.callTxMethod({
5758
+ module: 'Assets',
5759
+ section: 'transfer',
5760
+ parameters: {
5761
+ id: BigInt(asset.assetId),
5762
+ target: {
5763
+ Id: address
5764
+ },
5765
+ amount: BigInt(asset.amount)
5766
+ }
5767
+ });
5768
+ }
5311
5769
  }]);
5312
5770
  }(ParachainNode);
5313
5771
  Manta.NATIVE_ASSET_ID = 1n;
@@ -5355,6 +5813,28 @@ var Moonbeam = /*#__PURE__*/function (_ParachainNode) {
5355
5813
  includeFee: true
5356
5814
  };
5357
5815
  }
5816
+ }, {
5817
+ key: "transferLocalNonNativeAsset",
5818
+ value: function transferLocalNonNativeAsset(options) {
5819
+ var api = options.api,
5820
+ asset = options.asset,
5821
+ address = options.address;
5822
+ if (!assets.isForeignAsset(asset)) {
5823
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5824
+ }
5825
+ if (asset.assetId === undefined) {
5826
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
5827
+ }
5828
+ return api.callTxMethod({
5829
+ module: 'Assets',
5830
+ section: 'transfer',
5831
+ parameters: {
5832
+ id: BigInt(asset.assetId),
5833
+ target: address,
5834
+ amount: BigInt(asset.amount)
5835
+ }
5836
+ });
5837
+ }
5358
5838
  }]);
5359
5839
  }(ParachainNode);
5360
5840
 
@@ -5401,6 +5881,11 @@ var Moonriver = /*#__PURE__*/function (_ParachainNode) {
5401
5881
  includeFee: true
5402
5882
  };
5403
5883
  }
5884
+ }, {
5885
+ key: "transferLocalNonNativeAsset",
5886
+ value: function transferLocalNonNativeAsset(options) {
5887
+ return getNode('Moonbeam').transferLocalNonNativeAsset(options);
5888
+ }
5404
5889
  }]);
5405
5890
  }(ParachainNode);
5406
5891
 
@@ -5498,6 +5983,30 @@ var Peaq = /*#__PURE__*/function (_ParachainNode) {
5498
5983
  value: function transferRelayToPara() {
5499
5984
  throw new NodeNotSupportedError();
5500
5985
  }
5986
+ }, {
5987
+ key: "transferLocalNonNativeAsset",
5988
+ value: function transferLocalNonNativeAsset(options) {
5989
+ var api = options.api,
5990
+ asset = options.asset,
5991
+ address = options.address;
5992
+ if (!assets.isForeignAsset(asset)) {
5993
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
5994
+ }
5995
+ if (asset.assetId === undefined) {
5996
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
5997
+ }
5998
+ return api.callTxMethod({
5999
+ module: 'Assets',
6000
+ section: 'transfer',
6001
+ parameters: {
6002
+ id: BigInt(asset.assetId),
6003
+ target: {
6004
+ Id: address
6005
+ },
6006
+ amount: BigInt(asset.amount)
6007
+ }
6008
+ });
6009
+ }
5501
6010
  }]);
5502
6011
  }(ParachainNode);
5503
6012
 
@@ -5687,6 +6196,30 @@ var Phala = /*#__PURE__*/function (_ParachainNode) {
5687
6196
  }
5688
6197
  return XTransferTransferImpl.transferXTransfer(input);
5689
6198
  }
6199
+ }, {
6200
+ key: "transferLocalNonNativeAsset",
6201
+ value: function transferLocalNonNativeAsset(options) {
6202
+ var api = options.api,
6203
+ asset = options.asset,
6204
+ address = options.address;
6205
+ if (!assets.isForeignAsset(asset)) {
6206
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
6207
+ }
6208
+ if (asset.assetId === undefined) {
6209
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
6210
+ }
6211
+ return api.callTxMethod({
6212
+ module: 'Assets',
6213
+ section: 'transfer',
6214
+ parameters: {
6215
+ id: BigInt(asset.assetId),
6216
+ target: {
6217
+ Id: address
6218
+ },
6219
+ amount: BigInt(asset.amount)
6220
+ }
6221
+ });
6222
+ }
5690
6223
  }]);
5691
6224
  }(ParachainNode);
5692
6225
 
@@ -5723,6 +6256,11 @@ var RobonomicsKusama = /*#__PURE__*/function (_ParachainNode) {
5723
6256
  value: function transferPolkadotXCM(input) {
5724
6257
  return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
5725
6258
  }
6259
+ }, {
6260
+ key: "transferLocalNonNativeAsset",
6261
+ value: function transferLocalNonNativeAsset(options) {
6262
+ return getNode('RobonomicsPolkadot').transferLocalNonNativeAsset(options);
6263
+ }
5726
6264
  }]);
5727
6265
  }(ParachainNode);
5728
6266
 
@@ -5737,6 +6275,30 @@ var RobonomicsPolkadot = /*#__PURE__*/function (_ParachainNode) {
5737
6275
  value: function transferPolkadotXCM(input) {
5738
6276
  return Promise.resolve(PolkadotXCMTransferImpl.transferPolkadotXCM(input, 'limited_reserve_transfer_assets', 'Unlimited'));
5739
6277
  }
6278
+ }, {
6279
+ key: "transferLocalNonNativeAsset",
6280
+ value: function transferLocalNonNativeAsset(options) {
6281
+ var api = options.api,
6282
+ asset = options.asset,
6283
+ address = options.address;
6284
+ if (!assets.isForeignAsset(asset)) {
6285
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
6286
+ }
6287
+ if (asset.assetId === undefined) {
6288
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
6289
+ }
6290
+ return api.callTxMethod({
6291
+ module: 'Assets',
6292
+ section: 'transfer',
6293
+ parameters: {
6294
+ id: BigInt(asset.assetId),
6295
+ target: {
6296
+ Id: address
6297
+ },
6298
+ amount: BigInt(asset.amount)
6299
+ }
6300
+ });
6301
+ }
5740
6302
  }]);
5741
6303
  }(ParachainNode);
5742
6304
 
@@ -5764,6 +6326,11 @@ var Shiden = /*#__PURE__*/function (_ParachainNode) {
5764
6326
  var asset = _ref.asset;
5765
6327
  return asset.symbol !== this.getNativeAssetSymbol();
5766
6328
  }
6329
+ }, {
6330
+ key: "transferLocalNonNativeAsset",
6331
+ value: function transferLocalNonNativeAsset(options) {
6332
+ return getNode('Astar').transferLocalNonNativeAsset(options);
6333
+ }
5767
6334
  }]);
5768
6335
  }(ParachainNode);
5769
6336
 
@@ -5806,6 +6373,30 @@ var Turing = /*#__PURE__*/function (_ParachainNode) {
5806
6373
  useMultiAssetTransfer: true
5807
6374
  }), BigInt(asset.assetId));
5808
6375
  }
6376
+ }, {
6377
+ key: "transferLocalNonNativeAsset",
6378
+ value: function transferLocalNonNativeAsset(options) {
6379
+ var api = options.api,
6380
+ asset = options.asset,
6381
+ address = options.address;
6382
+ if (!assets.isForeignAsset(asset)) {
6383
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
6384
+ }
6385
+ if (asset.assetId === undefined) {
6386
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
6387
+ }
6388
+ return api.callTxMethod({
6389
+ module: 'Currencies',
6390
+ section: 'transfer',
6391
+ parameters: {
6392
+ dest: {
6393
+ Id: address
6394
+ },
6395
+ currency_id: BigInt(asset.assetId),
6396
+ amount: BigInt(asset.amount)
6397
+ }
6398
+ });
6399
+ }
5809
6400
  }]);
5810
6401
  }(ParachainNode);
5811
6402
 
@@ -5827,6 +6418,11 @@ var Unique = /*#__PURE__*/function (_ParachainNode) {
5827
6418
  }
5828
6419
  return XTokensTransferImpl.transferXTokens(input, Number(asset.assetId));
5829
6420
  }
6421
+ }, {
6422
+ key: "transferLocalNonNativeAsset",
6423
+ value: function transferLocalNonNativeAsset(_options) {
6424
+ throw new ScenarioNotSupportedError(this.node, 'ParaToPara', "".concat(this.node, " does not support foreign assets local transfers"));
6425
+ }
5830
6426
  }]);
5831
6427
  }(ParachainNode);
5832
6428
  Unique.NATIVE_ASSET_ID = 0;
@@ -5855,6 +6451,30 @@ var Zeitgeist = /*#__PURE__*/function (_ParachainNode) {
5855
6451
  var currencySelection = this.getCurrencySelection(asset);
5856
6452
  return XTokensTransferImpl.transferXTokens(input, currencySelection);
5857
6453
  }
6454
+ }, {
6455
+ key: "transferLocalNonNativeAsset",
6456
+ value: function transferLocalNonNativeAsset(options) {
6457
+ var api = options.api,
6458
+ asset = options.asset,
6459
+ address = options.address;
6460
+ if (!assets.isForeignAsset(asset)) {
6461
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " is not a foreign asset"));
6462
+ }
6463
+ if (asset.assetId === undefined) {
6464
+ throw new assets.InvalidCurrencyError("Asset ".concat(JSON.stringify(asset), " has no assetId"));
6465
+ }
6466
+ return api.callTxMethod({
6467
+ module: 'AssetManager',
6468
+ section: 'transfer',
6469
+ parameters: {
6470
+ dest: {
6471
+ Id: address
6472
+ },
6473
+ currency_id: this.getCurrencySelection(asset),
6474
+ amount: BigInt(asset.amount)
6475
+ }
6476
+ });
6477
+ }
5858
6478
  }]);
5859
6479
  }(ParachainNode);
5860
6480
 
@@ -6517,7 +7137,7 @@ var validateCurrency = function validateCurrency(currency, feeAsset) {
6517
7137
  }
6518
7138
  };
6519
7139
  var validateDestination = function validateDestination(origin, destination) {
6520
- if (sdkCommon.isRelayChain(origin) && !sdkCommon.isTMultiLocation(destination) && sdkCommon.isRelayChain(destination)) {
7140
+ if (sdkCommon.isRelayChain(origin) && !sdkCommon.isTMultiLocation(destination) && sdkCommon.isRelayChain(destination) && origin !== destination) {
6521
7141
  throw new IncompatibleNodesError('Direct relay chain to relay chain transfers are not supported. Please use Polkadot <-> Kusama bridge through AssetHub.');
6522
7142
  }
6523
7143
  if (destination === 'Ethereum' && origin !== 'AssetHubPolkadot' && origin !== 'Hydration' && origin !== 'BifrostPolkadot') {
@@ -6646,7 +7266,7 @@ var validateDestinationAddress = function validateDestinationAddress(address, de
6646
7266
 
6647
7267
  var send = /*#__PURE__*/function () {
6648
7268
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
6649
- var api, origin, currency, feeAsset, address, destination, paraIdTo, version, senderAddress, pallet, method, isBridge, assetCheckEnabled, asset, resolvedFeeAsset, overriddenAsset, resolvedAsset, originNode;
7269
+ var api, origin, currency, feeAsset, address, destination, paraIdTo, version, senderAddress, pallet, method, isBridge, assetCheckEnabled, asset, resolvedFeeAsset, isLocalTransfer, overriddenAsset, resolvedAsset, originNode;
6650
7270
  return _regeneratorRuntime().wrap(function _callee$(_context) {
6651
7271
  while (1) switch (_context.prev = _context.next) {
6652
7272
  case 0:
@@ -6655,12 +7275,6 @@ var send = /*#__PURE__*/function () {
6655
7275
  validateDestination(origin, destination);
6656
7276
  validateDestinationAddress(address, destination);
6657
7277
  if (senderAddress) validateAddress(senderAddress, origin, false);
6658
- if (!(sdkCommon.isRelayChain(origin) && !sdkCommon.isTMultiLocation(destination) && sdkCommon.isRelayChain(destination))) {
6659
- _context.next = 7;
6660
- break;
6661
- }
6662
- throw new Error('Relay chain to relay chain transfers are not supported.');
6663
- case 7:
6664
7278
  isBridge = isBridgeTransfer(origin, destination);
6665
7279
  assetCheckEnabled = determineAssetCheckEnabled(origin, currency);
6666
7280
  validateAssetSpecifiers(assetCheckEnabled, currency);
@@ -6668,21 +7282,46 @@ var send = /*#__PURE__*/function () {
6668
7282
  resolvedFeeAsset = feeAsset ? resolveFeeAsset(feeAsset, origin, destination, currency) : undefined;
6669
7283
  validateAssetSupport(options, assetCheckEnabled, isBridge, asset);
6670
7284
  if (!sdkCommon.isRelayChain(origin)) {
6671
- _context.next = 19;
7285
+ _context.next = 24;
6672
7286
  break;
6673
7287
  }
6674
7288
  if (!(destination === 'Ethereum')) {
6675
- _context.next = 16;
7289
+ _context.next = 14;
6676
7290
  break;
6677
7291
  }
6678
7292
  throw new Error('Transfers from relay chain to Ethereum are not supported.');
6679
- case 16:
7293
+ case 14:
6680
7294
  if (asset) {
6681
- _context.next = 18;
7295
+ _context.next = 16;
6682
7296
  break;
6683
7297
  }
6684
7298
  throw new Error('Asset is required for relay chain to relay chain transfers.');
6685
- case 18:
7299
+ case 16:
7300
+ isLocalTransfer = origin === destination;
7301
+ if (!isLocalTransfer) {
7302
+ _context.next = 23;
7303
+ break;
7304
+ }
7305
+ if (!sdkCommon.isTMultiLocation(address)) {
7306
+ _context.next = 20;
7307
+ break;
7308
+ }
7309
+ throw new InvalidAddressError('Multi-Location address is not supported for local transfers.');
7310
+ case 20:
7311
+ _context.next = 22;
7312
+ return api.init(origin);
7313
+ case 22:
7314
+ return _context.abrupt("return", api.callTxMethod({
7315
+ module: 'Balances',
7316
+ section: 'transfer_keep_alive',
7317
+ parameters: {
7318
+ dest: {
7319
+ Id: address
7320
+ },
7321
+ value: 'multiasset' in currency ? 0n : BigInt(currency.amount)
7322
+ }
7323
+ }));
7324
+ case 23:
6686
7325
  return _context.abrupt("return", transferRelayToPara({
6687
7326
  api: api,
6688
7327
  origin: origin,
@@ -6696,11 +7335,11 @@ var send = /*#__PURE__*/function () {
6696
7335
  pallet: pallet,
6697
7336
  method: method
6698
7337
  }));
6699
- case 19:
7338
+ case 24:
6700
7339
  overriddenAsset = resolveOverriddenAsset(options, isBridge, assetCheckEnabled, resolvedFeeAsset);
6701
- _context.next = 22;
7340
+ _context.next = 27;
6702
7341
  return api.init(origin);
6703
- case 22:
7342
+ case 27:
6704
7343
  // In case asset check is disabled, we create asset object from currency symbol
6705
7344
  resolvedAsset = asset !== null && asset !== void 0 ? asset : {
6706
7345
  symbol: 'symbol' in currency ? currency.symbol : undefined
@@ -6721,7 +7360,7 @@ var send = /*#__PURE__*/function () {
6721
7360
  pallet: pallet,
6722
7361
  method: method
6723
7362
  }));
6724
- case 25:
7363
+ case 30:
6725
7364
  case "end":
6726
7365
  return _context.stop();
6727
7366
  }
@@ -6975,6 +7614,7 @@ var GeneralBuilder = /*#__PURE__*/function () {
6975
7614
  key: "build",
6976
7615
  value: (function () {
6977
7616
  var _build = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
7617
+ var _this$_options, from, to;
6978
7618
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
6979
7619
  while (1) switch (_context2.prev = _context2.next) {
6980
7620
  case 0:
@@ -6984,16 +7624,17 @@ var GeneralBuilder = /*#__PURE__*/function () {
6984
7624
  }
6985
7625
  throw new Error('Transaction manager contains batched items. Use buildBatch() to process them.');
6986
7626
  case 2:
6987
- if (!(!sdkCommon.isTMultiLocation(this._options.to) && sdkCommon.isRelayChain(this._options.from) && sdkCommon.isRelayChain(this._options.to))) {
6988
- _context2.next = 4;
7627
+ _this$_options = this._options, from = _this$_options.from, to = _this$_options.to;
7628
+ if (!(!sdkCommon.isTMultiLocation(to) && sdkCommon.isRelayChain(from) && sdkCommon.isRelayChain(to) && from !== to)) {
7629
+ _context2.next = 5;
6989
7630
  break;
6990
7631
  }
6991
7632
  throw new Error('Transfers between relay chains are not yet supported.');
6992
- case 4:
7633
+ case 5:
6993
7634
  return _context2.abrupt("return", send(_objectSpread2({
6994
7635
  api: this.api
6995
7636
  }, this._options)));
6996
- case 5:
7637
+ case 6:
6997
7638
  case "end":
6998
7639
  return _context2.stop();
6999
7640
  }