@paraspell/sdk-core 10.11.8 → 10.11.10
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 +75 -31
- package/dist/index.d.ts +9 -7
- package/dist/index.mjs +75 -31
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -3526,16 +3526,16 @@ var ERC20_ABI$1 = [{
|
|
|
3526
3526
|
}]
|
|
3527
3527
|
}];
|
|
3528
3528
|
var getMoonbeamErc20Balance = /*#__PURE__*/function () {
|
|
3529
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(
|
|
3529
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, assetId, address) {
|
|
3530
3530
|
var client, tokenAddress;
|
|
3531
3531
|
return _regenerator().w(function (_context) {
|
|
3532
3532
|
while (1) switch (_context.n) {
|
|
3533
3533
|
case 0:
|
|
3534
3534
|
client = viem.createPublicClient({
|
|
3535
|
-
chain:
|
|
3536
|
-
transport: viem.http()
|
|
3535
|
+
chain: chain === 'Moonbeam' ? chains.moonbeam : chains.moonriver,
|
|
3536
|
+
transport: viem.http(chain === 'Moonbeam' ? 'https://rpc.api.moonbeam.network/' : 'https://rpc.api.moonriver.moonbeam.network')
|
|
3537
3537
|
});
|
|
3538
|
-
tokenAddress = formatAssetIdToERC20(assetId);
|
|
3538
|
+
tokenAddress = assetId.startsWith('0x') ? assetId : formatAssetIdToERC20(assetId);
|
|
3539
3539
|
_context.n = 1;
|
|
3540
3540
|
return client.readContract({
|
|
3541
3541
|
address: tokenAddress,
|
|
@@ -8031,20 +8031,20 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8031
8031
|
}
|
|
8032
8032
|
}, {
|
|
8033
8033
|
key: "canUseXTokens",
|
|
8034
|
-
value: function canUseXTokens(
|
|
8035
|
-
var asset =
|
|
8034
|
+
value: function canUseXTokens(options) {
|
|
8035
|
+
var asset = options.asset;
|
|
8036
8036
|
var isEthAsset = asset.multiLocation && assets.findAssetByMultiLocation(assets.getOtherAssets('Ethereum'), asset.multiLocation);
|
|
8037
|
-
return !isEthAsset;
|
|
8037
|
+
return !isEthAsset && !this.shouldUseNativeAssetTeleport(options);
|
|
8038
8038
|
}
|
|
8039
8039
|
}, {
|
|
8040
8040
|
key: "transfer",
|
|
8041
8041
|
value: function () {
|
|
8042
|
-
var _transfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(
|
|
8043
|
-
var api, asset, currency, feeAsset, feeCurrency, address, destination, paraIdTo, overriddenAsset, version, senderAddress, ahAddress, pallet, method, scenario, paraId, isLocalTransfer, isBifrostOrigin, isJamtonOrigin, isAssetHubDest, shouldUseMultiasset, input,
|
|
8042
|
+
var _transfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(sendOptions) {
|
|
8043
|
+
var api, asset, currency, feeAsset, feeCurrency, address, destination, paraIdTo, overriddenAsset, version, senderAddress, ahAddress, pallet, method, scenario, paraId, isLocalTransfer, isBifrostOrigin, isJamtonOrigin, isAssetHubDest, shouldUseMultiasset, input, options, shouldUseTeleport, isAHPOrigin, isAHPDest, isEthAsset, isEthDest, isEthAssetViaAh, isEthAssetToAh, call;
|
|
8044
8044
|
return _regenerator().w(function (_context) {
|
|
8045
8045
|
while (1) switch (_context.n) {
|
|
8046
8046
|
case 0:
|
|
8047
|
-
api =
|
|
8047
|
+
api = sendOptions.api, asset = sendOptions.asset, currency = sendOptions.currency, feeAsset = sendOptions.feeAsset, feeCurrency = sendOptions.feeCurrency, address = sendOptions.address, destination = sendOptions.to, paraIdTo = sendOptions.paraIdTo, overriddenAsset = sendOptions.overriddenAsset, version = sendOptions.version, senderAddress = sendOptions.senderAddress, ahAddress = sendOptions.ahAddress, pallet = sendOptions.pallet, method = sendOptions.method;
|
|
8048
8048
|
scenario = resolveScenario(this.node, destination);
|
|
8049
8049
|
paraId = resolveParaId(paraIdTo, destination);
|
|
8050
8050
|
if (!(destination === 'Polimec' && this.node !== 'AssetHubPolkadot' && this.node !== 'Hydration' && this.node !== destination)) {
|
|
@@ -8058,9 +8058,9 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8058
8058
|
_context.n = 2;
|
|
8059
8059
|
break;
|
|
8060
8060
|
}
|
|
8061
|
-
return _context.a(2, this.transferLocal(
|
|
8061
|
+
return _context.a(2, this.transferLocal(sendOptions));
|
|
8062
8062
|
case 2:
|
|
8063
|
-
if (!(supportsXTokens(this) && this.canUseXTokens(
|
|
8063
|
+
if (!(supportsXTokens(this) && this.canUseXTokens(sendOptions))) {
|
|
8064
8064
|
_context.n = 4;
|
|
8065
8065
|
break;
|
|
8066
8066
|
}
|
|
@@ -8106,10 +8106,10 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8106
8106
|
}));
|
|
8107
8107
|
case 5:
|
|
8108
8108
|
if (!supportsPolkadotXCM(this)) {
|
|
8109
|
-
_context.n =
|
|
8109
|
+
_context.n = 9;
|
|
8110
8110
|
break;
|
|
8111
8111
|
}
|
|
8112
|
-
|
|
8112
|
+
options = {
|
|
8113
8113
|
api: api,
|
|
8114
8114
|
destLocation: createDestination(version, this.node, destination, paraId),
|
|
8115
8115
|
beneficiaryLocation: createBeneficiaryLocation({
|
|
@@ -8132,27 +8132,34 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8132
8132
|
ahAddress: ahAddress,
|
|
8133
8133
|
pallet: pallet,
|
|
8134
8134
|
method: method
|
|
8135
|
-
};
|
|
8135
|
+
};
|
|
8136
|
+
shouldUseTeleport = this.shouldUseNativeAssetTeleport(sendOptions);
|
|
8137
|
+
if (!shouldUseTeleport) {
|
|
8138
|
+
_context.n = 6;
|
|
8139
|
+
break;
|
|
8140
|
+
}
|
|
8141
|
+
throw new TransferToAhNotSupported('Native asset transfers to or from AssetHub are temporarily disabled');
|
|
8142
|
+
case 6:
|
|
8143
|
+
isAHPOrigin = this.node.includes('AssetHub');
|
|
8144
|
+
isAHPDest = !sdkCommon.isTMultiLocation(destination) && destination.includes('AssetHub'); // Handle common cases
|
|
8136
8145
|
isEthAsset = asset.multiLocation && assets.findAssetByMultiLocation(assets.getOtherAssets('Ethereum'), asset.multiLocation);
|
|
8137
|
-
isAHPOrigin = this.node === 'AssetHubPolkadot' || this.node === 'AssetHubKusama';
|
|
8138
|
-
isAHPDest = destination === 'AssetHubPolkadot' || destination === 'AssetHubKusama';
|
|
8139
8146
|
isEthDest = destination === 'Ethereum'; // Eth asset - Any origin to any dest via AH - DestinationReserve - multiple instructions
|
|
8140
8147
|
isEthAssetViaAh = isEthAsset && !isAHPOrigin && !isAHPDest && !isEthDest && !feeAsset; // Eth asset - Any origin to AHP - DestinationReserve - one DepositAsset instruction
|
|
8141
8148
|
isEthAssetToAh = isEthAsset && isAHPDest && !isAHPOrigin && !isEthDest && !feeAsset;
|
|
8142
8149
|
if (!(isEthAssetViaAh || isEthAssetToAh)) {
|
|
8143
|
-
_context.n =
|
|
8150
|
+
_context.n = 8;
|
|
8144
8151
|
break;
|
|
8145
8152
|
}
|
|
8146
|
-
_context.n =
|
|
8147
|
-
return createTypeAndThenCall(this.node,
|
|
8148
|
-
case
|
|
8153
|
+
_context.n = 7;
|
|
8154
|
+
return createTypeAndThenCall(this.node, options);
|
|
8155
|
+
case 7:
|
|
8149
8156
|
call = _context.v;
|
|
8150
8157
|
return _context.a(2, api.callTxMethod(call));
|
|
8151
|
-
case 7:
|
|
8152
|
-
return _context.a(2, this.transferPolkadotXCM(_options));
|
|
8153
8158
|
case 8:
|
|
8154
|
-
|
|
8159
|
+
return _context.a(2, this.transferPolkadotXCM(options));
|
|
8155
8160
|
case 9:
|
|
8161
|
+
throw new NoXCMSupportImplementedError(this._node);
|
|
8162
|
+
case 10:
|
|
8156
8163
|
return _context.a(2);
|
|
8157
8164
|
}
|
|
8158
8165
|
}, _callee, this);
|
|
@@ -8162,6 +8169,21 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8162
8169
|
}
|
|
8163
8170
|
return transfer;
|
|
8164
8171
|
}()
|
|
8172
|
+
}, {
|
|
8173
|
+
key: "shouldUseNativeAssetTeleport",
|
|
8174
|
+
value: function shouldUseNativeAssetTeleport(_ref) {
|
|
8175
|
+
var asset = _ref.asset,
|
|
8176
|
+
to = _ref.to;
|
|
8177
|
+
if (sdkCommon.isTMultiLocation(to) || sdkCommon.isDotKsmBridge(this.node, to) || to === 'Ethereum') return false;
|
|
8178
|
+
var isAHPOrigin = this.node.includes('AssetHub');
|
|
8179
|
+
var isAHPDest = !sdkCommon.isTMultiLocation(to) && to.includes('AssetHub');
|
|
8180
|
+
var isNativeAsset = !sdkCommon.isTMultiLocation(to) && (isAHPOrigin && assets.isForeignAsset(asset) && assets.isSymbolMatch(asset.symbol, assets.getNativeAssetSymbol(to)) || isAHPDest && !assets.isForeignAsset(asset) && assets.isSymbolMatch(asset.symbol, assets.getNativeAssetSymbol(this.node)));
|
|
8181
|
+
var assetHubChain = "AssetHub".concat(getRelayChainOf(this.node));
|
|
8182
|
+
var isRegisteredOnAh = asset.multiLocation && assets.findAsset(assetHubChain, {
|
|
8183
|
+
multilocation: asset.multiLocation
|
|
8184
|
+
}, null);
|
|
8185
|
+
return isNativeAsset && Boolean(isRegisteredOnAh) && (isAHPOrigin || isAHPDest);
|
|
8186
|
+
}
|
|
8165
8187
|
}, {
|
|
8166
8188
|
key: "getRelayToParaOverrides",
|
|
8167
8189
|
value: function getRelayToParaOverrides() {
|
|
@@ -10122,24 +10144,46 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
|
|
|
10122
10144
|
}
|
|
10123
10145
|
return transferPolkadotXCM;
|
|
10124
10146
|
}()
|
|
10147
|
+
}, {
|
|
10148
|
+
key: "transferMoonbeamWhAsset",
|
|
10149
|
+
value: function transferMoonbeamWhAsset(input) {
|
|
10150
|
+
var asset = input.asset,
|
|
10151
|
+
version = input.version;
|
|
10152
|
+
assertHasLocation(asset);
|
|
10153
|
+
var glmr = assets.findAssetForNodeOrThrow(this.node, {
|
|
10154
|
+
symbol: assets.getNativeAssetSymbol('Moonbeam')
|
|
10155
|
+
}, null);
|
|
10156
|
+
var FEE_AMOUNT = 80000000000000000n; // 0.08 GLMR
|
|
10157
|
+
assertHasLocation(glmr);
|
|
10158
|
+
return transferXTokens(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
10159
|
+
overriddenAsset: [_objectSpread2(_objectSpread2({}, createMultiAsset(version, FEE_AMOUNT, glmr.multiLocation)), {}, {
|
|
10160
|
+
isFeeAsset: true
|
|
10161
|
+
}), createMultiAsset(version, asset.amount, asset.multiLocation)]
|
|
10162
|
+
}), Number(asset.assetId));
|
|
10163
|
+
}
|
|
10125
10164
|
}, {
|
|
10126
10165
|
key: "transferXTokens",
|
|
10127
10166
|
value: function transferXTokens$1(input) {
|
|
10128
|
-
var asset = input.asset
|
|
10167
|
+
var asset = input.asset,
|
|
10168
|
+
destination = input.destination;
|
|
10129
10169
|
if (asset.symbol === this.getNativeAssetSymbol()) {
|
|
10130
10170
|
return transferXTokens(input, Hydration.NATIVE_ASSET_ID);
|
|
10131
10171
|
}
|
|
10172
|
+
var isMoonbeamWhAsset = asset.multiLocation && sdkCommon.hasJunction(asset.multiLocation, 'Parachain', getParaId('Moonbeam')) && sdkCommon.hasJunction(asset.multiLocation, 'PalletInstance', 110);
|
|
10173
|
+
if (isMoonbeamWhAsset && destination === 'Moonbeam') {
|
|
10174
|
+
return this.transferMoonbeamWhAsset(input);
|
|
10175
|
+
}
|
|
10132
10176
|
assertHasId(asset);
|
|
10133
10177
|
return transferXTokens(input, Number(asset.assetId));
|
|
10134
10178
|
}
|
|
10135
10179
|
}, {
|
|
10136
10180
|
key: "canUseXTokens",
|
|
10137
|
-
value: function canUseXTokens(
|
|
10138
|
-
var destination =
|
|
10139
|
-
asset =
|
|
10140
|
-
feeAsset =
|
|
10141
|
-
var
|
|
10142
|
-
return destination !== 'Ethereum' && destination !== 'Polimec' && !(destination === 'AssetHubPolkadot' && asset.symbol === 'DOT') &&
|
|
10181
|
+
value: function canUseXTokens(options) {
|
|
10182
|
+
var destination = options.to,
|
|
10183
|
+
asset = options.asset,
|
|
10184
|
+
feeAsset = options.feeAsset;
|
|
10185
|
+
var baseCanUseXTokens = _superPropGet(Hydration, "canUseXTokens", this, 3)([options]);
|
|
10186
|
+
return destination !== 'Ethereum' && destination !== 'Polimec' && !(destination === 'AssetHubPolkadot' && asset.symbol === 'DOT') && baseCanUseXTokens && !feeAsset;
|
|
10143
10187
|
}
|
|
10144
10188
|
}, {
|
|
10145
10189
|
key: "transferLocalNativeAsset",
|
package/dist/index.d.ts
CHANGED
|
@@ -1387,8 +1387,9 @@ declare abstract class ParachainNode<TApi, TRes> {
|
|
|
1387
1387
|
get type(): TEcosystemType;
|
|
1388
1388
|
get node(): TNodePolkadotKusama;
|
|
1389
1389
|
get version(): Version;
|
|
1390
|
-
|
|
1391
|
-
transfer(
|
|
1390
|
+
canUseXTokens(options: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1391
|
+
transfer(sendOptions: TSendInternalOptions<TApi, TRes>): Promise<TRes>;
|
|
1392
|
+
shouldUseNativeAssetTeleport({ asset, to }: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1392
1393
|
getRelayToParaOverrides(): TRelayToParaOverrides;
|
|
1393
1394
|
transferRelayToPara(options: TRelayToParaOptions<TApi, TRes>): TSerializedApiCall;
|
|
1394
1395
|
createCurrencySpec(amount: bigint, scenario: TScenario, version: Version, _asset?: TAsset, _isOverridenAsset?: boolean): TMultiAsset;
|
|
@@ -1411,7 +1412,7 @@ declare class Ajuna<TApi, TRes> extends ParachainNode<TApi, TRes> implements IXT
|
|
|
1411
1412
|
constructor(chain?: TNodePolkadotKusama, info?: string, type?: TEcosystemType, version?: Version);
|
|
1412
1413
|
transferXTokens<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
|
|
1413
1414
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1414
|
-
|
|
1415
|
+
canUseXTokens({ asset, to: destination }: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1415
1416
|
transferRelayToPara(): TSerializedApiCall;
|
|
1416
1417
|
transferLocalNonNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
|
|
1417
1418
|
}
|
|
@@ -1466,7 +1467,7 @@ declare class Astar<TApi, TRes> extends ParachainNode<TApi, TRes> implements IPo
|
|
|
1466
1467
|
constructor();
|
|
1467
1468
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1468
1469
|
transferXTokens<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
|
|
1469
|
-
|
|
1470
|
+
canUseXTokens({ asset }: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1470
1471
|
transferLocalNonNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
|
|
1471
1472
|
}
|
|
1472
1473
|
|
|
@@ -1531,7 +1532,7 @@ declare class BifrostPolkadot<TApi, TRes> extends ParachainNode<TApi, TRes> impl
|
|
|
1531
1532
|
transferXTokens<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
|
|
1532
1533
|
transferToAssetHub<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1533
1534
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1534
|
-
|
|
1535
|
+
canUseXTokens({ asset, to: destination }: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1535
1536
|
transferLocalNonNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
|
|
1536
1537
|
}
|
|
1537
1538
|
|
|
@@ -1666,8 +1667,9 @@ declare class Hydration<TApi, TRes> extends ParachainNode<TApi, TRes> implements
|
|
|
1666
1667
|
transferToAssetHub<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): TRes;
|
|
1667
1668
|
transferToPolimec<TApi, TRes>(options: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1668
1669
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1670
|
+
transferMoonbeamWhAsset<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
|
|
1669
1671
|
transferXTokens<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
|
|
1670
|
-
|
|
1672
|
+
canUseXTokens(options: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1671
1673
|
transferLocalNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
|
|
1672
1674
|
transferLocalNonNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
|
|
1673
1675
|
}
|
|
@@ -1862,7 +1864,7 @@ declare class Shiden<TApi, TRes> extends ParachainNode<TApi, TRes> implements IP
|
|
|
1862
1864
|
constructor();
|
|
1863
1865
|
transferPolkadotXCM<TApi, TRes>(input: TPolkadotXCMTransferOptions<TApi, TRes>): Promise<TRes>;
|
|
1864
1866
|
transferXTokens<TApi, TRes>(input: TXTokensTransferOptions<TApi, TRes>): TRes;
|
|
1865
|
-
|
|
1867
|
+
canUseXTokens({ asset }: TSendInternalOptions<TApi, TRes>): boolean;
|
|
1866
1868
|
transferLocalNonNativeAsset(options: TTransferLocalOptions<TApi, TRes>): TRes;
|
|
1867
1869
|
}
|
|
1868
1870
|
|
package/dist/index.mjs
CHANGED
|
@@ -3527,16 +3527,16 @@ var ERC20_ABI$1 = [{
|
|
|
3527
3527
|
}]
|
|
3528
3528
|
}];
|
|
3529
3529
|
var getMoonbeamErc20Balance = /*#__PURE__*/function () {
|
|
3530
|
-
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(
|
|
3530
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(chain, assetId, address) {
|
|
3531
3531
|
var client, tokenAddress;
|
|
3532
3532
|
return _regenerator().w(function (_context) {
|
|
3533
3533
|
while (1) switch (_context.n) {
|
|
3534
3534
|
case 0:
|
|
3535
3535
|
client = createPublicClient({
|
|
3536
|
-
chain:
|
|
3537
|
-
transport: http()
|
|
3536
|
+
chain: chain === 'Moonbeam' ? moonbeam : moonriver,
|
|
3537
|
+
transport: http(chain === 'Moonbeam' ? 'https://rpc.api.moonbeam.network/' : 'https://rpc.api.moonriver.moonbeam.network')
|
|
3538
3538
|
});
|
|
3539
|
-
tokenAddress = formatAssetIdToERC20(assetId);
|
|
3539
|
+
tokenAddress = assetId.startsWith('0x') ? assetId : formatAssetIdToERC20(assetId);
|
|
3540
3540
|
_context.n = 1;
|
|
3541
3541
|
return client.readContract({
|
|
3542
3542
|
address: tokenAddress,
|
|
@@ -8032,20 +8032,20 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8032
8032
|
}
|
|
8033
8033
|
}, {
|
|
8034
8034
|
key: "canUseXTokens",
|
|
8035
|
-
value: function canUseXTokens(
|
|
8036
|
-
var asset =
|
|
8035
|
+
value: function canUseXTokens(options) {
|
|
8036
|
+
var asset = options.asset;
|
|
8037
8037
|
var isEthAsset = asset.multiLocation && findAssetByMultiLocation(getOtherAssets('Ethereum'), asset.multiLocation);
|
|
8038
|
-
return !isEthAsset;
|
|
8038
|
+
return !isEthAsset && !this.shouldUseNativeAssetTeleport(options);
|
|
8039
8039
|
}
|
|
8040
8040
|
}, {
|
|
8041
8041
|
key: "transfer",
|
|
8042
8042
|
value: function () {
|
|
8043
|
-
var _transfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(
|
|
8044
|
-
var api, asset, currency, feeAsset, feeCurrency, address, destination, paraIdTo, overriddenAsset, version, senderAddress, ahAddress, pallet, method, scenario, paraId, isLocalTransfer, isBifrostOrigin, isJamtonOrigin, isAssetHubDest, shouldUseMultiasset, input,
|
|
8043
|
+
var _transfer = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(sendOptions) {
|
|
8044
|
+
var api, asset, currency, feeAsset, feeCurrency, address, destination, paraIdTo, overriddenAsset, version, senderAddress, ahAddress, pallet, method, scenario, paraId, isLocalTransfer, isBifrostOrigin, isJamtonOrigin, isAssetHubDest, shouldUseMultiasset, input, options, shouldUseTeleport, isAHPOrigin, isAHPDest, isEthAsset, isEthDest, isEthAssetViaAh, isEthAssetToAh, call;
|
|
8045
8045
|
return _regenerator().w(function (_context) {
|
|
8046
8046
|
while (1) switch (_context.n) {
|
|
8047
8047
|
case 0:
|
|
8048
|
-
api =
|
|
8048
|
+
api = sendOptions.api, asset = sendOptions.asset, currency = sendOptions.currency, feeAsset = sendOptions.feeAsset, feeCurrency = sendOptions.feeCurrency, address = sendOptions.address, destination = sendOptions.to, paraIdTo = sendOptions.paraIdTo, overriddenAsset = sendOptions.overriddenAsset, version = sendOptions.version, senderAddress = sendOptions.senderAddress, ahAddress = sendOptions.ahAddress, pallet = sendOptions.pallet, method = sendOptions.method;
|
|
8049
8049
|
scenario = resolveScenario(this.node, destination);
|
|
8050
8050
|
paraId = resolveParaId(paraIdTo, destination);
|
|
8051
8051
|
if (!(destination === 'Polimec' && this.node !== 'AssetHubPolkadot' && this.node !== 'Hydration' && this.node !== destination)) {
|
|
@@ -8059,9 +8059,9 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8059
8059
|
_context.n = 2;
|
|
8060
8060
|
break;
|
|
8061
8061
|
}
|
|
8062
|
-
return _context.a(2, this.transferLocal(
|
|
8062
|
+
return _context.a(2, this.transferLocal(sendOptions));
|
|
8063
8063
|
case 2:
|
|
8064
|
-
if (!(supportsXTokens(this) && this.canUseXTokens(
|
|
8064
|
+
if (!(supportsXTokens(this) && this.canUseXTokens(sendOptions))) {
|
|
8065
8065
|
_context.n = 4;
|
|
8066
8066
|
break;
|
|
8067
8067
|
}
|
|
@@ -8107,10 +8107,10 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8107
8107
|
}));
|
|
8108
8108
|
case 5:
|
|
8109
8109
|
if (!supportsPolkadotXCM(this)) {
|
|
8110
|
-
_context.n =
|
|
8110
|
+
_context.n = 9;
|
|
8111
8111
|
break;
|
|
8112
8112
|
}
|
|
8113
|
-
|
|
8113
|
+
options = {
|
|
8114
8114
|
api: api,
|
|
8115
8115
|
destLocation: createDestination(version, this.node, destination, paraId),
|
|
8116
8116
|
beneficiaryLocation: createBeneficiaryLocation({
|
|
@@ -8133,27 +8133,34 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8133
8133
|
ahAddress: ahAddress,
|
|
8134
8134
|
pallet: pallet,
|
|
8135
8135
|
method: method
|
|
8136
|
-
};
|
|
8136
|
+
};
|
|
8137
|
+
shouldUseTeleport = this.shouldUseNativeAssetTeleport(sendOptions);
|
|
8138
|
+
if (!shouldUseTeleport) {
|
|
8139
|
+
_context.n = 6;
|
|
8140
|
+
break;
|
|
8141
|
+
}
|
|
8142
|
+
throw new TransferToAhNotSupported('Native asset transfers to or from AssetHub are temporarily disabled');
|
|
8143
|
+
case 6:
|
|
8144
|
+
isAHPOrigin = this.node.includes('AssetHub');
|
|
8145
|
+
isAHPDest = !isTMultiLocation(destination) && destination.includes('AssetHub'); // Handle common cases
|
|
8137
8146
|
isEthAsset = asset.multiLocation && findAssetByMultiLocation(getOtherAssets('Ethereum'), asset.multiLocation);
|
|
8138
|
-
isAHPOrigin = this.node === 'AssetHubPolkadot' || this.node === 'AssetHubKusama';
|
|
8139
|
-
isAHPDest = destination === 'AssetHubPolkadot' || destination === 'AssetHubKusama';
|
|
8140
8147
|
isEthDest = destination === 'Ethereum'; // Eth asset - Any origin to any dest via AH - DestinationReserve - multiple instructions
|
|
8141
8148
|
isEthAssetViaAh = isEthAsset && !isAHPOrigin && !isAHPDest && !isEthDest && !feeAsset; // Eth asset - Any origin to AHP - DestinationReserve - one DepositAsset instruction
|
|
8142
8149
|
isEthAssetToAh = isEthAsset && isAHPDest && !isAHPOrigin && !isEthDest && !feeAsset;
|
|
8143
8150
|
if (!(isEthAssetViaAh || isEthAssetToAh)) {
|
|
8144
|
-
_context.n =
|
|
8151
|
+
_context.n = 8;
|
|
8145
8152
|
break;
|
|
8146
8153
|
}
|
|
8147
|
-
_context.n =
|
|
8148
|
-
return createTypeAndThenCall(this.node,
|
|
8149
|
-
case
|
|
8154
|
+
_context.n = 7;
|
|
8155
|
+
return createTypeAndThenCall(this.node, options);
|
|
8156
|
+
case 7:
|
|
8150
8157
|
call = _context.v;
|
|
8151
8158
|
return _context.a(2, api.callTxMethod(call));
|
|
8152
|
-
case 7:
|
|
8153
|
-
return _context.a(2, this.transferPolkadotXCM(_options));
|
|
8154
8159
|
case 8:
|
|
8155
|
-
|
|
8160
|
+
return _context.a(2, this.transferPolkadotXCM(options));
|
|
8156
8161
|
case 9:
|
|
8162
|
+
throw new NoXCMSupportImplementedError(this._node);
|
|
8163
|
+
case 10:
|
|
8157
8164
|
return _context.a(2);
|
|
8158
8165
|
}
|
|
8159
8166
|
}, _callee, this);
|
|
@@ -8163,6 +8170,21 @@ var ParachainNode = /*#__PURE__*/function () {
|
|
|
8163
8170
|
}
|
|
8164
8171
|
return transfer;
|
|
8165
8172
|
}()
|
|
8173
|
+
}, {
|
|
8174
|
+
key: "shouldUseNativeAssetTeleport",
|
|
8175
|
+
value: function shouldUseNativeAssetTeleport(_ref) {
|
|
8176
|
+
var asset = _ref.asset,
|
|
8177
|
+
to = _ref.to;
|
|
8178
|
+
if (isTMultiLocation(to) || isDotKsmBridge(this.node, to) || to === 'Ethereum') return false;
|
|
8179
|
+
var isAHPOrigin = this.node.includes('AssetHub');
|
|
8180
|
+
var isAHPDest = !isTMultiLocation(to) && to.includes('AssetHub');
|
|
8181
|
+
var isNativeAsset = !isTMultiLocation(to) && (isAHPOrigin && isForeignAsset(asset) && isSymbolMatch(asset.symbol, getNativeAssetSymbol(to)) || isAHPDest && !isForeignAsset(asset) && isSymbolMatch(asset.symbol, getNativeAssetSymbol(this.node)));
|
|
8182
|
+
var assetHubChain = "AssetHub".concat(getRelayChainOf(this.node));
|
|
8183
|
+
var isRegisteredOnAh = asset.multiLocation && findAsset(assetHubChain, {
|
|
8184
|
+
multilocation: asset.multiLocation
|
|
8185
|
+
}, null);
|
|
8186
|
+
return isNativeAsset && Boolean(isRegisteredOnAh) && (isAHPOrigin || isAHPDest);
|
|
8187
|
+
}
|
|
8166
8188
|
}, {
|
|
8167
8189
|
key: "getRelayToParaOverrides",
|
|
8168
8190
|
value: function getRelayToParaOverrides() {
|
|
@@ -10123,24 +10145,46 @@ var Hydration = /*#__PURE__*/function (_ParachainNode) {
|
|
|
10123
10145
|
}
|
|
10124
10146
|
return transferPolkadotXCM;
|
|
10125
10147
|
}()
|
|
10148
|
+
}, {
|
|
10149
|
+
key: "transferMoonbeamWhAsset",
|
|
10150
|
+
value: function transferMoonbeamWhAsset(input) {
|
|
10151
|
+
var asset = input.asset,
|
|
10152
|
+
version = input.version;
|
|
10153
|
+
assertHasLocation(asset);
|
|
10154
|
+
var glmr = findAssetForNodeOrThrow(this.node, {
|
|
10155
|
+
symbol: getNativeAssetSymbol('Moonbeam')
|
|
10156
|
+
}, null);
|
|
10157
|
+
var FEE_AMOUNT = 80000000000000000n; // 0.08 GLMR
|
|
10158
|
+
assertHasLocation(glmr);
|
|
10159
|
+
return transferXTokens(_objectSpread2(_objectSpread2({}, input), {}, {
|
|
10160
|
+
overriddenAsset: [_objectSpread2(_objectSpread2({}, createMultiAsset(version, FEE_AMOUNT, glmr.multiLocation)), {}, {
|
|
10161
|
+
isFeeAsset: true
|
|
10162
|
+
}), createMultiAsset(version, asset.amount, asset.multiLocation)]
|
|
10163
|
+
}), Number(asset.assetId));
|
|
10164
|
+
}
|
|
10126
10165
|
}, {
|
|
10127
10166
|
key: "transferXTokens",
|
|
10128
10167
|
value: function transferXTokens$1(input) {
|
|
10129
|
-
var asset = input.asset
|
|
10168
|
+
var asset = input.asset,
|
|
10169
|
+
destination = input.destination;
|
|
10130
10170
|
if (asset.symbol === this.getNativeAssetSymbol()) {
|
|
10131
10171
|
return transferXTokens(input, Hydration.NATIVE_ASSET_ID);
|
|
10132
10172
|
}
|
|
10173
|
+
var isMoonbeamWhAsset = asset.multiLocation && hasJunction(asset.multiLocation, 'Parachain', getParaId('Moonbeam')) && hasJunction(asset.multiLocation, 'PalletInstance', 110);
|
|
10174
|
+
if (isMoonbeamWhAsset && destination === 'Moonbeam') {
|
|
10175
|
+
return this.transferMoonbeamWhAsset(input);
|
|
10176
|
+
}
|
|
10133
10177
|
assertHasId(asset);
|
|
10134
10178
|
return transferXTokens(input, Number(asset.assetId));
|
|
10135
10179
|
}
|
|
10136
10180
|
}, {
|
|
10137
10181
|
key: "canUseXTokens",
|
|
10138
|
-
value: function canUseXTokens(
|
|
10139
|
-
var destination =
|
|
10140
|
-
asset =
|
|
10141
|
-
feeAsset =
|
|
10142
|
-
var
|
|
10143
|
-
return destination !== 'Ethereum' && destination !== 'Polimec' && !(destination === 'AssetHubPolkadot' && asset.symbol === 'DOT') &&
|
|
10182
|
+
value: function canUseXTokens(options) {
|
|
10183
|
+
var destination = options.to,
|
|
10184
|
+
asset = options.asset,
|
|
10185
|
+
feeAsset = options.feeAsset;
|
|
10186
|
+
var baseCanUseXTokens = _superPropGet(Hydration, "canUseXTokens", this, 3)([options]);
|
|
10187
|
+
return destination !== 'Ethereum' && destination !== 'Polimec' && !(destination === 'AssetHubPolkadot' && asset.symbol === 'DOT') && baseCanUseXTokens && !feeAsset;
|
|
10144
10188
|
}
|
|
10145
10189
|
}, {
|
|
10146
10190
|
key: "transferLocalNativeAsset",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paraspell/sdk-core",
|
|
3
|
-
"version": "10.11.
|
|
3
|
+
"version": "10.11.10",
|
|
4
4
|
"description": "SDK core for ParaSpell XCM/XCMP tool for developers",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"@noble/hashes": "^1.8.0",
|
|
27
27
|
"@scure/base": "^1.2.6",
|
|
28
28
|
"viem": "^2.33.2",
|
|
29
|
-
"@paraspell/
|
|
30
|
-
"@paraspell/
|
|
31
|
-
"@paraspell/
|
|
29
|
+
"@paraspell/assets": "10.11.10",
|
|
30
|
+
"@paraspell/pallets": "10.11.10",
|
|
31
|
+
"@paraspell/sdk-common": "10.11.10"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/plugin-syntax-import-attributes": "^7.27.1",
|