@paraspell/sdk-core 10.10.6 → 10.10.7

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
@@ -695,7 +695,7 @@ var DOT_MULTILOCATION = {
695
695
  parents: sdkCommon.Parents.ONE,
696
696
  interior: 'Here'
697
697
  };
698
- var CHAINS_DOT_RESERVE_AH = new Set(['Polimec', 'Moonbeam', 'BifrostPolkadot', 'PeoplePolkadot', 'Ajuna']);
698
+ var CHAINS_DOT_RESERVE_AH = new Set(['Polimec', 'Moonbeam', 'AssetHubPolkadot', 'AssetHubKusama', 'AssetHubWestend', 'AssetHubPaseo', 'BifrostPolkadot', 'BifrostKusama', 'PeoplePolkadot', 'PeopleKusama', 'Ajuna']);
699
699
  var ASSET_HUB_EXECUTION_FEE = 2200000000n; // 0.22 DOT
700
700
  var TX_CLIENT_TIMEOUT_MS = 20 * 60 * 1000; // 20 minutes
701
701
  var DRY_RUN_CLIENT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
@@ -2826,14 +2826,17 @@ var createBeneficiaryLocation = function createBeneficiaryLocation(_ref2) {
2826
2826
  };
2827
2827
  };
2828
2828
 
2829
- var getChainLocation = function getChainLocation(chain) {
2830
- var interior = chain === 'Polkadot' ? 'Here' : {
2829
+ var getChainLocation = function getChainLocation(chain, destChain) {
2830
+ var fromRelay = sdkCommon.isRelayChain(chain);
2831
+ var toRelay = sdkCommon.isRelayChain(destChain);
2832
+ var parents = fromRelay ? sdkCommon.Parents.ZERO : sdkCommon.Parents.ONE;
2833
+ var interior = toRelay ? 'Here' : {
2831
2834
  X1: [{
2832
- Parachain: getParaId(chain)
2835
+ Parachain: getParaId(destChain)
2833
2836
  }]
2834
2837
  };
2835
2838
  return {
2836
- parents: sdkCommon.Parents.ONE,
2839
+ parents: parents,
2837
2840
  interior: interior
2838
2841
  };
2839
2842
  };
@@ -3106,15 +3109,15 @@ var getTNode = function getTNode(paraId, ecosystem) {
3106
3109
  })) !== null && _NODE_NAMES_DOT_KSM$f !== void 0 ? _NODE_NAMES_DOT_KSM$f : null;
3107
3110
  };
3108
3111
 
3109
- var getAssetReserveChain = function getAssetReserveChain(origin, assetLocation) {
3112
+ var getAssetReserveChain = function getAssetReserveChain(chain, destChain, assetLocation) {
3110
3113
  var hasGlobalConsensusJunction = sdkCommon.hasJunction(assetLocation, 'GlobalConsensus');
3111
3114
  var paraId = sdkCommon.getJunctionValue(assetLocation, 'Parachain');
3112
3115
  if (paraId) {
3113
- var chain = getTNode(paraId, getRelayChainOf(origin).toLowerCase());
3114
- if (!chain) {
3116
+ var resolvedChain = getTNode(paraId, getRelayChainOf(chain).toLowerCase());
3117
+ if (!resolvedChain) {
3115
3118
  throw new InvalidParameterError("Chain with paraId ".concat(paraId, " not found"));
3116
3119
  }
3117
- return chain;
3120
+ return resolvedChain;
3118
3121
  }
3119
3122
  if (hasGlobalConsensusJunction) {
3120
3123
  return 'AssetHubPolkadot';
@@ -3125,9 +3128,9 @@ var getAssetReserveChain = function getAssetReserveChain(origin, assetLocation)
3125
3128
  Here: null
3126
3129
  }
3127
3130
  })) {
3128
- return CHAINS_DOT_RESERVE_AH.has(origin) ? 'AssetHubPolkadot' : 'Polkadot';
3131
+ return CHAINS_DOT_RESERVE_AH.has(destChain) ? 'AssetHubPolkadot' : 'Polkadot';
3129
3132
  }
3130
- return origin;
3133
+ return chain;
3131
3134
  };
3132
3135
 
3133
3136
  var prepareExecuteContext = function prepareExecuteContext(_ref) {
@@ -3140,7 +3143,7 @@ var prepareExecuteContext = function prepareExecuteContext(_ref) {
3140
3143
  assertHasLocation(asset);
3141
3144
  if (feeAsset) assertHasLocation(feeAsset);
3142
3145
  var amount = BigInt(asset.amount);
3143
- var reserveChain = getAssetReserveChain(chain, asset.multiLocation);
3146
+ var reserveChain = getAssetReserveChain(chain, destChain, asset.multiLocation);
3144
3147
  var multiAsset = createMultiAsset(version, amount, asset.multiLocation);
3145
3148
  var multiAssetLocalized = createMultiAsset(version, amount, localizeLocation(chain, asset.multiLocation));
3146
3149
  var multiAssetLocalizedToDest = createMultiAsset(version, amount, localizeLocation(destChain, asset.multiLocation));
@@ -3238,7 +3241,7 @@ var createBaseExecuteXcm = function createBaseExecuteXcm(options) {
3238
3241
  mainInstructions = [{
3239
3242
  InitiateTeleport: {
3240
3243
  assets: createAssetsFilter(multiAssetLocalized),
3241
- dest: getChainLocation(reserveChain),
3244
+ dest: getChainLocation(chain, reserveChain),
3242
3245
  xcm: [{
3243
3246
  BuyExecution: {
3244
3247
  fees: updateAsset(multiAssetLocalizedToReserve, feeMultiAsset ? amount : amount - originFee),
@@ -3253,7 +3256,7 @@ var createBaseExecuteXcm = function createBaseExecuteXcm(options) {
3253
3256
  mainInstructions = [{
3254
3257
  InitiateReserveWithdraw: {
3255
3258
  assets: createAssetsFilter(multiAssetLocalized),
3256
- reserve: getChainLocation(reserveChain),
3259
+ reserve: getChainLocation(chain, reserveChain),
3257
3260
  xcm: [{
3258
3261
  BuyExecution: {
3259
3262
  fees:
@@ -4899,7 +4902,7 @@ function _traverseXcmHops() {
4899
4902
  _context2.n = 4;
4900
4903
  return hopApi.init(nextChain, DRY_RUN_CLIENT_TIMEOUT_MS);
4901
4904
  case 4:
4902
- isDestination = nextChain === destination || sdkCommon.isRelayChain(nextChain) && !sdkCommon.isRelayChain(destination);
4905
+ isDestination = nextChain === destination;
4903
4906
  isAssetHub = nextChain === assetHubNode;
4904
4907
  isBridgeHub = nextChain === bridgeHubNode;
4905
4908
  _context2.n = 5;
@@ -7001,18 +7004,18 @@ var createExchangeInstructions = /*#__PURE__*/function () {
7001
7004
  }();
7002
7005
  var createSwapExecuteXcm = /*#__PURE__*/function () {
7003
7006
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
7004
- var api, chain, exchangeChain, destChain, assetFrom, assetTo, _options$fees2, originReserveFee, exchangeFee, destReserveFee, recipientAddress, version, paraIdTo, multiAssetFrom, multiAssetTo, _prepareCommonExecute, prefix, depositInstruction, exchangeInstructions, exchangeToDestXcm, finalXcm, fullXcm;
7007
+ var api, chain, exchangeChain, destChain, assetFrom, assetTo, _options$fees2, originReserveFee, exchangeFee, destReserveFee, recipientAddress, version, paraIdTo, multiAssetFrom, amountOut, multiAssetTo, multiAssetToLocalizedToDest, _prepareCommonExecute, prefix, depositInstruction, exchangeInstructions, exchangeToDestXcm, finalXcm, fullXcm;
7005
7008
  return _regenerator().w(function (_context2) {
7006
7009
  while (1) switch (_context2.n) {
7007
7010
  case 0:
7008
7011
  api = options.api, chain = options.chain, exchangeChain = options.exchangeChain, destChain = options.destChain, assetFrom = options.assetFrom, assetTo = options.assetTo, _options$fees2 = options.fees, originReserveFee = _options$fees2.originReserveFee, exchangeFee = _options$fees2.exchangeFee, destReserveFee = _options$fees2.destReserveFee, recipientAddress = options.recipientAddress, version = options.version, paraIdTo = options.paraIdTo;
7009
7012
  assertHasLocation(assetFrom);
7010
7013
  assertHasLocation(assetTo);
7011
- multiAssetFrom = createMultiAsset(version, BigInt(assetFrom.amount), localizeLocation(exchangeChain, assetFrom.multiLocation));
7012
- multiAssetTo = createMultiAsset(version,
7013
- // Exchange fee 0n means we are creating a dummy tx
7014
+ multiAssetFrom = createMultiAsset(version, BigInt(assetFrom.amount), localizeLocation(exchangeChain, assetFrom.multiLocation)); // Exchange fee 0n means we are creating a dummy tx
7014
7015
  // Set want to 1000n to prevent NoDeal
7015
- exchangeFee === 0n ? 1000n : BigInt(assetTo.amount), localizeLocation(exchangeChain, assetTo.multiLocation));
7016
+ amountOut = chain && exchangeFee === 0n ? 1000n : BigInt(assetTo.amount);
7017
+ multiAssetTo = createMultiAsset(version, amountOut, localizeLocation(exchangeChain, assetTo.multiLocation));
7018
+ multiAssetToLocalizedToDest = createMultiAsset(version, amountOut, localizeLocation(destChain !== null && destChain !== void 0 ? destChain : exchangeChain, assetTo.multiLocation));
7016
7019
  _prepareCommonExecute = prepareCommonExecuteXcm({
7017
7020
  api: api,
7018
7021
  chain: chain !== null && chain !== void 0 ? chain : exchangeChain,
@@ -7025,7 +7028,7 @@ var createSwapExecuteXcm = /*#__PURE__*/function () {
7025
7028
  reserveFee: originReserveFee
7026
7029
  },
7027
7030
  version: version
7028
- }, multiAssetTo), prefix = _prepareCommonExecute.prefix, depositInstruction = _prepareCommonExecute.depositInstruction;
7031
+ }, multiAssetToLocalizedToDest), prefix = _prepareCommonExecute.prefix, depositInstruction = _prepareCommonExecute.depositInstruction;
7029
7032
  _context2.n = 1;
7030
7033
  return createExchangeInstructions(options, multiAssetFrom, multiAssetTo);
7031
7034
  case 1:
@@ -7042,7 +7045,7 @@ var createSwapExecuteXcm = /*#__PURE__*/function () {
7042
7045
  reserveFee: destReserveFee
7043
7046
  },
7044
7047
  suffixXcm: [depositInstruction]
7045
- }) : [];
7048
+ }) : [depositInstruction];
7046
7049
  finalXcm = chain ? createBaseExecuteXcm({
7047
7050
  chain: chain,
7048
7051
  destChain: exchangeChain,
@@ -7067,7 +7070,7 @@ var createSwapExecuteXcm = /*#__PURE__*/function () {
7067
7070
  }();
7068
7071
 
7069
7072
  var MIN_FEE = 1000n;
7070
- var FEE_PADDING_PERCENTAGE = 40;
7073
+ var FEE_PADDING_PERCENTAGE = 20;
7071
7074
  var validateAmount = function validateAmount(amount, requiredFee) {
7072
7075
  if (amount <= requiredFee) {
7073
7076
  throw new InvalidParameterError("Asset amount is too low, please increase the amount or use a different fee asset.");
@@ -12069,6 +12072,8 @@ exports.handleToAhTeleport = handleToAhTeleport;
12069
12072
  exports.localizeLocation = localizeLocation;
12070
12073
  exports.maybeOverrideMultiAsset = maybeOverrideMultiAsset;
12071
12074
  exports.maybeOverrideMultiAssets = maybeOverrideMultiAssets;
12075
+ exports.padFee = padFee;
12076
+ exports.padFeeBy = padFeeBy;
12072
12077
  exports.resolveModuleError = resolveModuleError;
12073
12078
  exports.resolveParaId = resolveParaId;
12074
12079
  exports.reverseTransformMultiLocation = reverseTransformMultiLocation;
package/dist/index.d.ts CHANGED
@@ -1982,6 +1982,9 @@ declare const getXcmFee: <TApi, TRes, TDisableFallback extends boolean>({ api, t
1982
1982
 
1983
1983
  declare const getXcmFeeEstimate: <TApi, TRes>(options: TGetXcmFeeEstimateOptions<TApi, TRes>) => Promise<TGetXcmFeeEstimateResult>;
1984
1984
 
1985
+ declare const padFee: (raw: bigint, origin: TNodeDotKsmWithRelayChains, dest: TNodeWithRelayChains, side: "origin" | "destination") => bigint;
1986
+ declare const padFeeBy: (amount: bigint, percent: number) => bigint;
1987
+
1985
1988
  declare const getBridgeStatus: <TApi, TRes>(api: IPolkadotApi<TApi, TRes>) => Promise<TBridgeStatus>;
1986
1989
 
1987
1990
  declare const send: <TApi, TRes>(options: TSendOptions<TApi, TRes>) => Promise<TRes>;
@@ -2025,7 +2028,7 @@ declare const createBeneficiaryLocation: <TApi, TRes>({ api, address: recipientA
2025
2028
 
2026
2029
  declare const createX1Payload: (version: Version, junction: TJunction) => TJunctions;
2027
2030
 
2028
- declare const getChainLocation: (chain: TNodeWithRelayChains) => TMultiLocation;
2031
+ declare const getChainLocation: (chain: TNodeWithRelayChains, destChain: TNodeWithRelayChains) => TMultiLocation;
2029
2032
 
2030
2033
  /**
2031
2034
  * This function localizes a multiLocation by removing the `Parachain` junction
@@ -2077,5 +2080,5 @@ declare const handleToAhTeleport: <TApi, TRes>(origin: TNodePolkadotKusama, inpu
2077
2080
 
2078
2081
  declare const validateAddress: (address: TAddress, node: TNodeWithRelayChains, isDestination?: boolean) => void;
2079
2082
 
2080
- export { AssetClaimBuilder, BatchMode, BridgeHaltedError, Builder, DRY_RUN_CLIENT_TIMEOUT_MS, DryRunFailedError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, GeneralBuilder, IncompatibleNodesError, InvalidAddressError, InvalidParameterError, NoXCMSupportImplementedError, NodeNotSupportedError, PolkadotXcmError, ScenarioNotSupportedError, TX_CLIENT_TIMEOUT_MS, TransferToAhNotSupported, UnableToComputeError, XTokensError, addEthereumBridgeFees, addXcmVersionHeader, assertAddressIsString, assertHasLocation, assertToIsString, blake2b256, blake2b512, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, convertSs58, createApiInstanceForNode, createAssetsFilter, createBaseExecuteXcm, createBeneficiaryLocXTokens, createBeneficiaryLocation, createDirectExecuteXcm, createExecuteCall, createExecuteExchangeXcm, createMultiAsset, createVersionedMultiAssets, createX1Payload, deriveAccountId, dryRun, dryRunOrigin, encodeSs58, getAssetBalance, getAssetBalanceInternal, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getBridgeStatus, getChainLocation, getChainVersion, getNode, getNodeConfig, getNodeProviders, getOriginFeeDetails, getOriginFeeDetailsInternal, getOriginXcmFee, getOriginXcmFeeEstimate, getParaEthTransferFees, getParaId, getRelayChainOf, getTNode, getTransferInfo, getTransferableAmount, getTransferableAmountInternal, getXcmFee, getXcmFeeEstimate, handleExecuteTransfer, handleSwapExecuteTransfer, handleToAhTeleport, localizeLocation, maybeOverrideMultiAsset, maybeOverrideMultiAssets, resolveModuleError, resolveParaId, reverseTransformMultiLocation, send, sortMultiAssets, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, traverseXcmHops, validateAddress, verifyEdOnDestination };
2083
+ export { AssetClaimBuilder, BatchMode, BridgeHaltedError, Builder, DRY_RUN_CLIENT_TIMEOUT_MS, DryRunFailedError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, GeneralBuilder, IncompatibleNodesError, InvalidAddressError, InvalidParameterError, NoXCMSupportImplementedError, NodeNotSupportedError, PolkadotXcmError, ScenarioNotSupportedError, TX_CLIENT_TIMEOUT_MS, TransferToAhNotSupported, UnableToComputeError, XTokensError, addEthereumBridgeFees, addXcmVersionHeader, assertAddressIsString, assertHasLocation, assertToIsString, blake2b256, blake2b512, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, convertSs58, createApiInstanceForNode, createAssetsFilter, createBaseExecuteXcm, createBeneficiaryLocXTokens, createBeneficiaryLocation, createDirectExecuteXcm, createExecuteCall, createExecuteExchangeXcm, createMultiAsset, createVersionedMultiAssets, createX1Payload, deriveAccountId, dryRun, dryRunOrigin, encodeSs58, getAssetBalance, getAssetBalanceInternal, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getBridgeStatus, getChainLocation, getChainVersion, getNode, getNodeConfig, getNodeProviders, getOriginFeeDetails, getOriginFeeDetailsInternal, getOriginXcmFee, getOriginXcmFeeEstimate, getParaEthTransferFees, getParaId, getRelayChainOf, getTNode, getTransferInfo, getTransferableAmount, getTransferableAmountInternal, getXcmFee, getXcmFeeEstimate, handleExecuteTransfer, handleSwapExecuteTransfer, handleToAhTeleport, localizeLocation, maybeOverrideMultiAsset, maybeOverrideMultiAssets, padFee, padFeeBy, resolveModuleError, resolveParaId, reverseTransformMultiLocation, send, sortMultiAssets, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, traverseXcmHops, validateAddress, verifyEdOnDestination };
2081
2084
  export type { HopProcessParams, HopTraversalConfig, HopTraversalResult, IPolkadotApi, IPolkadotXCMTransfer, IXTokensTransfer, IXTransferTransfer, OneKey, TAddress, TApiOrUrl, TAssetClaimOptions, TAssetClaimOptionsBase, TBalanceResponse, TBatchOptions, TBifrostToken, TBridgeStatus, TConditionalXcmFeeDetail, TConditionalXcmFeeHopInfo, TCreateBaseSwapXcmOptions, TCreateBaseTransferXcmOptions, TCreateBeneficiaryOptions, TCreateBeneficiaryXTokensOptions, TCreateSwapXcmInternalOptions, TCreateSwapXcmOptions, TCreateTransferXcmOptions, TDestWeight, TDestXcmFeeDetail, TDestination, TDryRunBaseOptions, TDryRunCallBaseOptions, TDryRunCallOptions, TDryRunChain, TDryRunNodeFailure, TDryRunNodeResult, TDryRunNodeResultInternal, TDryRunNodeSuccess, TDryRunOptions, TDryRunResult, TDryRunXcmBaseOptions, TDryRunXcmOptions, TEdJsonMap, TEvmBuilderOptions, TEvmBuilderOptionsBase, TEvmNodeFrom, TFeeType, TForeignAssetId, TForeignOrNativeAsset, TForeignOrTokenAsset, TGetAssetBalanceOptions, TGetAssetBalanceOptionsBase, TGetBalanceForeignOptions, TGetBalanceForeignOptionsBase, TGetBalanceNativeOptions, TGetBalanceNativeOptionsBase, TGetFeeForDestNodeBaseOptions, TGetFeeForDestNodeOptions, TGetMaxForeignTransferableAmountOptions, TGetMaxForeignTransferableAmountOptionsBase, TGetMaxNativeTransferableAmountOptions, TGetMaxNativeTransferableAmountOptionsBase, TGetOriginFeeDetailsOptions, TGetOriginFeeDetailsOptionsBase, TGetOriginXcmFeeBaseOptions, TGetOriginXcmFeeEstimateOptions, TGetOriginXcmFeeOptions, TGetReverseTxFeeOptions, TGetTransferInfoOptions, TGetTransferInfoOptionsBase, TGetTransferableAmountOptions, TGetTransferableAmountOptionsBase, TGetXcmFeeBaseOptions, TGetXcmFeeBuilderOptions, TGetXcmFeeEstimateDetail, TGetXcmFeeEstimateOptions, TGetXcmFeeEstimateResult, TGetXcmFeeOptions, TGetXcmFeeResult, THopInfo, THopTransferInfo, THubKey, TMantaAsset, TModuleError, TNativeTokenAsset, TNodeConfig, TNodeConfigMap, TNodleAsset, TOriginFeeDetails, TOtherReserveAsset, TPolkadotXCMTransferOptions, TPolkadotXcmMethod, TProviderEntry, TRelayToParaDestination, TRelayToParaOptions, TRelayToParaOverrides, TReserveAsset, TScenario, TSelfReserveAsset, TSendBaseOptions, TSendBaseOptionsWithSenderAddress, TSendInternalOptions, TSendOptions, TSerializeEthTransferOptions, TSerializedApiCall, TSerializedEthTransfer, TSwapFeeEstimates, TTransferFeeEstimates, TTransferInfo, TTransferLocalOptions, TVerifyEdOnDestinationOptions, TVerifyEdOnDestinationOptionsBase, TWeight, TXTokensCurrencySelection, TXTokensMethod, TXTokensTransferOptions, TXTransferMethod, TXTransferTransferOptions, TXcmAsset, TXcmFeeBase, TXcmFeeChain, TXcmFeeDetail, TXcmFeeDetailWithFallback, TXcmFeeHopInfo, TXcmForeignAsset, TXcmPalletMethod, TXcmVersioned, TZeitgeistAsset, WithApi, WithRequiredSenderAddress, XcmFeeHopResult };
package/dist/index.mjs CHANGED
@@ -696,7 +696,7 @@ var DOT_MULTILOCATION = {
696
696
  parents: Parents.ONE,
697
697
  interior: 'Here'
698
698
  };
699
- var CHAINS_DOT_RESERVE_AH = new Set(['Polimec', 'Moonbeam', 'BifrostPolkadot', 'PeoplePolkadot', 'Ajuna']);
699
+ var CHAINS_DOT_RESERVE_AH = new Set(['Polimec', 'Moonbeam', 'AssetHubPolkadot', 'AssetHubKusama', 'AssetHubWestend', 'AssetHubPaseo', 'BifrostPolkadot', 'BifrostKusama', 'PeoplePolkadot', 'PeopleKusama', 'Ajuna']);
700
700
  var ASSET_HUB_EXECUTION_FEE = 2200000000n; // 0.22 DOT
701
701
  var TX_CLIENT_TIMEOUT_MS = 20 * 60 * 1000; // 20 minutes
702
702
  var DRY_RUN_CLIENT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
@@ -2827,14 +2827,17 @@ var createBeneficiaryLocation = function createBeneficiaryLocation(_ref2) {
2827
2827
  };
2828
2828
  };
2829
2829
 
2830
- var getChainLocation = function getChainLocation(chain) {
2831
- var interior = chain === 'Polkadot' ? 'Here' : {
2830
+ var getChainLocation = function getChainLocation(chain, destChain) {
2831
+ var fromRelay = isRelayChain(chain);
2832
+ var toRelay = isRelayChain(destChain);
2833
+ var parents = fromRelay ? Parents.ZERO : Parents.ONE;
2834
+ var interior = toRelay ? 'Here' : {
2832
2835
  X1: [{
2833
- Parachain: getParaId(chain)
2836
+ Parachain: getParaId(destChain)
2834
2837
  }]
2835
2838
  };
2836
2839
  return {
2837
- parents: Parents.ONE,
2840
+ parents: parents,
2838
2841
  interior: interior
2839
2842
  };
2840
2843
  };
@@ -3107,15 +3110,15 @@ var getTNode = function getTNode(paraId, ecosystem) {
3107
3110
  })) !== null && _NODE_NAMES_DOT_KSM$f !== void 0 ? _NODE_NAMES_DOT_KSM$f : null;
3108
3111
  };
3109
3112
 
3110
- var getAssetReserveChain = function getAssetReserveChain(origin, assetLocation) {
3113
+ var getAssetReserveChain = function getAssetReserveChain(chain, destChain, assetLocation) {
3111
3114
  var hasGlobalConsensusJunction = hasJunction(assetLocation, 'GlobalConsensus');
3112
3115
  var paraId = getJunctionValue(assetLocation, 'Parachain');
3113
3116
  if (paraId) {
3114
- var chain = getTNode(paraId, getRelayChainOf(origin).toLowerCase());
3115
- if (!chain) {
3117
+ var resolvedChain = getTNode(paraId, getRelayChainOf(chain).toLowerCase());
3118
+ if (!resolvedChain) {
3116
3119
  throw new InvalidParameterError("Chain with paraId ".concat(paraId, " not found"));
3117
3120
  }
3118
- return chain;
3121
+ return resolvedChain;
3119
3122
  }
3120
3123
  if (hasGlobalConsensusJunction) {
3121
3124
  return 'AssetHubPolkadot';
@@ -3126,9 +3129,9 @@ var getAssetReserveChain = function getAssetReserveChain(origin, assetLocation)
3126
3129
  Here: null
3127
3130
  }
3128
3131
  })) {
3129
- return CHAINS_DOT_RESERVE_AH.has(origin) ? 'AssetHubPolkadot' : 'Polkadot';
3132
+ return CHAINS_DOT_RESERVE_AH.has(destChain) ? 'AssetHubPolkadot' : 'Polkadot';
3130
3133
  }
3131
- return origin;
3134
+ return chain;
3132
3135
  };
3133
3136
 
3134
3137
  var prepareExecuteContext = function prepareExecuteContext(_ref) {
@@ -3141,7 +3144,7 @@ var prepareExecuteContext = function prepareExecuteContext(_ref) {
3141
3144
  assertHasLocation(asset);
3142
3145
  if (feeAsset) assertHasLocation(feeAsset);
3143
3146
  var amount = BigInt(asset.amount);
3144
- var reserveChain = getAssetReserveChain(chain, asset.multiLocation);
3147
+ var reserveChain = getAssetReserveChain(chain, destChain, asset.multiLocation);
3145
3148
  var multiAsset = createMultiAsset(version, amount, asset.multiLocation);
3146
3149
  var multiAssetLocalized = createMultiAsset(version, amount, localizeLocation(chain, asset.multiLocation));
3147
3150
  var multiAssetLocalizedToDest = createMultiAsset(version, amount, localizeLocation(destChain, asset.multiLocation));
@@ -3239,7 +3242,7 @@ var createBaseExecuteXcm = function createBaseExecuteXcm(options) {
3239
3242
  mainInstructions = [{
3240
3243
  InitiateTeleport: {
3241
3244
  assets: createAssetsFilter(multiAssetLocalized),
3242
- dest: getChainLocation(reserveChain),
3245
+ dest: getChainLocation(chain, reserveChain),
3243
3246
  xcm: [{
3244
3247
  BuyExecution: {
3245
3248
  fees: updateAsset(multiAssetLocalizedToReserve, feeMultiAsset ? amount : amount - originFee),
@@ -3254,7 +3257,7 @@ var createBaseExecuteXcm = function createBaseExecuteXcm(options) {
3254
3257
  mainInstructions = [{
3255
3258
  InitiateReserveWithdraw: {
3256
3259
  assets: createAssetsFilter(multiAssetLocalized),
3257
- reserve: getChainLocation(reserveChain),
3260
+ reserve: getChainLocation(chain, reserveChain),
3258
3261
  xcm: [{
3259
3262
  BuyExecution: {
3260
3263
  fees:
@@ -4900,7 +4903,7 @@ function _traverseXcmHops() {
4900
4903
  _context2.n = 4;
4901
4904
  return hopApi.init(nextChain, DRY_RUN_CLIENT_TIMEOUT_MS);
4902
4905
  case 4:
4903
- isDestination = nextChain === destination || isRelayChain(nextChain) && !isRelayChain(destination);
4906
+ isDestination = nextChain === destination;
4904
4907
  isAssetHub = nextChain === assetHubNode;
4905
4908
  isBridgeHub = nextChain === bridgeHubNode;
4906
4909
  _context2.n = 5;
@@ -7002,18 +7005,18 @@ var createExchangeInstructions = /*#__PURE__*/function () {
7002
7005
  }();
7003
7006
  var createSwapExecuteXcm = /*#__PURE__*/function () {
7004
7007
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(options) {
7005
- var api, chain, exchangeChain, destChain, assetFrom, assetTo, _options$fees2, originReserveFee, exchangeFee, destReserveFee, recipientAddress, version, paraIdTo, multiAssetFrom, multiAssetTo, _prepareCommonExecute, prefix, depositInstruction, exchangeInstructions, exchangeToDestXcm, finalXcm, fullXcm;
7008
+ var api, chain, exchangeChain, destChain, assetFrom, assetTo, _options$fees2, originReserveFee, exchangeFee, destReserveFee, recipientAddress, version, paraIdTo, multiAssetFrom, amountOut, multiAssetTo, multiAssetToLocalizedToDest, _prepareCommonExecute, prefix, depositInstruction, exchangeInstructions, exchangeToDestXcm, finalXcm, fullXcm;
7006
7009
  return _regenerator().w(function (_context2) {
7007
7010
  while (1) switch (_context2.n) {
7008
7011
  case 0:
7009
7012
  api = options.api, chain = options.chain, exchangeChain = options.exchangeChain, destChain = options.destChain, assetFrom = options.assetFrom, assetTo = options.assetTo, _options$fees2 = options.fees, originReserveFee = _options$fees2.originReserveFee, exchangeFee = _options$fees2.exchangeFee, destReserveFee = _options$fees2.destReserveFee, recipientAddress = options.recipientAddress, version = options.version, paraIdTo = options.paraIdTo;
7010
7013
  assertHasLocation(assetFrom);
7011
7014
  assertHasLocation(assetTo);
7012
- multiAssetFrom = createMultiAsset(version, BigInt(assetFrom.amount), localizeLocation(exchangeChain, assetFrom.multiLocation));
7013
- multiAssetTo = createMultiAsset(version,
7014
- // Exchange fee 0n means we are creating a dummy tx
7015
+ multiAssetFrom = createMultiAsset(version, BigInt(assetFrom.amount), localizeLocation(exchangeChain, assetFrom.multiLocation)); // Exchange fee 0n means we are creating a dummy tx
7015
7016
  // Set want to 1000n to prevent NoDeal
7016
- exchangeFee === 0n ? 1000n : BigInt(assetTo.amount), localizeLocation(exchangeChain, assetTo.multiLocation));
7017
+ amountOut = chain && exchangeFee === 0n ? 1000n : BigInt(assetTo.amount);
7018
+ multiAssetTo = createMultiAsset(version, amountOut, localizeLocation(exchangeChain, assetTo.multiLocation));
7019
+ multiAssetToLocalizedToDest = createMultiAsset(version, amountOut, localizeLocation(destChain !== null && destChain !== void 0 ? destChain : exchangeChain, assetTo.multiLocation));
7017
7020
  _prepareCommonExecute = prepareCommonExecuteXcm({
7018
7021
  api: api,
7019
7022
  chain: chain !== null && chain !== void 0 ? chain : exchangeChain,
@@ -7026,7 +7029,7 @@ var createSwapExecuteXcm = /*#__PURE__*/function () {
7026
7029
  reserveFee: originReserveFee
7027
7030
  },
7028
7031
  version: version
7029
- }, multiAssetTo), prefix = _prepareCommonExecute.prefix, depositInstruction = _prepareCommonExecute.depositInstruction;
7032
+ }, multiAssetToLocalizedToDest), prefix = _prepareCommonExecute.prefix, depositInstruction = _prepareCommonExecute.depositInstruction;
7030
7033
  _context2.n = 1;
7031
7034
  return createExchangeInstructions(options, multiAssetFrom, multiAssetTo);
7032
7035
  case 1:
@@ -7043,7 +7046,7 @@ var createSwapExecuteXcm = /*#__PURE__*/function () {
7043
7046
  reserveFee: destReserveFee
7044
7047
  },
7045
7048
  suffixXcm: [depositInstruction]
7046
- }) : [];
7049
+ }) : [depositInstruction];
7047
7050
  finalXcm = chain ? createBaseExecuteXcm({
7048
7051
  chain: chain,
7049
7052
  destChain: exchangeChain,
@@ -7068,7 +7071,7 @@ var createSwapExecuteXcm = /*#__PURE__*/function () {
7068
7071
  }();
7069
7072
 
7070
7073
  var MIN_FEE = 1000n;
7071
- var FEE_PADDING_PERCENTAGE = 40;
7074
+ var FEE_PADDING_PERCENTAGE = 20;
7072
7075
  var validateAmount = function validateAmount(amount, requiredFee) {
7073
7076
  if (amount <= requiredFee) {
7074
7077
  throw new InvalidParameterError("Asset amount is too low, please increase the amount or use a different fee asset.");
@@ -11996,4 +11999,4 @@ var Builder = function Builder(api) {
11996
11999
  return new GeneralBuilder(api, new BatchTransactionManager());
11997
12000
  };
11998
12001
 
11999
- export { AssetClaimBuilder, BatchMode, BridgeHaltedError, Builder, DRY_RUN_CLIENT_TIMEOUT_MS, DryRunFailedError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, GeneralBuilder, IncompatibleNodesError, InvalidAddressError, InvalidParameterError, NoXCMSupportImplementedError, NodeNotSupportedError, PolkadotXcmError, ScenarioNotSupportedError, TX_CLIENT_TIMEOUT_MS, TransferToAhNotSupported, UnableToComputeError, XTokensError, addEthereumBridgeFees, addXcmVersionHeader, assertAddressIsString, assertHasLocation, assertToIsString, blake2b256, blake2b512, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, convertSs58, createApiInstanceForNode, createAssetsFilter, createBaseExecuteXcm, createBeneficiaryLocXTokens, createBeneficiaryLocation, createDirectExecuteXcm, createExecuteCall, createExecuteExchangeXcm, createMultiAsset, createVersionedMultiAssets, createX1Payload, deriveAccountId, dryRun, dryRunOrigin, encodeSs58, getAssetBalance, getAssetBalanceInternal, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getBridgeStatus, getChainLocation, getChainVersion, getNode, getNodeConfig, getNodeProviders, getOriginFeeDetails, getOriginFeeDetailsInternal, getOriginXcmFee, getOriginXcmFeeEstimate, getParaEthTransferFees, getParaId, getRelayChainOf, getTNode, getTransferInfo, getTransferableAmount, getTransferableAmountInternal, getXcmFee, getXcmFeeEstimate, handleExecuteTransfer, handleSwapExecuteTransfer, handleToAhTeleport, localizeLocation, maybeOverrideMultiAsset, maybeOverrideMultiAssets, resolveModuleError, resolveParaId, reverseTransformMultiLocation, send, sortMultiAssets, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, traverseXcmHops, validateAddress, verifyEdOnDestination };
12002
+ export { AssetClaimBuilder, BatchMode, BridgeHaltedError, Builder, DRY_RUN_CLIENT_TIMEOUT_MS, DryRunFailedError, ETHEREUM_JUNCTION, ETH_CHAIN_ID, GeneralBuilder, IncompatibleNodesError, InvalidAddressError, InvalidParameterError, NoXCMSupportImplementedError, NodeNotSupportedError, PolkadotXcmError, ScenarioNotSupportedError, TX_CLIENT_TIMEOUT_MS, TransferToAhNotSupported, UnableToComputeError, XTokensError, addEthereumBridgeFees, addXcmVersionHeader, assertAddressIsString, assertHasLocation, assertToIsString, blake2b256, blake2b512, claimAssets, computeFeeFromDryRun, computeFeeFromDryRunPjs, convertSs58, createApiInstanceForNode, createAssetsFilter, createBaseExecuteXcm, createBeneficiaryLocXTokens, createBeneficiaryLocation, createDirectExecuteXcm, createExecuteCall, createExecuteExchangeXcm, createMultiAsset, createVersionedMultiAssets, createX1Payload, deriveAccountId, dryRun, dryRunOrigin, encodeSs58, getAssetBalance, getAssetBalanceInternal, getBalanceForeign, getBalanceForeignInternal, getBalanceNative, getBalanceNativeInternal, getBridgeStatus, getChainLocation, getChainVersion, getNode, getNodeConfig, getNodeProviders, getOriginFeeDetails, getOriginFeeDetailsInternal, getOriginXcmFee, getOriginXcmFeeEstimate, getParaEthTransferFees, getParaId, getRelayChainOf, getTNode, getTransferInfo, getTransferableAmount, getTransferableAmountInternal, getXcmFee, getXcmFeeEstimate, handleExecuteTransfer, handleSwapExecuteTransfer, handleToAhTeleport, localizeLocation, maybeOverrideMultiAsset, maybeOverrideMultiAssets, padFee, padFeeBy, resolveModuleError, resolveParaId, reverseTransformMultiLocation, send, sortMultiAssets, transferMoonbeamEvm, transferMoonbeamToEth, transferRelayToPara, traverseXcmHops, validateAddress, verifyEdOnDestination };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraspell/sdk-core",
3
- "version": "10.10.6",
3
+ "version": "10.10.7",
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.31.6",
29
- "@paraspell/assets": "10.10.6",
30
- "@paraspell/pallets": "10.10.6",
31
- "@paraspell/sdk-common": "10.10.6"
29
+ "@paraspell/pallets": "10.10.7",
30
+ "@paraspell/assets": "10.10.7",
31
+ "@paraspell/sdk-common": "10.10.7"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/plugin-syntax-import-attributes": "^7.27.1",