@subwallet/extension-base 1.3.78-0 → 1.3.80-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 (80) hide show
  1. package/background/KoniTypes.d.ts +16 -6
  2. package/cjs/core/logic-validation/index.js +0 -12
  3. package/cjs/core/substrate/system-pallet.js +3 -0
  4. package/cjs/koni/api/nft/index.js +0 -14
  5. package/cjs/koni/background/cron.js +0 -17
  6. package/cjs/koni/background/handlers/Extension.js +13 -7
  7. package/cjs/koni/background/handlers/State.js +24 -6
  8. package/cjs/packageInfo.js +1 -1
  9. package/cjs/services/balance-service/helpers/process.js +49 -21
  10. package/cjs/services/balance-service/index.js +2 -2
  11. package/cjs/services/balance-service/transfer/xcm/utils.js +9 -9
  12. package/cjs/services/chain-service/constants.js +6 -2
  13. package/cjs/services/earning-service/handlers/native-staking/dtao.js +13 -13
  14. package/cjs/services/earning-service/handlers/native-staking/tao.js +16 -10
  15. package/cjs/services/earning-service/handlers/special.js +12 -4
  16. package/cjs/services/nft-service/index.js +219 -150
  17. package/cjs/services/nft-service/multi-chain-nft-fetcher.js +145 -0
  18. package/cjs/services/nft-service/nft-handlers/base-nft-handler.js +28 -0
  19. package/cjs/services/nft-service/nft-handlers/evm/evm-nft-handler.js +179 -0
  20. package/cjs/services/nft-service/nft-handlers/registry.js +37 -0
  21. package/cjs/services/nft-service/nft-handlers/unique/unique-nft-handler.js +187 -0
  22. package/cjs/services/storage-service/DatabaseService.js +1 -1
  23. package/cjs/services/swap-service/handler/asset-hub/handler.js +7 -4
  24. package/cjs/services/swap-service/handler/asset-hub/router.js +2 -66
  25. package/cjs/services/swap-service/handler/base-handler.js +4 -3
  26. package/cjs/services/swap-service/handler/hydradx-handler.js +9 -5
  27. package/cjs/services/swap-service/index.js +5 -4
  28. package/cjs/types/swap/index.js +4 -9
  29. package/cjs/utils/account/common.js +44 -8
  30. package/core/logic-validation/index.d.ts +0 -1
  31. package/core/logic-validation/index.js +0 -1
  32. package/core/substrate/system-pallet.js +3 -0
  33. package/koni/api/nft/index.js +1 -15
  34. package/koni/background/cron.d.ts +0 -1
  35. package/koni/background/cron.js +1 -18
  36. package/koni/background/handlers/Extension.d.ts +4 -0
  37. package/koni/background/handlers/Extension.js +13 -7
  38. package/koni/background/handlers/State.d.ts +8 -2
  39. package/koni/background/handlers/State.js +24 -6
  40. package/package.json +31 -11
  41. package/packageInfo.js +1 -1
  42. package/services/balance-service/helpers/process.d.ts +1 -1
  43. package/services/balance-service/helpers/process.js +48 -21
  44. package/services/balance-service/index.js +2 -2
  45. package/services/balance-service/transfer/xcm/utils.js +9 -9
  46. package/services/chain-service/constants.d.ts +3 -0
  47. package/services/chain-service/constants.js +3 -0
  48. package/services/earning-service/handlers/native-staking/dtao.js +12 -13
  49. package/services/earning-service/handlers/native-staking/tao.d.ts +2 -1
  50. package/services/earning-service/handlers/native-staking/tao.js +15 -10
  51. package/services/earning-service/handlers/special.js +13 -5
  52. package/services/nft-service/index.d.ts +42 -6
  53. package/services/nft-service/index.js +219 -151
  54. package/services/nft-service/multi-chain-nft-fetcher.d.ts +13 -0
  55. package/services/nft-service/multi-chain-nft-fetcher.js +138 -0
  56. package/services/nft-service/nft-handlers/base-nft-handler.d.ts +13 -0
  57. package/services/nft-service/nft-handlers/base-nft-handler.js +21 -0
  58. package/services/nft-service/nft-handlers/evm/evm-nft-handler.d.ts +9 -0
  59. package/services/nft-service/nft-handlers/evm/evm-nft-handler.js +171 -0
  60. package/services/nft-service/nft-handlers/registry.d.ts +11 -0
  61. package/services/nft-service/nft-handlers/registry.js +29 -0
  62. package/services/nft-service/nft-handlers/unique/unique-nft-handler.d.ts +12 -0
  63. package/services/nft-service/nft-handlers/unique/unique-nft-handler.js +177 -0
  64. package/services/storage-service/DatabaseService.d.ts +1 -1
  65. package/services/storage-service/DatabaseService.js +1 -1
  66. package/services/swap-service/handler/asset-hub/handler.js +7 -4
  67. package/services/swap-service/handler/asset-hub/router.d.ts +0 -4
  68. package/services/swap-service/handler/asset-hub/router.js +1 -64
  69. package/services/swap-service/handler/base-handler.js +4 -3
  70. package/services/swap-service/handler/hydradx-handler.js +9 -5
  71. package/services/swap-service/index.js +5 -4
  72. package/types/swap/index.d.ts +7 -35
  73. package/types/swap/index.js +3 -8
  74. package/types/yield/actions/join/step.d.ts +1 -0
  75. package/types/yield/actions/join/submit.d.ts +2 -1
  76. package/utils/account/common.d.ts +22 -1
  77. package/utils/account/common.js +44 -8
  78. package/cjs/core/logic-validation/swap.js +0 -235
  79. package/core/logic-validation/swap.d.ts +0 -26
  80. package/core/logic-validation/swap.js +0 -219
@@ -1,219 +0,0 @@
1
- // Copyright 2019-2022 @subwallet/extension-base
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
5
- import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
6
- import { _getAssetDecimals, _getTokenMinAmount, _isChainEvmCompatible, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
7
- import { BasicTxErrorType } from '@subwallet/extension-base/types';
8
- import { SwapErrorType } from '@subwallet/extension-base/types/swap';
9
- import { formatNumber } from '@subwallet/extension-base/utils';
10
- import BigN from 'bignumber.js';
11
- import { isEthereumAddress } from '@polkadot/util-crypto';
12
- export function _validateBalanceToSwapOnAssetHub(fromToken, feeToken, feeTokenChainInfo, feeAmount, fromTokenBalance, feeTokenBalance, swapAmount, isXcmOk, minSwap) {
13
- const bnFromTokenBalance = new BigN(fromTokenBalance);
14
- if (!_isNativeToken(fromToken) && bnFromTokenBalance.minus(swapAmount).lt(_getTokenMinAmount(fromToken))) {
15
- const parsedMaxBalanceSwap = formatNumber(bnFromTokenBalance.minus(_getTokenMinAmount(fromToken)), _getAssetDecimals(fromToken));
16
- return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
17
- }
18
- if (new BigN(feeTokenBalance).lte(feeAmount)) {
19
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
20
- }
21
- if (!_isNativeToken(fromToken) && fromToken.slug === feeToken.slug) {
22
- // todo: need review and refactor
23
- if (bnFromTokenBalance.lte(new BigN(feeAmount).plus(swapAmount))) {
24
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
25
- }
26
- }
27
- if (isXcmOk) {
28
- // assume that the swap is valid if XCM is in the process and it was successful
29
- return undefined;
30
- }
31
- if (minSwap) {
32
- if (bnFromTokenBalance.lte(minSwap)) {
33
- const parsedMinSwapValue = formatNumber(minSwap, _getAssetDecimals(fromToken));
34
- return new TransactionError(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?
35
- }
36
- }
37
- if (new BigN(swapAmount).gte(fromTokenBalance)) {
38
- const parsedMaxBalanceSwap = formatNumber(fromTokenBalance, _getAssetDecimals(fromToken));
39
- return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
40
- }
41
- return undefined;
42
- }
43
- export function _validateBalanceToSwap(fromToken, feeToken, feeTokenChainInfo, feeAmount, fromTokenBalance, feeTokenBalance, swapAmount, isXcmOk, minSwap) {
44
- const bnFromTokenBalance = new BigN(fromTokenBalance);
45
- if (new BigN(feeTokenBalance).lte(feeAmount)) {
46
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
47
- }
48
- if (fromToken.slug === feeToken.slug) {
49
- // todo: need review and refactor
50
- if (bnFromTokenBalance.lte(new BigN(feeAmount).plus(swapAmount))) {
51
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
52
- }
53
- }
54
- if (isXcmOk) {
55
- // assume that the swap is valid if XCM is in the process and it was successful
56
- return undefined;
57
- }
58
- if (minSwap) {
59
- if (bnFromTokenBalance.lte(minSwap)) {
60
- const parsedMinSwapValue = formatNumber(minSwap, _getAssetDecimals(fromToken));
61
- return new TransactionError(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?
62
- }
63
- }
64
- if (new BigN(swapAmount).gte(fromTokenBalance)) {
65
- const parsedMaxBalanceSwap = formatNumber(fromTokenBalance, _getAssetDecimals(fromToken));
66
- return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
67
- }
68
- return undefined;
69
- }
70
- export function _validateSwapRecipient(destChainInfo, recipient) {
71
- const isEvmAddress = isEthereumAddress(recipient);
72
- const isEvmDestChain = _isChainEvmCompatible(destChainInfo);
73
- if (isEvmAddress && !isEvmDestChain || !isEvmAddress && isEvmDestChain) {
74
- return new TransactionError(SwapErrorType.INVALID_RECIPIENT);
75
- }
76
- return undefined;
77
- }
78
- export function _getChainflipEarlyValidationError(error, metadata) {
79
- // todo: support more providers
80
- switch (error) {
81
- case SwapErrorType.NOT_MEET_MIN_SWAP:
82
- {
83
- const parsedMinSwapValue = formatNumber(metadata.minSwap.value, metadata.minSwap.decimals);
84
- const message = `Amount too low. Increase your amount above ${parsedMinSwapValue} ${metadata.minSwap.symbol} and try again`;
85
- return new SwapError(error, message);
86
- }
87
- case SwapErrorType.SWAP_EXCEED_ALLOWANCE:
88
- {
89
- if (metadata.maxSwap) {
90
- const parsedMaxSwapValue = formatNumber(metadata.maxSwap.value, metadata.maxSwap.decimals);
91
- return new SwapError(error, `Amount too high. Lower your amount below ${parsedMaxSwapValue} ${metadata.maxSwap.symbol} and try again`);
92
- } else {
93
- return new SwapError(error, 'Amount too high. Lower your amount and try again');
94
- }
95
- }
96
- case SwapErrorType.ASSET_NOT_SUPPORTED:
97
- return new SwapError(error, 'This swap pair is not supported');
98
- case SwapErrorType.UNKNOWN:
99
- return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
100
- case SwapErrorType.ERROR_FETCHING_QUOTE:
101
- return new SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
102
- default:
103
- return new SwapError(error);
104
- }
105
- }
106
- export function _getEarlyHydradxValidationError(error, metadata) {
107
- switch (error) {
108
- case SwapErrorType.AMOUNT_CANNOT_BE_ZERO:
109
- {
110
- return new SwapError(error, 'Amount too low. Increase your amount above 0 and try again');
111
- }
112
- case SwapErrorType.ASSET_NOT_SUPPORTED:
113
- return new SwapError(error, 'This swap pair is not supported');
114
- case SwapErrorType.UNKNOWN:
115
- return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
116
- case SwapErrorType.ERROR_FETCHING_QUOTE:
117
- return new SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
118
- default:
119
- return new SwapError(error);
120
- }
121
- }
122
- export function _getEarlyAssetHubValidationError(error, metadata) {
123
- switch (error) {
124
- case SwapErrorType.AMOUNT_CANNOT_BE_ZERO:
125
- return new SwapError(error, 'Amount too low. Increase your amount above 0 and try again');
126
- case SwapErrorType.ASSET_NOT_SUPPORTED:
127
- return new SwapError(error, 'This swap pair is not supported');
128
- case SwapErrorType.UNKNOWN:
129
- return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
130
- case SwapErrorType.ERROR_FETCHING_QUOTE:
131
- return new SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
132
- case SwapErrorType.MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT:
133
- return new SwapError(error, 'You swap too much. It make pool not enough existential deposit');
134
- // TODO: i18n this
135
- default:
136
- return new SwapError(error);
137
- }
138
- }
139
- export function _getSimpleSwapEarlyValidationError(error, metadata) {
140
- // todo: support more providers
141
- switch (error) {
142
- case SwapErrorType.NOT_MEET_MIN_SWAP:
143
- {
144
- const message = `Amount too low. Increase your amount above ${metadata.minSwap.value} ${metadata.minSwap.symbol} and try again`;
145
- return new SwapError(error, message);
146
- }
147
- case SwapErrorType.SWAP_EXCEED_ALLOWANCE:
148
- {
149
- if (metadata.maxSwap) {
150
- return new SwapError(error, `Amount too high. Lower your amount below ${metadata.maxSwap.value} ${metadata.maxSwap.symbol} and try again`);
151
- } else {
152
- return new SwapError(error, 'Amount too high. Lower your amount and try again');
153
- }
154
- }
155
- case SwapErrorType.ASSET_NOT_SUPPORTED:
156
- return new SwapError(error, 'This swap pair is not supported');
157
- case SwapErrorType.UNKNOWN:
158
- return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
159
- case SwapErrorType.ERROR_FETCHING_QUOTE:
160
- return new SwapError(error, 'No swap quote found. Change your network endpoint or adjust amount and try again');
161
- default:
162
- return new SwapError(error);
163
- }
164
- }
165
- export function _validateQuoteV2(selectedQuote) {
166
- if (!selectedQuote) {
167
- return new TransactionError(BasicTxErrorType.INTERNAL_ERROR);
168
- }
169
-
170
- // Check swapQuote alive
171
- if (selectedQuote.aliveUntil <= +Date.now()) {
172
- return new TransactionError(SwapErrorType.QUOTE_TIMEOUT);
173
- }
174
- return undefined;
175
- }
176
- export function _validateBalanceToSwapV2(request) {
177
- const {
178
- chainInfo,
179
- feeAmount,
180
- feeToken,
181
- feeTokenBalance,
182
- fromToken,
183
- fromTokenBalance,
184
- minSwapAmount,
185
- swapAmount
186
- } = request;
187
- const bnFromTokenBalance = BigN(fromTokenBalance);
188
- if (new BigN(feeTokenBalance).lte(feeAmount)) {
189
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${chainInfo.name}) to pay transaction fee`);
190
- }
191
- if (fromToken.slug === feeToken.slug) {
192
- // todo: need review and refactor
193
- if (bnFromTokenBalance.lte(BigN(feeAmount).plus(swapAmount))) {
194
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
195
- }
196
- } else {
197
- if (bnFromTokenBalance.lt(swapAmount)) {
198
- return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
199
- }
200
- }
201
- if (minSwapAmount) {
202
- if (bnFromTokenBalance.lte(minSwapAmount)) {
203
- const parsedMinSwapValue = formatNumber(minSwapAmount, _getAssetDecimals(fromToken));
204
- return new TransactionError(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?
205
- }
206
- }
207
- return undefined;
208
- }
209
- export function _validateSwapRecipientV2(destChainInfo, recipient) {
210
- if (!recipient) {
211
- return undefined;
212
- }
213
- const isEvmAddress = isEthereumAddress(recipient);
214
- const isEvmDestChain = _isChainEvmCompatible(destChainInfo);
215
- if (isEvmAddress && !isEvmDestChain || !isEvmAddress && isEvmDestChain) {
216
- return new TransactionError(SwapErrorType.INVALID_RECIPIENT);
217
- }
218
- return undefined;
219
- }