@subwallet/extension-base 1.3.29-1 → 1.3.31-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.
Files changed (142) hide show
  1. package/background/KoniTypes.d.ts +16 -4
  2. package/background/errors/SwapError.js +1 -1
  3. package/cjs/background/errors/SwapError.js +1 -1
  4. package/cjs/constants/blocked-actions.js +2 -2
  5. package/cjs/constants/paraspell-chain-map.js +13 -0
  6. package/cjs/constants/remind-notification-time.js +3 -3
  7. package/cjs/core/logic-validation/swap.js +63 -4
  8. package/cjs/core/logic-validation/transfer.js +13 -1
  9. package/cjs/core/substrate/xcm-parser.js +5 -1
  10. package/cjs/core/utils.js +36 -15
  11. package/cjs/koni/background/handlers/Extension.js +141 -172
  12. package/cjs/koni/background/handlers/State.js +8 -1
  13. package/cjs/packageInfo.js +1 -1
  14. package/cjs/services/balance-service/helpers/process.js +27 -0
  15. package/cjs/services/balance-service/index.js +9 -0
  16. package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +229 -0
  17. package/cjs/services/balance-service/transfer/xcm/availBridge.js +6 -6
  18. package/cjs/services/balance-service/transfer/xcm/index.js +96 -7
  19. package/cjs/services/balance-service/transfer/xcm/utils.js +213 -0
  20. package/cjs/services/chain-service/constants.js +2 -4
  21. package/cjs/services/chain-service/index.js +71 -17
  22. package/cjs/services/chain-service/utils/patch.js +1 -1
  23. package/cjs/services/earning-service/handlers/base.js +6 -3
  24. package/cjs/services/earning-service/handlers/native-staking/base.js +4 -1
  25. package/cjs/services/earning-service/handlers/native-staking/dtao.js +68 -50
  26. package/cjs/services/earning-service/handlers/native-staking/tao.js +12 -2
  27. package/cjs/services/earning-service/handlers/special.js +18 -9
  28. package/cjs/services/earning-service/service.js +2 -1
  29. package/cjs/services/fee-service/utils/index.js +16 -4
  30. package/cjs/services/inapp-notification-service/index.js +19 -13
  31. package/cjs/services/keyring-service/context/handlers/Ledger.js +1 -1
  32. package/cjs/services/keyring-service/context/state.js +3 -0
  33. package/cjs/services/migration-service/scripts/DisableZeroBalanceTokens.js +60 -0
  34. package/cjs/services/migration-service/scripts/EnableChain.js +1 -1
  35. package/cjs/services/migration-service/scripts/index.js +3 -2
  36. package/cjs/services/swap-service/handler/asset-hub/handler.js +61 -314
  37. package/cjs/services/swap-service/handler/base-handler.js +406 -231
  38. package/cjs/services/swap-service/handler/chainflip-handler.js +18 -40
  39. package/cjs/services/swap-service/handler/hydradx-handler.js +77 -269
  40. package/cjs/services/swap-service/handler/simpleswap-handler.js +27 -48
  41. package/cjs/services/swap-service/handler/uniswap-handler.js +33 -54
  42. package/cjs/services/swap-service/index.js +154 -143
  43. package/cjs/services/swap-service/utils.js +107 -17
  44. package/cjs/services/transaction-service/index.js +1 -1
  45. package/cjs/services/transaction-service/utils.js +38 -14
  46. package/cjs/types/swap/index.js +13 -1
  47. package/cjs/utils/fee/transfer.js +52 -28
  48. package/cjs/utils/staticData/index.js +7 -2
  49. package/cjs/utils/swap.js +5 -1
  50. package/constants/blocked-actions.d.ts +1 -1
  51. package/constants/blocked-actions.js +1 -1
  52. package/constants/paraspell-chain-map.d.ts +1 -0
  53. package/constants/paraspell-chain-map.js +7 -0
  54. package/constants/remind-notification-time.d.ts +1 -1
  55. package/constants/remind-notification-time.js +1 -1
  56. package/core/logic-validation/swap.d.ts +15 -0
  57. package/core/logic-validation/swap.js +60 -4
  58. package/core/logic-validation/transfer.d.ts +1 -0
  59. package/core/logic-validation/transfer.js +12 -1
  60. package/core/substrate/xcm-parser.d.ts +1 -0
  61. package/core/substrate/xcm-parser.js +4 -1
  62. package/core/utils.d.ts +2 -2
  63. package/core/utils.js +36 -15
  64. package/koni/background/handlers/Extension.d.ts +1 -1
  65. package/koni/background/handlers/Extension.js +66 -98
  66. package/koni/background/handlers/State.d.ts +1 -0
  67. package/koni/background/handlers/State.js +7 -1
  68. package/package.json +23 -13
  69. package/packageInfo.js +1 -1
  70. package/services/balance-service/helpers/process.d.ts +2 -1
  71. package/services/balance-service/helpers/process.js +26 -0
  72. package/services/balance-service/index.js +11 -2
  73. package/services/balance-service/transfer/xcm/acrossBridge/index.d.ts +15 -0
  74. package/services/balance-service/transfer/xcm/acrossBridge/index.js +216 -0
  75. package/services/balance-service/transfer/xcm/availBridge.js +6 -6
  76. package/services/balance-service/transfer/xcm/index.d.ts +5 -1
  77. package/services/balance-service/transfer/xcm/index.js +85 -1
  78. package/services/balance-service/transfer/xcm/utils.d.ts +11 -0
  79. package/services/balance-service/transfer/xcm/utils.js +208 -0
  80. package/services/base/types.d.ts +0 -4
  81. package/services/chain-service/constants.d.ts +0 -1
  82. package/services/chain-service/constants.js +1 -2
  83. package/services/chain-service/index.d.ts +9 -2
  84. package/services/chain-service/index.js +72 -18
  85. package/services/chain-service/utils/patch.js +1 -1
  86. package/services/earning-service/handlers/base.d.ts +4 -3
  87. package/services/earning-service/handlers/base.js +6 -4
  88. package/services/earning-service/handlers/native-staking/base.js +4 -1
  89. package/services/earning-service/handlers/native-staking/dtao.d.ts +9 -6
  90. package/services/earning-service/handlers/native-staking/dtao.js +69 -48
  91. package/services/earning-service/handlers/native-staking/tao.js +12 -2
  92. package/services/earning-service/handlers/special.js +19 -10
  93. package/services/earning-service/service.d.ts +2 -1
  94. package/services/earning-service/service.js +2 -1
  95. package/services/fee-service/utils/index.d.ts +1 -0
  96. package/services/fee-service/utils/index.js +14 -4
  97. package/services/inapp-notification-service/index.js +13 -7
  98. package/services/keyring-service/context/handlers/Ledger.js +1 -1
  99. package/services/keyring-service/context/state.d.ts +1 -0
  100. package/services/keyring-service/context/state.js +3 -0
  101. package/services/migration-service/scripts/DisableZeroBalanceTokens.d.ts +4 -0
  102. package/services/migration-service/scripts/DisableZeroBalanceTokens.js +51 -0
  103. package/services/migration-service/scripts/EnableChain.js +1 -1
  104. package/services/migration-service/scripts/index.js +3 -2
  105. package/services/swap-service/handler/asset-hub/handler.d.ts +2 -9
  106. package/services/swap-service/handler/asset-hub/handler.js +64 -317
  107. package/services/swap-service/handler/base-handler.d.ts +6 -9
  108. package/services/swap-service/handler/base-handler.js +405 -230
  109. package/services/swap-service/handler/chainflip-handler.d.ts +2 -4
  110. package/services/swap-service/handler/chainflip-handler.js +15 -37
  111. package/services/swap-service/handler/hydradx-handler.d.ts +3 -10
  112. package/services/swap-service/handler/hydradx-handler.js +78 -270
  113. package/services/swap-service/handler/simpleswap-handler.d.ts +2 -4
  114. package/services/swap-service/handler/simpleswap-handler.js +24 -45
  115. package/services/swap-service/handler/uniswap-handler.d.ts +4 -6
  116. package/services/swap-service/handler/uniswap-handler.js +25 -46
  117. package/services/swap-service/index.d.ts +8 -14
  118. package/services/swap-service/index.js +141 -129
  119. package/services/swap-service/utils.d.ts +11 -3
  120. package/services/swap-service/utils.js +96 -15
  121. package/services/transaction-service/index.js +2 -2
  122. package/services/transaction-service/types.d.ts +3 -2
  123. package/services/transaction-service/utils.d.ts +1 -0
  124. package/services/transaction-service/utils.js +38 -15
  125. package/types/balance/transfer.d.ts +1 -0
  126. package/types/service-base.d.ts +2 -3
  127. package/types/swap/index.d.ts +25 -9
  128. package/types/swap/index.js +10 -0
  129. package/types/transaction/process.d.ts +19 -0
  130. package/types/transaction/request.d.ts +7 -0
  131. package/types/yield/actions/join/submit.d.ts +4 -1
  132. package/types/yield/actions/others.d.ts +2 -0
  133. package/utils/fee/transfer.d.ts +1 -0
  134. package/utils/fee/transfer.js +54 -30
  135. package/utils/staticData/index.d.ts +4 -1
  136. package/utils/staticData/index.js +5 -1
  137. package/utils/staticData/paraSpellChainMap.json +1 -0
  138. package/utils/swap.d.ts +3 -0
  139. package/utils/swap.js +3 -0
  140. package/cjs/services/swap-service/interface.js +0 -14
  141. package/services/swap-service/interface.d.ts +0 -9
  142. package/services/swap-service/interface.js +0 -8
@@ -15,7 +15,7 @@ import { AuthUrls } from '@subwallet/extension-base/services/request-service/typ
15
15
  import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
16
16
  import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
17
17
  import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
18
- import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalSwapPath, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalSwapPathParamsV2, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestEarningSlippage, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
18
+ import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestEarningSlippage, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapRequestV2, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
19
19
  import { RequestSubmitTransfer, RequestSubscribeTransfer, ResponseSubscribeTransfer } from '@subwallet/extension-base/types/balance/transfer';
20
20
  import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
21
21
  import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
@@ -31,6 +31,7 @@ import { JsonRpcPayload, JsonRpcResponse } from 'web3-core-helpers';
31
31
  import { ExtDef } from '@polkadot/types/extrinsic/signedExtensions/types';
32
32
  import { SignerResult } from '@polkadot/types/types/extrinsic';
33
33
  import { HexString } from '@polkadot/util/types';
34
+ import { EarningSlippageResult } from '../services/earning-service/handlers/native-staking/dtao';
34
35
  import { TransactionWarning } from './warnings/TransactionWarning';
35
36
  export declare enum RuntimeEnvironment {
36
37
  Web = "Web",
@@ -1354,6 +1355,12 @@ export interface TokenPriorityDetails {
1354
1355
  tokenGroup: Record<string, number>;
1355
1356
  token: Record<string, number>;
1356
1357
  }
1358
+ export interface SufficientChainsDetails {
1359
+ assetHubPallet: string[];
1360
+ assetsPallet: string[];
1361
+ foreignAssetsPallet: string[];
1362
+ assetRegistryPallet: string[];
1363
+ }
1357
1364
  export interface RequestConnectWalletConnect {
1358
1365
  uri: string;
1359
1366
  }
@@ -1528,6 +1535,11 @@ export interface ResponseMigrateSoloAccount {
1528
1535
  export interface RequestPingSession {
1529
1536
  sessionId: string;
1530
1537
  }
1538
+ export interface ExtrinsicsDataResponse {
1539
+ extrinsics: {
1540
+ id: string;
1541
+ }[];
1542
+ }
1531
1543
  export declare type _Address = string;
1532
1544
  export declare type _BalanceMetadata = unknown;
1533
1545
  export interface KoniRequestSignatures {
@@ -1552,6 +1564,7 @@ export interface KoniRequestSignatures {
1552
1564
  'pri(chainService.upsertChain)': [_NetworkUpsertParams, boolean];
1553
1565
  'pri(chainService.enableChains)': [EnableMultiChainParams, boolean];
1554
1566
  'pri(chainService.enableChain)': [EnableChainParams, boolean];
1567
+ 'pri(chainService.enableChainWithPriorityAssets)': [EnableChainParams, boolean];
1555
1568
  'pri(chainService.reconnectChain)': [string, boolean];
1556
1569
  'pri(chainService.disableChains)': [string[], boolean];
1557
1570
  'pri(chainService.disableChain)': [string, boolean];
@@ -1692,7 +1705,7 @@ export interface KoniRequestSignatures {
1692
1705
  'pri(yield.withdraw.submit)': [RequestYieldWithdrawal, SWTransactionResponse];
1693
1706
  'pri(yield.cancelWithdrawal.submit)': [RequestStakeCancelWithdrawal, SWTransactionResponse];
1694
1707
  'pri(yield.claimReward.submit)': [RequestStakeClaimReward, SWTransactionResponse];
1695
- 'pri(yield.getEarningSlippage)': [RequestEarningSlippage, number];
1708
+ 'pri(yield.getEarningSlippage)': [RequestEarningSlippage, EarningSlippageResult];
1696
1709
  'pri(transaction.history.getSubscription)': [null, TransactionHistoryItem[], TransactionHistoryItem[]];
1697
1710
  'pri(transaction.history.subscribe)': [RequestSubscribeHistory, ResponseSubscribeHistory, TransactionHistoryItem[]];
1698
1711
  'pri(transfer.getMaxTransferable)': [RequestMaxTransferable, AmountData];
@@ -1784,9 +1797,8 @@ export interface KoniRequestSignatures {
1784
1797
  'pri(database.setLocalStorage)': [StorageDataInterface, boolean];
1785
1798
  'pri(database.getLocalStorage)': [string, string | null];
1786
1799
  'pri(swapService.subscribePairs)': [null, SwapPair[], SwapPair[]];
1787
- 'pri(swapService.getOptimalProcessOnSelectQuote)': [OptimalSwapPathParamsV2, CommonOptimalSwapPath];
1788
1800
  'pri(swapService.handleSwapRequest)': [SwapRequest, SwapRequestResult];
1789
- 'pri(swapService.handleSwapRequestV2)': [SwapRequest, SwapRequestResult];
1801
+ 'pri(swapService.handleSwapRequestV2)': [SwapRequestV2, SwapRequestResult];
1790
1802
  'pri(swapService.handleSwapStep)': [SwapSubmitParams, SWTransactionResponse];
1791
1803
  'pri(swapService.getLatestQuote)': [SwapRequest, SwapQuoteResponse];
1792
1804
  'pri(swapService.validateSwapProcess)': [ValidateSwapProcessParams, TransactionError[]];
@@ -5,7 +5,7 @@ import { SWError } from '@subwallet/extension-base/background/errors/SWError';
5
5
  import { detectTranslate } from '@subwallet/extension-base/utils';
6
6
  const defaultErrorMap = {
7
7
  ERROR_FETCHING_QUOTE: {
8
- message: detectTranslate('No swap quote found. Adjust your amount or try again later'),
8
+ message: detectTranslate('No swap quote found. Change your network endpoint or adjust amount and try again'),
9
9
  code: undefined
10
10
  },
11
11
  NOT_MEET_MIN_SWAP: {
@@ -11,7 +11,7 @@ var _utils = require("@subwallet/extension-base/utils");
11
11
 
12
12
  const defaultErrorMap = {
13
13
  ERROR_FETCHING_QUOTE: {
14
- message: (0, _utils.detectTranslate)('No swap quote found. Adjust your amount or try again later'),
14
+ message: (0, _utils.detectTranslate)('No swap quote found. Change your network endpoint or adjust amount and try again'),
15
15
  code: undefined
16
16
  },
17
17
  NOT_MEET_MIN_SWAP: {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.APP_VER = exports.APP_ENV = void 0;
7
7
  exports.fetchBlockedConfigObjects = fetchBlockedConfigObjects;
8
- exports.fetchLastestBlockedActionsAndFeatures = fetchLastestBlockedActionsAndFeatures;
8
+ exports.fetchLatestBlockedActionsAndFeatures = fetchLatestBlockedActionsAndFeatures;
9
9
  exports.getPassConfigId = getPassConfigId;
10
10
  var _extensionBase = require("@subwallet/extension-base");
11
11
  var _utils = require("@subwallet/extension-base/utils");
@@ -99,7 +99,7 @@ function isPassVersion(versionStr, versionCondition) {
99
99
  const versionConditionStr = versionCondition.trim();
100
100
  return versionStr === versionConditionStr;
101
101
  }
102
- async function fetchLastestBlockedActionsAndFeatures(ids) {
102
+ async function fetchLatestBlockedActionsAndFeatures(ids) {
103
103
  if (ids.length === 0) {
104
104
  return [_staticData.staticData[_staticData.StaticKey.BLOCKED_ACTIONS_FEATURES]];
105
105
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fetchParaSpellChainMap = fetchParaSpellChainMap;
7
+ var _utils = require("@subwallet/extension-base/utils");
8
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
9
+ // SPDX-License-Identifier: Apache-2.0
10
+
11
+ async function fetchParaSpellChainMap() {
12
+ return await (0, _utils.fetchStaticData)('paraspell-chain-map');
13
+ }
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.fetchLastestRemindNotificationTime = void 0;
6
+ exports.fetchLatestRemindNotificationTime = void 0;
7
7
  var _utils = require("@subwallet/extension-base/utils");
8
8
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
9
9
  // SPDX-License-Identifier: Apache-2.0
10
10
 
11
- const fetchLastestRemindNotificationTime = async () => {
11
+ const fetchLatestRemindNotificationTime = async () => {
12
12
  return await (0, _utils.fetchStaticData)('config/remind-notification-time');
13
13
  };
14
- exports.fetchLastestRemindNotificationTime = fetchLastestRemindNotificationTime;
14
+ exports.fetchLatestRemindNotificationTime = fetchLatestRemindNotificationTime;
@@ -10,7 +10,10 @@ exports._getEarlyHydradxValidationError = _getEarlyHydradxValidationError;
10
10
  exports._getSimpleSwapEarlyValidationError = _getSimpleSwapEarlyValidationError;
11
11
  exports._validateBalanceToSwap = _validateBalanceToSwap;
12
12
  exports._validateBalanceToSwapOnAssetHub = _validateBalanceToSwapOnAssetHub;
13
+ exports._validateBalanceToSwapV2 = _validateBalanceToSwapV2;
14
+ exports._validateQuoteV2 = _validateQuoteV2;
13
15
  exports._validateSwapRecipient = _validateSwapRecipient;
16
+ exports._validateSwapRecipientV2 = _validateSwapRecipientV2;
14
17
  var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
15
18
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
16
19
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
@@ -113,7 +116,7 @@ function _getChainflipEarlyValidationError(error, metadata) {
113
116
  case _swap.SwapErrorType.UNKNOWN:
114
117
  return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
115
118
  case _swap.SwapErrorType.ERROR_FETCHING_QUOTE:
116
- return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
119
+ return new _SwapError.SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
117
120
  default:
118
121
  return new _SwapError.SwapError(error);
119
122
  }
@@ -129,7 +132,7 @@ function _getEarlyHydradxValidationError(error, metadata) {
129
132
  case _swap.SwapErrorType.UNKNOWN:
130
133
  return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
131
134
  case _swap.SwapErrorType.ERROR_FETCHING_QUOTE:
132
- return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
135
+ return new _SwapError.SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
133
136
  default:
134
137
  return new _SwapError.SwapError(error);
135
138
  }
@@ -143,7 +146,7 @@ function _getEarlyAssetHubValidationError(error, metadata) {
143
146
  case _swap.SwapErrorType.UNKNOWN:
144
147
  return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
145
148
  case _swap.SwapErrorType.ERROR_FETCHING_QUOTE:
146
- return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
149
+ return new _SwapError.SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
147
150
  case _swap.SwapErrorType.MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT:
148
151
  return new _SwapError.SwapError(error, 'You swap too much. It make pool not enough existential deposit');
149
152
  // TODO: i18n this
@@ -172,8 +175,64 @@ function _getSimpleSwapEarlyValidationError(error, metadata) {
172
175
  case _swap.SwapErrorType.UNKNOWN:
173
176
  return new _SwapError.SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
174
177
  case _swap.SwapErrorType.ERROR_FETCHING_QUOTE:
175
- return new _SwapError.SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
178
+ return new _SwapError.SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
176
179
  default:
177
180
  return new _SwapError.SwapError(error);
178
181
  }
182
+ }
183
+ function _validateQuoteV2(selectedQuote) {
184
+ if (!selectedQuote) {
185
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR);
186
+ }
187
+
188
+ // Check swapQuote alive
189
+ if (selectedQuote.aliveUntil <= +Date.now()) {
190
+ return new _TransactionError.TransactionError(_swap.SwapErrorType.QUOTE_TIMEOUT);
191
+ }
192
+ return undefined;
193
+ }
194
+ function _validateBalanceToSwapV2(request) {
195
+ const {
196
+ chainInfo,
197
+ feeAmount,
198
+ feeToken,
199
+ feeTokenBalance,
200
+ fromToken,
201
+ fromTokenBalance,
202
+ minSwapAmount,
203
+ swapAmount
204
+ } = request;
205
+ const bnFromTokenBalance = (0, _bignumber.default)(fromTokenBalance);
206
+ if (new _bignumber.default(feeTokenBalance).lte(feeAmount)) {
207
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${chainInfo.name}) to pay transaction fee`);
208
+ }
209
+ if (fromToken.slug === feeToken.slug) {
210
+ // todo: need review and refactor
211
+ if (bnFromTokenBalance.lte((0, _bignumber.default)(feeAmount).plus(swapAmount))) {
212
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
213
+ }
214
+ } else {
215
+ if (bnFromTokenBalance.lt(swapAmount)) {
216
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
217
+ }
218
+ }
219
+ if (minSwapAmount) {
220
+ if (bnFromTokenBalance.lte(minSwapAmount)) {
221
+ const parsedMinSwapValue = (0, _utils2.formatNumber)(minSwapAmount, (0, _utils._getAssetDecimals)(fromToken));
222
+ return new _TransactionError.TransactionError(_swap.SwapErrorType.SWAP_NOT_ENOUGH_BALANCE, `Insufficient balance. You need more than ${parsedMinSwapValue} ${fromToken.symbol} to start swapping. Deposit ${fromToken.symbol} and try again.`); // todo: min swap or amount?
223
+ }
224
+ }
225
+
226
+ return undefined;
227
+ }
228
+ function _validateSwapRecipientV2(destChainInfo, recipient) {
229
+ if (!recipient) {
230
+ return undefined;
231
+ }
232
+ const isEvmAddress = (0, _utilCrypto.isEthereumAddress)(recipient);
233
+ const isEvmDestChain = (0, _utils._isChainEvmCompatible)(destChainInfo);
234
+ if (isEvmAddress && !isEvmDestChain || !isEvmAddress && isEvmDestChain) {
235
+ return new _TransactionError.TransactionError(_swap.SwapErrorType.INVALID_RECIPIENT);
236
+ }
237
+ return undefined;
179
238
  }
@@ -13,6 +13,7 @@ exports.checkSupportForTransaction = checkSupportForTransaction;
13
13
  exports.checkTonAddressBounceableAndAccountNotActive = checkTonAddressBounceableAndAccountNotActive;
14
14
  exports.estimateFeeForTransaction = estimateFeeForTransaction;
15
15
  exports.validateTransferRequest = validateTransferRequest;
16
+ exports.validateXcmMinAmountToMythos = validateXcmMinAmountToMythos;
16
17
  exports.validateXcmTransferRequest = validateXcmTransferRequest;
17
18
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
18
19
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
@@ -330,7 +331,8 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
330
331
  if (transaction) {
331
332
  try {
332
333
  if ((0, _helpers.isSubstrateTransaction)(transaction)) {
333
- estimateFee.value = (await transaction.paymentInfo(validationResponse.address)).partialFee.toString();
334
+ var _validationResponse$x;
335
+ estimateFee.value = (_validationResponse$x = validationResponse.xcmFeeDryRun) !== null && _validationResponse$x !== void 0 ? _validationResponse$x : (await transaction.paymentInfo(validationResponse.address)).partialFee.toString();
334
336
  } else if ((0, _helpers.isTonTransaction)(transaction)) {
335
337
  estimateFee.value = transaction.estimateFee; // todo: might need to update logic estimate fee inside for future actions excluding normal transfer Ton and Jetton
336
338
  } else if ((0, _helpers.isCardanoTransaction)(transaction)) {
@@ -458,4 +460,14 @@ function isTonAddressBounceable(address) {
458
460
  async function isAccountActive(tonApi, address) {
459
461
  const state = await tonApi.getAccountState(address);
460
462
  return state === 'active';
463
+ }
464
+ function validateXcmMinAmountToMythos(destChain, destToken, amount) {
465
+ const MYTHOS_DESTINATION_FEE = '2500000000000000000';
466
+ const errorMsg = 'Enter an amount higher than 2.5 MYTH to pay cross-chain fee and avoid your MYTH being lost after the transaction';
467
+ if (destChain === 'mythos' && destToken === 'mythos-NATIVE-MYTH') {
468
+ if ((0, _bignumber.default)(amount).lte(MYTHOS_DESTINATION_FEE)) {
469
+ return new _TransactionError.TransactionError(_types.TransferTxErrorType.NOT_ENOUGH_VALUE, (0, _i18next.t)(errorMsg));
470
+ }
471
+ }
472
+ return undefined;
461
473
  }
@@ -9,6 +9,7 @@ exports._getXcmDestWeight = _getXcmDestWeight;
9
9
  exports._getXcmMultiAssets = _getXcmMultiAssets;
10
10
  exports._getXcmMultiLocation = _getXcmMultiLocation;
11
11
  exports._getXcmUnstableWarning = _getXcmUnstableWarning;
12
+ exports._isAcrossBridgeXcm = _isAcrossBridgeXcm;
12
13
  exports._isAvailBridgeXcm = _isAvailBridgeXcm;
13
14
  exports._isMythosFromHydrationToMythos = _isMythosFromHydrationToMythos;
14
15
  exports._isPolygonBridgeXcm = _isPolygonBridgeXcm;
@@ -17,6 +18,7 @@ exports._isSnowBridgeXcm = _isSnowBridgeXcm;
17
18
  exports._isXcmTransferUnstable = _isXcmTransferUnstable;
18
19
  exports._isXcmWithinSameConsensus = _isXcmWithinSameConsensus;
19
20
  var _chainList = require("@subwallet/chain-list");
21
+ var _acrossBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge");
20
22
  var _availBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge");
21
23
  var _polygonBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge");
22
24
  var _posBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge");
@@ -145,7 +147,9 @@ function _isPolygonBridgeXcm(originChainInfo, destChainInfo) {
145
147
  function _isPosBridgeXcm(originChainInfo, destChainInfo) {
146
148
  return (0, _posBridge._isPosChainBridge)(originChainInfo.slug, destChainInfo.slug);
147
149
  }
148
-
150
+ function _isAcrossBridgeXcm(originChainInfo, destChainInfo) {
151
+ return (0, _acrossBridge._isAcrossChainBridge)(originChainInfo.slug, destChainInfo.slug);
152
+ }
149
153
  // ---------------------------------------------------------------------------------------------------------------------
150
154
 
151
155
  function _getMultiLocationParent(originChainInfo, isWithinSameConsensus) {
package/cjs/core/utils.js CHANGED
@@ -20,7 +20,6 @@ var _types = require("@subwallet/chain-list/types");
20
20
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
21
21
  var _types2 = require("@subwallet/extension-base/core/substrate/types");
22
22
  var _utils = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
23
- var _constants = require("@subwallet/extension-base/services/chain-service/constants");
24
23
  var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
25
24
  var _utils3 = require("@subwallet/extension-base/utils");
26
25
  var _keyring = require("@subwallet/keyring");
@@ -150,28 +149,50 @@ function _isSupportLedgerAccount(validateRecipientParams) {
150
149
  }
151
150
  return '';
152
151
  }
153
- const _isSufficientToken = async (tokenInfo, substrateApi) => {
154
- // todo: remove const and detect by pallets instead
155
- if (_constants.SUFFICIENT_CHAIN.includes(tokenInfo.originChain) && tokenInfo.assetType !== _types._AssetType.NATIVE) {
152
+ const _isSufficientToken = async (tokenInfo, substrateApi, sufficientChain) => {
153
+ var _tokenInfo$metadata;
154
+ if (tokenInfo.assetType !== _types._AssetType.NATIVE) {
156
155
  const assetId = (0, _utils2._isBridgedToken)(tokenInfo) ? (0, _utils2._getXcmAssetMultilocation)(tokenInfo) : (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
156
+ const chainSlug = tokenInfo.originChain;
157
157
  const queryParams = {
158
158
  section: 'query',
159
- module: 'foreignAssets',
160
- method: 'asset',
161
159
  args: [assetId]
162
160
  };
163
- if (!(0, _utils2._isBridgedToken)(tokenInfo)) {
161
+ if (sufficientChain.assetHubPallet.includes(chainSlug)) {
162
+ if (!(0, _utils2._isBridgedToken)(tokenInfo)) {
163
+ queryParams.module = 'assets';
164
+ } else {
165
+ queryParams.module = 'foreignAssets';
166
+ }
167
+ queryParams.method = 'asset';
168
+ }
169
+ if (sufficientChain.assetRegistryPallet.includes(chainSlug)) {
170
+ queryParams.module = 'assetRegistry';
171
+ queryParams.method = 'assets';
172
+ }
173
+ if (sufficientChain.assetsPallet.includes(chainSlug)) {
164
174
  queryParams.module = 'assets';
175
+ queryParams.method = 'asset';
176
+ }
177
+ if (sufficientChain.foreignAssetsPallet.includes(chainSlug)) {
178
+ queryParams.module = 'foreignAsset';
179
+ queryParams.method = 'asset';
180
+ }
181
+ try {
182
+ if (queryParams.method && queryParams.module) {
183
+ const metadata = await substrateApi.makeRpcQuery(queryParams);
184
+ if ((metadata === null || metadata === void 0 ? void 0 : metadata.isSufficient) !== undefined) {
185
+ return metadata === null || metadata === void 0 ? void 0 : metadata.isSufficient;
186
+ }
187
+ }
188
+ } catch (e) {
189
+ console.error(e);
165
190
  }
166
- const metadata = await substrateApi.makeRpcQuery(queryParams);
167
- return metadata.isSufficient;
168
191
  }
169
-
170
- // todo
171
- // if (tokenInfo.metadata?.isSufficient) {
172
- // return tokenInfo.metadata?.isSufficient;
173
- // }
174
-
192
+ if ((_tokenInfo$metadata = tokenInfo.metadata) !== null && _tokenInfo$metadata !== void 0 && _tokenInfo$metadata.isSufficient) {
193
+ var _tokenInfo$metadata2;
194
+ return (_tokenInfo$metadata2 = tokenInfo.metadata) === null || _tokenInfo$metadata2 === void 0 ? void 0 : _tokenInfo$metadata2.isSufficient;
195
+ }
175
196
  return false;
176
197
  };
177
198
  exports._isSufficientToken = _isSufficientToken;