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