@subwallet/extension-base 1.0.1 → 1.0.2-1b

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 (220) hide show
  1. package/background/KoniTypes.d.ts +25 -36
  2. package/background/KoniTypes.js +12 -7
  3. package/background/errors/TransactionError.js +21 -1
  4. package/cjs/background/KoniTypes.js +14 -8
  5. package/cjs/background/errors/TransactionError.js +20 -0
  6. package/cjs/constants/index.js +13 -28
  7. package/cjs/koni/api/dotsama/balance.js +60 -224
  8. package/cjs/koni/api/dotsama/transfer.js +30 -29
  9. package/cjs/koni/api/nft/acala_nft/index.js +4 -1
  10. package/cjs/koni/api/nft/bit.country/index.js +4 -1
  11. package/cjs/koni/api/nft/evm_nft/index.js +7 -3
  12. package/cjs/koni/api/nft/index.js +3 -6
  13. package/cjs/koni/api/nft/karura_nft/index.js +4 -1
  14. package/cjs/koni/api/nft/rmrk_nft/index.js +8 -1
  15. package/cjs/koni/api/nft/statemine_nft/index.js +4 -1
  16. package/cjs/koni/api/nft/unique_nft/index.js +6 -1
  17. package/cjs/koni/api/nft/wasm_nft/index.js +169 -111
  18. package/cjs/koni/api/nft/wasm_nft/utils.js +11 -7
  19. package/cjs/koni/api/staking/bonding/amplitude.js +18 -10
  20. package/cjs/koni/api/staking/bonding/astar.js +37 -238
  21. package/cjs/koni/api/staking/bonding/index.js +26 -14
  22. package/cjs/koni/api/staking/bonding/paraChain.js +100 -11
  23. package/cjs/koni/api/staking/bonding/relayChain.js +174 -16
  24. package/cjs/koni/api/staking/bonding/utils.js +55 -10
  25. package/cjs/koni/api/tokens/wasm/index.js +5 -4
  26. package/cjs/koni/api/tokens/wasm/utils.js +63 -0
  27. package/cjs/koni/api/xcm/index.js +0 -111
  28. package/cjs/koni/api/xcm/polkadotXcm.js +2 -2
  29. package/cjs/koni/api/xcm/utils.js +18 -13
  30. package/cjs/koni/api/xcm/xTokens.js +3 -5
  31. package/cjs/koni/api/xcm/xcmPallet.js +9 -6
  32. package/cjs/koni/background/cron.js +179 -77
  33. package/cjs/koni/background/handlers/Extension.js +231 -195
  34. package/cjs/koni/background/handlers/State.js +147 -111
  35. package/cjs/koni/background/handlers/Tabs.js +48 -39
  36. package/cjs/koni/background/subscription.js +64 -56
  37. package/cjs/packageInfo.js +1 -1
  38. package/cjs/page/index.js +5 -0
  39. package/cjs/services/chain-service/constants.js +1 -11
  40. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +13 -8
  41. package/cjs/services/chain-service/handler/light-client/index.js +2 -0
  42. package/cjs/services/chain-service/index.js +39 -6
  43. package/cjs/services/chain-service/utils.js +4 -0
  44. package/cjs/services/event-service/index.js +75 -0
  45. package/cjs/services/event-service/types.js +11 -0
  46. package/cjs/services/history-service/index.js +46 -21
  47. package/cjs/services/history-service/subsquid-multi-chain-history.js +19 -11
  48. package/cjs/services/keyring-service/index.js +101 -0
  49. package/cjs/services/migration-service/index.js +13 -10
  50. package/cjs/{koni/migration/scripts/RemoveWrongCrowdloan.js → services/migration-service/scripts/AutoEnableChainsTokens.js} +11 -6
  51. package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +39 -19
  52. package/cjs/services/migration-service/scripts/MigrateSettings.js +31 -0
  53. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +72 -0
  54. package/cjs/services/migration-service/scripts/index.js +13 -4
  55. package/cjs/services/price-service/coingecko.js +15 -3
  56. package/cjs/services/price-service/index.js +15 -18
  57. package/cjs/services/request-service/constants.js +8 -2
  58. package/cjs/services/request-service/handler/AuthRequestHandler.js +43 -12
  59. package/cjs/services/request-service/index.js +3 -0
  60. package/cjs/services/storage-service/DatabaseService.js +53 -34
  61. package/cjs/services/storage-service/databases/index.js +1 -1
  62. package/cjs/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +2 -8
  63. package/cjs/services/storage-service/db-stores/Nft.js +8 -18
  64. package/cjs/services/storage-service/db-stores/Transaction.js +10 -7
  65. package/cjs/services/subscan-service/index.js +107 -0
  66. package/cjs/services/subscan-service/subscan-chain-map.js +74 -0
  67. package/cjs/services/subscan-service/types.js +1 -0
  68. package/cjs/services/transaction-service/event-parser/index.js +20 -48
  69. package/cjs/services/transaction-service/index.js +66 -22
  70. package/cjs/services/transaction-service/utils.js +4 -6
  71. package/cjs/utils/address.js +9 -1
  72. package/cjs/utils/index.js +30 -26
  73. package/constants/index.d.ts +8 -13
  74. package/constants/index.js +8 -13
  75. package/koni/api/dotsama/balance.d.ts +0 -1
  76. package/koni/api/dotsama/balance.js +33 -197
  77. package/koni/api/dotsama/transfer.js +5 -4
  78. package/koni/api/nft/acala_nft/index.js +3 -1
  79. package/koni/api/nft/bit.country/index.js +3 -1
  80. package/koni/api/nft/evm_nft/index.js +6 -3
  81. package/koni/api/nft/index.d.ts +1 -2
  82. package/koni/api/nft/index.js +3 -6
  83. package/koni/api/nft/karura_nft/index.js +3 -1
  84. package/koni/api/nft/nft.d.ts +1 -0
  85. package/koni/api/nft/rmrk_nft/index.js +8 -1
  86. package/koni/api/nft/statemine_nft/index.js +3 -1
  87. package/koni/api/nft/unique_nft/index.js +5 -1
  88. package/koni/api/nft/wasm_nft/index.d.ts +0 -2
  89. package/koni/api/nft/wasm_nft/index.js +167 -109
  90. package/koni/api/nft/wasm_nft/utils.d.ts +7 -5
  91. package/koni/api/nft/wasm_nft/utils.js +7 -5
  92. package/koni/api/staking/bonding/amplitude.d.ts +1 -2
  93. package/koni/api/staking/bonding/amplitude.js +22 -13
  94. package/koni/api/staking/bonding/astar.d.ts +2 -11
  95. package/koni/api/staking/bonding/astar.js +39 -231
  96. package/koni/api/staking/bonding/index.d.ts +5 -2
  97. package/koni/api/staking/bonding/index.js +27 -17
  98. package/koni/api/staking/bonding/paraChain.d.ts +4 -1
  99. package/koni/api/staking/bonding/paraChain.js +101 -14
  100. package/koni/api/staking/bonding/relayChain.d.ts +6 -2
  101. package/koni/api/staking/bonding/relayChain.js +172 -17
  102. package/koni/api/staking/bonding/utils.d.ts +15 -2
  103. package/koni/api/staking/bonding/utils.js +53 -11
  104. package/koni/api/tokens/wasm/index.js +5 -4
  105. package/koni/api/tokens/wasm/utils.d.ts +6 -0
  106. package/koni/api/tokens/wasm/utils.js +54 -0
  107. package/koni/api/xcm/index.js +1 -112
  108. package/koni/api/xcm/polkadotXcm.js +3 -3
  109. package/koni/api/xcm/utils.d.ts +5 -6
  110. package/koni/api/xcm/utils.js +15 -10
  111. package/koni/api/xcm/xTokens.js +5 -7
  112. package/koni/api/xcm/xcmPallet.js +10 -9
  113. package/koni/background/cron.d.ts +6 -1
  114. package/koni/background/cron.js +179 -76
  115. package/koni/background/handlers/Extension.d.ts +2 -2
  116. package/koni/background/handlers/Extension.js +161 -125
  117. package/koni/background/handlers/State.d.ts +21 -20
  118. package/koni/background/handlers/State.js +144 -111
  119. package/koni/background/handlers/Tabs.js +30 -20
  120. package/koni/background/subscription.d.ts +1 -1
  121. package/koni/background/subscription.js +64 -58
  122. package/package.json +63 -18
  123. package/packageInfo.js +1 -1
  124. package/page/index.d.ts +2 -0
  125. package/page/index.js +4 -0
  126. package/services/chain-service/constants.d.ts +0 -1
  127. package/services/chain-service/constants.js +0 -9
  128. package/services/chain-service/handler/SubstrateChainHandler.js +14 -9
  129. package/services/chain-service/handler/light-client/index.d.ts +17 -1
  130. package/services/chain-service/handler/light-client/index.js +1 -1
  131. package/services/chain-service/helper/psp22_abi.json +1041 -881
  132. package/services/chain-service/helper/psp34_abi.json +2963 -1807
  133. package/services/chain-service/index.d.ts +6 -4
  134. package/services/chain-service/index.js +40 -9
  135. package/services/chain-service/utils.d.ts +1 -0
  136. package/services/chain-service/utils.js +3 -0
  137. package/services/event-service/index.d.ts +22 -0
  138. package/services/event-service/index.js +63 -0
  139. package/services/event-service/types.d.ts +28 -0
  140. package/services/event-service/types.js +4 -0
  141. package/services/history-service/index.d.ts +5 -3
  142. package/services/history-service/index.js +46 -21
  143. package/services/history-service/subsquid-multi-chain-history.js +22 -13
  144. package/services/keyring-service/index.d.ts +19 -0
  145. package/services/keyring-service/index.js +93 -0
  146. package/services/migration-service/index.js +11 -9
  147. package/services/migration-service/scripts/AutoEnableChainsTokens.d.ts +4 -0
  148. package/services/migration-service/scripts/AutoEnableChainsTokens.js +13 -0
  149. package/services/migration-service/scripts/MigrateNetworkSettings.js +37 -18
  150. package/services/migration-service/scripts/MigrateSettings.d.ts +4 -0
  151. package/services/migration-service/scripts/MigrateSettings.js +23 -0
  152. package/services/migration-service/scripts/MigrateTransactionHistory.d.ts +4 -0
  153. package/services/migration-service/scripts/MigrateTransactionHistory.js +64 -0
  154. package/services/migration-service/scripts/index.d.ts +1 -0
  155. package/services/migration-service/scripts/index.js +10 -3
  156. package/services/price-service/coingecko.js +15 -3
  157. package/services/price-service/index.d.ts +5 -3
  158. package/services/price-service/index.js +15 -18
  159. package/services/request-service/constants.d.ts +1 -0
  160. package/services/request-service/constants.js +6 -1
  161. package/services/request-service/handler/AuthRequestHandler.d.ts +8 -1
  162. package/services/request-service/handler/AuthRequestHandler.js +44 -13
  163. package/services/request-service/index.d.ts +7 -1
  164. package/services/request-service/index.js +3 -0
  165. package/services/storage-service/DatabaseService.d.ts +1 -0
  166. package/services/storage-service/DatabaseService.js +53 -34
  167. package/services/storage-service/databases/index.js +1 -1
  168. package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.d.ts +1 -1
  169. package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +2 -8
  170. package/services/storage-service/db-stores/Nft.d.ts +3 -3
  171. package/services/storage-service/db-stores/Nft.js +8 -17
  172. package/services/storage-service/db-stores/Transaction.js +10 -7
  173. package/services/subscan-service/index.d.ts +20 -0
  174. package/services/subscan-service/index.js +99 -0
  175. package/services/subscan-service/subscan-chain-map.d.ts +5 -0
  176. package/services/subscan-service/subscan-chain-map.js +63 -0
  177. package/services/subscan-service/types.d.ts +27 -0
  178. package/services/subscan-service/types.js +1 -0
  179. package/services/transaction-service/event-parser/index.d.ts +2 -2
  180. package/services/transaction-service/event-parser/index.js +21 -49
  181. package/services/transaction-service/index.d.ts +4 -2
  182. package/services/transaction-service/index.js +66 -22
  183. package/services/transaction-service/utils.js +5 -6
  184. package/utils/address.d.ts +1 -0
  185. package/utils/address.js +9 -2
  186. package/utils/index.d.ts +2 -1
  187. package/utils/index.js +26 -23
  188. package/cjs/background/errors/EvmRpcError.js +0 -21
  189. package/cjs/background/errors/SubWalletProviderError.js +0 -17
  190. package/cjs/constants/ethereum.js +0 -19
  191. package/cjs/errors/SubWalletProviderError.js +0 -17
  192. package/cjs/koni/api/xcm/astar.js +0 -160
  193. package/cjs/koni/api/xcm/moonbeamXcm.js +0 -80
  194. package/cjs/koni/api/xcm/statemintXcm.js +0 -197
  195. package/cjs/koni/api/xcm/substrateXcm.js +0 -213
  196. package/cjs/koni/migration/Base.js +0 -20
  197. package/cjs/koni/migration/index.js +0 -45
  198. package/cjs/koni/migration/scripts/ChangeRouteToHome.js +0 -22
  199. package/cjs/koni/migration/scripts/ClearOldStorage.js +0 -24
  200. package/cjs/koni/migration/scripts/RemoveWrongTransactionHistoriesFromStore.js +0 -36
  201. package/cjs/koni/migration/scripts/ResetTransactionHistoryEventIdx.js +0 -21
  202. package/cjs/koni/migration/scripts/index.js +0 -22
  203. package/cjs/koni/page/index.js +0 -16
  204. package/cjs/services/asset-service/index.js +0 -91
  205. package/cjs/services/storage-service/db-stores/ExtraDelegationInfo.js +0 -17
  206. package/cjs/stores/Balance.js +0 -18
  207. package/cjs/stores/Crowdloan.js +0 -18
  208. package/cjs/stores/CustomEvmToken.js +0 -18
  209. package/cjs/stores/NetworkMap.js +0 -18
  210. package/cjs/stores/Nft.js +0 -18
  211. package/cjs/stores/NftCollection.js +0 -18
  212. package/cjs/stores/Price.js +0 -18
  213. package/cjs/stores/Staking.js +0 -18
  214. package/cjs/stores/StakingReward.js +0 -18
  215. package/cjs/utils/eth/parseTransactionData.js +0 -284
  216. package/koni/page/index.d.ts +0 -2
  217. package/koni/page/index.js +0 -9
  218. /package/cjs/{koni/page → page}/SubWalleEvmProvider.js +0 -0
  219. /package/{koni/page → page}/SubWalleEvmProvider.d.ts +0 -0
  220. /package/{koni/page → page}/SubWalleEvmProvider.js +0 -0
@@ -3,38 +3,48 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getFreeBalance = getFreeBalance;
7
6
  exports.subscribeBalance = subscribeBalance;
8
7
  exports.subscribeEVMBalance = subscribeEVMBalance;
9
8
  exports.subscribeSubstrateBalance = subscribeSubstrateBalance;
10
9
  var _types = require("@subwallet/chain-list/types");
11
10
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
12
11
  var _constants = require("@subwallet/extension-base/constants");
13
- var _balance2 = require("@subwallet/extension-base/koni/api/tokens/evm/balance");
12
+ var _balance = require("@subwallet/extension-base/koni/api/tokens/evm/balance");
14
13
  var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
15
14
  var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
15
+ var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
16
16
  var _handlers = require("@subwallet/extension-base/koni/background/handlers");
17
17
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
18
- var _utils = require("@subwallet/extension-base/services/chain-service/utils");
19
- var _utils2 = require("@subwallet/extension-base/utils");
18
+ var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
19
+ var _utils3 = require("@subwallet/extension-base/utils");
20
20
  var _util = require("@polkadot/util");
21
- var _utilCrypto = require("@polkadot/util-crypto");
22
21
  // Copyright 2019-2022 @subwallet/extension-base
23
22
  // SPDX-License-Identifier: Apache-2.0
24
23
 
25
24
  // main subscription
26
25
  function subscribeBalance(addresses, chainInfoMap, substrateApiMap, evmApiMap, callback) {
27
- const [substrateAddresses, evmAddresses] = (0, _utils2.categoryAddresses)(addresses);
26
+ const [substrateAddresses, evmAddresses] = (0, _utils3.categoryAddresses)(addresses);
28
27
 
29
28
  // Looping over each chain
30
29
  const unsubList = Object.entries(chainInfoMap).map(async _ref => {
31
30
  let [chainSlug, chainInfo] = _ref;
32
- const useAddresses = (0, _utils._isChainEvmCompatible)(chainInfo) ? evmAddresses : substrateAddresses;
33
- if ((0, _utils._isPureEvmChain)(chainInfo)) {
31
+ const useAddresses = (0, _utils2._isChainEvmCompatible)(chainInfo) ? evmAddresses : substrateAddresses;
32
+ if ((0, _utils2._isPureEvmChain)(chainInfo)) {
34
33
  const nativeTokenInfo = _handlers.state.getNativeTokenInfo(chainSlug);
35
34
  return subscribeEVMBalance(chainSlug, useAddresses, evmApiMap, callback, nativeTokenInfo);
36
35
  }
37
36
  if (!useAddresses || useAddresses.length === 0 || _constants2._PURE_EVM_CHAINS.indexOf(chainSlug) > -1) {
37
+ const fungibleTokensByChain = _handlers.state.chainService.getFungibleTokensByChain(chainSlug, true);
38
+ const now = new Date().getTime();
39
+ Object.values(fungibleTokensByChain).map(token => {
40
+ return {
41
+ tokenSlug: token.slug,
42
+ free: '0',
43
+ locked: '0',
44
+ state: _KoniTypes.APIItemState.READY,
45
+ timestamp: now
46
+ };
47
+ }).forEach(callback);
38
48
  return undefined;
39
49
  }
40
50
  const networkAPI = await substrateApiMap[chainSlug].isReady;
@@ -68,10 +78,10 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
68
78
  } else if (_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
69
79
  unsubLocalToken = await subscribeEquilibriumTokenBalance(addresses, chain, networkAPI.api, callBack, true);
70
80
  }
71
- if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
81
+ if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
72
82
  unsubEvmContractToken = subscribeERC20Interval(addresses, chain, evmApiMap, callBack);
73
83
  }
74
- if ((0, _utils._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.PSP22)) {
84
+ if ((0, _utils2._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.PSP22)) {
75
85
  // Get sub-token for substrate-based chains
76
86
  unsubWasmContractToken = subscribePSP22Balance(addresses, chain, networkAPI.api, callBack);
77
87
  }
@@ -88,17 +98,23 @@ async function subscribeSubstrateBalance(addresses, chainInfo, chain, networkAPI
88
98
 
89
99
  // handler according to different logic
90
100
  async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI, callBack) {
91
- const chainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(chainInfo);
101
+ const chainNativeTokenSlug = (0, _utils2._getChainNativeTokenSlug)(chainInfo);
92
102
  const unsub = await networkAPI.query.system.account.multi(addresses, async balances => {
93
103
  let [total, reserved, miscFrozen, feeFrozen] = [new _util.BN(0), new _util.BN(0), new _util.BN(0), new _util.BN(0)];
94
104
  let pooledStakingBalance = _util.BN_ZERO;
95
- if ((0, _utils._isSubstrateRelayChain)(chainInfo) && networkAPI.query.nominationPools) {
105
+ if ((0, _utils2._isSubstrateRelayChain)(chainInfo) && networkAPI.query.nominationPools) {
96
106
  const poolMemberDatas = await networkAPI.query.nominationPools.poolMembers.multi(addresses);
97
- for (const _poolMemberData of poolMemberDatas) {
98
- const poolMemberData = _poolMemberData.toPrimitive();
99
- if (poolMemberData) {
100
- const pooledBalance = new _util.BN(poolMemberData.points.toString());
101
- pooledStakingBalance = pooledStakingBalance.add(pooledBalance);
107
+ if (poolMemberDatas) {
108
+ for (const _poolMemberData of poolMemberDatas) {
109
+ const poolMemberData = _poolMemberData.toPrimitive();
110
+ if (poolMemberData) {
111
+ const pooledBalance = new _util.BN(poolMemberData.points.toString());
112
+ pooledStakingBalance = pooledStakingBalance.add(pooledBalance);
113
+ Object.entries(poolMemberData.unbondingEras).forEach(_ref2 => {
114
+ let [, amount] = _ref2;
115
+ pooledStakingBalance = pooledStakingBalance.add(new _util.BN(amount));
116
+ });
117
+ }
102
118
  }
103
119
  }
104
120
  }
@@ -119,7 +135,7 @@ async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI
119
135
  const free = total.sub(locked);
120
136
  callBack({
121
137
  tokenSlug: chainNativeTokenSlug,
122
- free: free.toString(),
138
+ free: free.gte(_util.BN_ZERO) ? free.toString() : '0',
123
139
  locked: locked.toString(),
124
140
  state: _KoniTypes.APIItemState.READY,
125
141
  substrateInfo: {
@@ -133,79 +149,6 @@ async function subscribeWithSystemAccountPallet(addresses, chainInfo, networkAPI
133
149
  unsub();
134
150
  };
135
151
  }
136
-
137
- // deprecated
138
- // function subscribeDarwiniaBalance (addresses: string[], chainInfo: _ChainInfo, chain: string, networkAPI: ApiPromise, callBack: (rs: BalanceItem) => void) {
139
- // const tokenMap = state.getAssetByChainAndAsset(chain, [_AssetType.LOCAL]);
140
- // const nativeTokenSlug = _getChainNativeTokenSlug(chainInfo);
141
- //
142
- // let totalBalance: BN = new BN(0);
143
- // let freeBalance: BN = new BN(0);
144
- // let miscFrozen: BN = new BN(0);
145
- // let reservedKtonBalance: BN = new BN(0);
146
- // let totalKtonBalance: BN = new BN(0);
147
- //
148
- // const unsubProms = addresses.map((address) => {
149
- // return networkAPI.derive.balances?.all(address, async (balance: DeriveBalancesAll) => {
150
- // // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
151
- // freeBalance = freeBalance.add(balance.availableBalance?.toBn() || new BN(0));
152
- // miscFrozen = miscFrozen.add(balance.lockedBalance?.toBn() || new BN(0));
153
- // totalBalance = totalBalance.add(balance.freeBalance?.toBn() || new BN(0));
154
- //
155
- // const _systemBalance = await networkAPI.query.system.account(address);
156
- // const systemBalance = _systemBalance.toHuman() as unknown as AccountInfo;
157
- //
158
- // // @ts-ignore
159
- // const rawTotalKton = (systemBalance.data?.freeKton as string).replaceAll(',', '');
160
- // // @ts-ignore
161
- // const rawReservedKton = (systemBalance.data?.reservedKton as string).replaceAll(',', '');
162
- //
163
- // // @ts-ignore
164
- // // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
165
- // totalKtonBalance = totalKtonBalance.add(new BN(rawTotalKton) || new BN(0));
166
- // // @ts-ignore
167
- // // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
168
- // reservedKtonBalance = reservedKtonBalance.add(new BN(rawReservedKton) || new BN(0));
169
- //
170
- // if (Object.keys(tokenMap).length > 1) {
171
- // for (const tokenInfo of Object.values(tokenMap)) {
172
- // if (_BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
173
- // const freeKton = totalKtonBalance.sub(reservedKtonBalance);
174
- //
175
- // callBack({
176
- // free: freeKton.toString(),
177
- // locked: reservedKtonBalance.toString(),
178
- // state: APIItemState.READY,
179
- // tokenSlug: tokenInfo.slug
180
- // });
181
- // break;
182
- // }
183
- // }
184
- // }
185
- //
186
- // const free = totalBalance.sub(miscFrozen);
187
- //
188
- // callBack({
189
- // tokenSlug: nativeTokenSlug,
190
- // free: free.toString(),
191
- // locked: miscFrozen.toString(),
192
- // state: APIItemState.READY,
193
- // substrateInfo: {
194
- // miscFrozen: miscFrozen.toString()
195
- // }
196
- // });
197
- // });
198
- // });
199
- //
200
- // return () => {
201
- // Promise.all(unsubProms).then((unsubs) => {
202
- // unsubs.forEach((unsub) => {
203
- // unsub && unsub();
204
- // });
205
- // }).catch(console.error);
206
- // };
207
- // }
208
-
209
152
  function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
210
153
  let tokenList = {};
211
154
  const erc20ContractMap = {};
@@ -218,7 +161,7 @@ function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
218
161
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
219
162
  return contract.methods.balanceOf(address).call();
220
163
  }));
221
- free = (0, _utils2.sumBN)(balanceList.map(balance => new _util.BN(balance || 0)));
164
+ free = (0, _utils3.sumBN)(balanceList.map(balance => new _util.BN(balance || 0)));
222
165
  callBack({
223
166
  tokenSlug: tokenInfo.slug,
224
167
  free: free.toString(),
@@ -231,9 +174,9 @@ function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
231
174
  });
232
175
  };
233
176
  tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.ERC20]);
234
- Object.entries(tokenList).forEach(_ref2 => {
235
- let [slug, tokenInfo] = _ref2;
236
- erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0, _utils._getContractAddressOfToken)(tokenInfo), evmApiMap);
177
+ Object.entries(tokenList).forEach(_ref3 => {
178
+ let [slug, tokenInfo] = _ref3;
179
+ erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0, _utils2._getContractAddressOfToken)(tokenInfo), evmApiMap);
237
180
  });
238
181
  getTokenBalances();
239
182
  const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
@@ -250,12 +193,14 @@ function subscribePSP22Balance(addresses, chain, api, callBack) {
250
193
  try {
251
194
  const contract = psp22ContractMap[tokenInfo.slug];
252
195
  const balances = await Promise.all(addresses.map(async address => {
196
+ var _balanceOf$output;
253
197
  const _balanceOf = await contract.query['psp22::balanceOf'](address, {
254
- gasLimit: -1
198
+ gasLimit: (0, _utils.getDefaultWeightV2)(api)
255
199
  }, address);
256
- return _balanceOf.output ? _balanceOf.output.toString() : '0';
200
+ const balanceObj = _balanceOf === null || _balanceOf === void 0 ? void 0 : (_balanceOf$output = _balanceOf.output) === null || _balanceOf$output === void 0 ? void 0 : _balanceOf$output.toPrimitive();
201
+ return _balanceOf.output ? balanceObj.ok || balanceObj.Ok : '0';
257
202
  }));
258
- free = (0, _utils2.sumBN)(balances.map(bal => new _util.BN(bal || 0)));
203
+ free = (0, _utils3.sumBN)(balances.map(bal => new _util.BN(bal || 0)));
259
204
  callBack({
260
205
  tokenSlug: tokenInfo.slug,
261
206
  free: free.toString(),
@@ -263,14 +208,15 @@ function subscribePSP22Balance(addresses, chain, api, callBack) {
263
208
  state: _KoniTypes.APIItemState.READY
264
209
  });
265
210
  } catch (err) {
266
- console.log('There is a problem fetching ' + tokenInfo.slug + ' PSP-22 token balance', err);
211
+ console.warn('Problem fetching ' + tokenInfo.slug + ' PSP-22 token balance', err); // TODO: error createType
267
212
  }
268
213
  });
269
214
  };
215
+
270
216
  tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.PSP22]);
271
- Object.entries(tokenList).forEach(_ref3 => {
272
- let [slug, tokenInfo] = _ref3;
273
- psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils._getContractAddressOfToken)(tokenInfo));
217
+ Object.entries(tokenList).forEach(_ref4 => {
218
+ let [slug, tokenInfo] = _ref4;
219
+ psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
274
220
  });
275
221
  getTokenBalances();
276
222
  const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
@@ -284,7 +230,7 @@ async function subscribeEquilibriumTokenBalance(addresses, chain, api, callBack,
284
230
  const unsub = await api.query.system.account.multi(addresses, balances => {
285
231
  // Equilibrium customizes the SystemAccount pallet
286
232
  Object.values(tokenMap).forEach(tokenInfo => {
287
- const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
233
+ const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
288
234
  let tokenFreeBalance = _util.BN_ZERO;
289
235
  for (const balance of balances) {
290
236
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
@@ -317,10 +263,10 @@ async function subscribeEqBalanceAccountPallet(addresses, chain, api, callBack,
317
263
  const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
318
264
  const unsubList = Object.values(tokenMap).map(async tokenInfo => {
319
265
  try {
320
- const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
266
+ const assetId = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
321
267
  const unsub = await api.query.eqBalances.account.multi(addresses.map(address => [address, [assetId]]), balances => {
322
268
  const tokenBalance = {
323
- free: (0, _utils2.sumBN)(balances.map(b => b.asPositive)).toString(),
269
+ free: (0, _utils3.sumBN)(balances.map(b => b.asPositive)).toString(),
324
270
  locked: '0',
325
271
  // Equilibrium doesn't show locked balance
326
272
  state: _KoniTypes.APIItemState.READY,
@@ -347,15 +293,15 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
347
293
  const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, tokenTypes);
348
294
  const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
349
295
  try {
350
- const onChainInfo = (0, _utils._getTokenOnChainInfo)(tokenInfo);
296
+ const onChainInfo = (0, _utils2._getTokenOnChainInfo)(tokenInfo);
351
297
 
352
298
  // Get Token Balance
353
299
  // @ts-ignore
354
300
  return await api.query.tokens.accounts.multi(addresses.map(address => [address, onChainInfo]), balances => {
355
301
  const tokenBalance = {
356
- reserved: (0, _utils2.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
357
- frozen: (0, _utils2.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
358
- free: (0, _utils2.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
302
+ reserved: (0, _utils3.sumBN)(balances.map(b => b.reserved || new _util.BN(0))),
303
+ frozen: (0, _utils3.sumBN)(balances.map(b => b.frozen || new _util.BN(0))),
304
+ free: (0, _utils3.sumBN)(balances.map(b => b.free || new _util.BN(0))) // free is actually total balance
359
305
  };
360
306
 
361
307
  // free balance = total balance - frozen misc
@@ -388,7 +334,7 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
388
334
  const tokenMap = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.LOCAL]);
389
335
  const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
390
336
  try {
391
- const assetIndex = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
337
+ const assetIndex = (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
392
338
 
393
339
  // Get Token Balance
394
340
  return await api.query.assets.account.multi(addresses.map(address => [assetIndex, address]), balances => {
@@ -397,11 +343,11 @@ async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
397
343
  balances.forEach(b => {
398
344
  // @ts-ignore
399
345
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment
400
- const bdata = b === null || b === void 0 ? void 0 : b.toJSON();
346
+ const bdata = b === null || b === void 0 ? void 0 : b.toHuman();
401
347
  if (bdata) {
402
348
  // @ts-ignore
403
349
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument
404
- const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance) || '0');
350
+ const addressBalance = new _util.BN(String(bdata === null || bdata === void 0 ? void 0 : bdata.balance).replaceAll(',', '') || '0');
405
351
 
406
352
  // @ts-ignore
407
353
  if (bdata !== null && bdata !== void 0 && bdata.isFrozen) {
@@ -442,8 +388,8 @@ function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
442
388
  locked: '0'
443
389
  };
444
390
  function getBalance() {
445
- (0, _balance2.getEVMBalance)(chain, addresses, evmApiMap).then(balances => {
446
- balanceItem.free = (0, _utils2.sumBN)(balances.map(b => new _util.BN(b || '0'))).toString();
391
+ (0, _balance.getEVMBalance)(chain, addresses, evmApiMap).then(balances => {
392
+ balanceItem.free = (0, _utils3.sumBN)(balances.map(b => new _util.BN(b || '0'))).toString();
447
393
  balanceItem.state = _KoniTypes.APIItemState.READY;
448
394
  callback(balanceItem);
449
395
  }).catch(console.warn);
@@ -455,114 +401,4 @@ function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
455
401
  clearInterval(interval);
456
402
  unsub2 && unsub2();
457
403
  };
458
- }
459
- async function getFreeBalance(chain, address, substrateApiMap, evmApiMap, tokenSlug) {
460
- const substrateApi = await substrateApiMap[chain].isReady;
461
- const api = substrateApi.api;
462
- const web3Api = evmApiMap[chain];
463
- const tokenInfo = tokenSlug ? _handlers.state.getAssetBySlug(tokenSlug) : _handlers.state.getNativeTokenInfo(chain);
464
- const chainInfo = _handlers.state.getChainInfo(chain);
465
-
466
- // Only EVM Address use with EVM network
467
- if (Boolean(web3Api || (0, _utils._isChainEvmCompatible)(chainInfo)) !== (0, _utilCrypto.isEthereumAddress)(address)) {
468
- if (!(0, _utilCrypto.isEthereumAddress)(address)) {
469
- return '0';
470
- }
471
- }
472
-
473
- // web3Api support mean isEthereum Network support
474
- if (web3Api) {
475
- if ((0, _utils._isNativeToken)(tokenInfo)) {
476
- var _web3Api$api;
477
- return (await ((_web3Api$api = web3Api.api) === null || _web3Api$api === void 0 ? void 0 : _web3Api$api.eth.getBalance(address))) || '0';
478
- } else {
479
- if ((0, _utils._getContractAddressOfToken)(tokenInfo).length > 0) {
480
- return '0';
481
- }
482
- const contract = (0, _web.getERC20Contract)(chain, (0, _utils._getContractAddressOfToken)(tokenInfo), evmApiMap);
483
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
484
- const free = await contract.methods.balanceOf(address).call();
485
-
486
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return
487
- return (free === null || free === void 0 ? void 0 : free.toString()) || '0';
488
- }
489
- } else {
490
- var _balance$availableBal, _balance$availableBal2;
491
- if (tokenSlug) {
492
- if ((0, _utils._isSmartContractToken)(tokenInfo)) {
493
- if ((0, _utils._getContractAddressOfToken)(tokenInfo).length > 0) {
494
- return '0';
495
- }
496
- const contractPromise = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils._getContractAddressOfToken)(tokenInfo));
497
- const balanceOf = await contractPromise.query['psp22::balanceOf'](address, {
498
- gasLimit: -1
499
- }, address);
500
- return balanceOf.output ? balanceOf.output.toString() : '0';
501
- } else if (_constants2._BALANCE_CHAIN_GROUP.genshiro.includes(chain)) {
502
- var _balance$asPositive;
503
- const onChainInfo = (0, _utils._getTokenOnChainInfo)(tokenInfo);
504
- const balance = await api.query.eqBalances.account(address, onChainInfo);
505
-
506
- // @ts-ignore
507
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
508
- return ((_balance$asPositive = balance.asPositive) === null || _balance$asPositive === void 0 ? void 0 : _balance$asPositive.toString()) || '0';
509
- } else if (_constants2._BALANCE_CHAIN_GROUP.equilibrium_parachain.includes(chain)) {
510
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
511
- const balance = await api.query.system.account(address);
512
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
513
- const balancesData = JSON.parse(balance.data.toString());
514
- const balanceList = balancesData.v0.balance;
515
- let freeTokenBalance;
516
- const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
517
- if (!(0, _utils._isNativeToken)(tokenInfo)) {
518
- // @ts-ignore
519
- freeTokenBalance = balanceList.find(data => data[0] === assetId);
520
- } else {
521
- freeTokenBalance = balanceList[0];
522
- }
523
- return freeTokenBalance ? freeTokenBalance[1].positive.toString() : '0';
524
- } else if (_constants2._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
525
- var _balance$data5, _balance$data5$freeKt;
526
- // @ts-ignore
527
- const balance = await api.query.system.account(address);
528
- return ((_balance$data5 = balance.data) === null || _balance$data5 === void 0 ? void 0 : (_balance$data5$freeKt = _balance$data5.freeKton) === null || _balance$data5$freeKt === void 0 ? void 0 : _balance$data5$freeKt.toString()) || '0';
529
- } else if (!(0, _utils._isNativeToken)(tokenInfo) && _constants2._BALANCE_CHAIN_GROUP.statemine.includes(chain)) {
530
- var _balanceInfo$balance;
531
- const assetId = (0, _utils._getTokenOnChainAssetId)(tokenInfo);
532
- const balanceInfo = (await api.query.assets.account(assetId, address)).toHuman();
533
-
534
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
535
- return (balanceInfo === null || balanceInfo === void 0 ? void 0 : (_balanceInfo$balance = balanceInfo.balance) === null || _balanceInfo$balance === void 0 ? void 0 : _balanceInfo$balance.replaceAll(',', '')) || '0';
536
- } else if (!(0, _utils._isNativeToken)(tokenInfo) || _constants2._BALANCE_CHAIN_GROUP.kintsugi.includes(chain)) {
537
- var _balance$free;
538
- const onChainInfo = (0, _utils._getTokenOnChainInfo)(tokenInfo);
539
- // @ts-ignore
540
- const balance = await api.query.tokens.accounts(address, onChainInfo);
541
- return ((_balance$free = balance.free) === null || _balance$free === void 0 ? void 0 : _balance$free.toString()) || '0';
542
- }
543
- }
544
- if (_constants2._BALANCE_CHAIN_GROUP.kusama.includes(chain)) {
545
- var _balance$data6, _balance$data7;
546
- // @ts-ignore
547
- const _balance = await api.query.system.account(address);
548
-
549
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
550
- const balance = _balance.toHuman();
551
-
552
- // @ts-ignore
553
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
554
- const freeBalance = new _util.BN((_balance$data6 = balance.data) === null || _balance$data6 === void 0 ? void 0 : _balance$data6.free.replaceAll(',', ''));
555
-
556
- // @ts-ignore
557
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
558
- const miscFrozen = new _util.BN((_balance$data7 = balance.data) === null || _balance$data7 === void 0 ? void 0 : _balance$data7.miscFrozen.replaceAll(',', ''));
559
- const transferable = freeBalance.sub(miscFrozen);
560
-
561
- // @ts-ignore
562
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
563
- return transferable.toString() || '0';
564
- }
565
- const balance = await api.derive.balances.all(address);
566
- return ((_balance$availableBal = balance.availableBalance) === null || _balance$availableBal === void 0 ? void 0 : (_balance$availableBal2 = _balance$availableBal.toBn()) === null || _balance$availableBal2 === void 0 ? void 0 : _balance$availableBal2.toString()) || '0';
567
- }
568
404
  }
@@ -7,8 +7,9 @@ exports.checkReferenceCount = checkReferenceCount;
7
7
  exports.checkSupportTransfer = checkSupportTransfer;
8
8
  exports.createTransferExtrinsic = void 0;
9
9
  var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
10
+ var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
10
11
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
11
- var _utils = require("@subwallet/extension-base/services/chain-service/utils");
12
+ var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
12
13
  var _util = require("@polkadot/util");
13
14
  // Copyright 2019-2022 @subwallet/extension-base
14
15
  // SPDX-License-Identifier: Apache-2.0
@@ -19,7 +20,7 @@ function isRefCount(accountInfo) {
19
20
  async function checkReferenceCount(networkKey, address, substrateApiMap, chainInfo) {
20
21
  const apiProps = await substrateApiMap[networkKey].isReady;
21
22
  const api = apiProps.api;
22
- if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
23
+ if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
23
24
  return false;
24
25
  }
25
26
 
@@ -35,7 +36,7 @@ async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMap, chai
35
36
  supportTransferAll: false
36
37
  };
37
38
  }
38
- if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
39
+ if ((0, _utils2._isChainEvmCompatible)(chainInfo)) {
39
40
  return {
40
41
  supportTransfer: true,
41
42
  supportTransferAll: true
@@ -59,32 +60,32 @@ async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMap, chai
59
60
  if (!(isTxCurrenciesSupported || isTxBalancesSupported || isTxTokensSupported || isTxEqBalancesSupported)) {
60
61
  return result;
61
62
  }
62
- if ((0, _utils._isTokenWasmSmartContract)(tokenInfo) && api.query.contracts) {
63
+ if ((0, _utils2._isTokenWasmSmartContract)(tokenInfo) && api.query.contracts) {
63
64
  // for PSP tokens
64
65
  return {
65
66
  supportTransfer: true,
66
67
  supportTransferAll: true
67
68
  };
68
69
  }
69
- if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxCurrenciesSupported) {
70
+ if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && isTxCurrenciesSupported) {
70
71
  result.supportTransfer = true;
71
72
  result.supportTransferAll = false;
72
- } else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxTokensSupported) {
73
+ } else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && isTxTokensSupported) {
73
74
  result.supportTransfer = true;
74
75
  result.supportTransferAll = true;
75
- } else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxEqBalancesSupported) {
76
+ } else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && isTxEqBalancesSupported) {
76
77
  result.supportTransfer = true;
77
78
  result.supportTransferAll = false;
78
79
  } else if (_constants._TRANSFER_CHAIN_GROUP.crab.includes(networkKey) && _constants._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
79
80
  result.supportTransfer = true;
80
81
  result.supportTransferAll = true;
81
- } else if (isTxBalancesSupported && (0, _utils._isNativeToken)(tokenInfo)) {
82
+ } else if (isTxBalancesSupported && (0, _utils2._isNativeToken)(tokenInfo)) {
82
83
  result.supportTransfer = true;
83
84
  result.supportTransferAll = true;
84
- } else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && _constants._BALANCE_TOKEN_GROUP.bitcountry.includes(tokenInfo.symbol)) {
85
+ } else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && _constants._BALANCE_TOKEN_GROUP.bitcountry.includes(tokenInfo.symbol)) {
85
86
  result.supportTransfer = true;
86
87
  result.supportTransferAll = true;
87
- } else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo)) {
88
+ } else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo)) {
88
89
  result.supportTransfer = true;
89
90
  result.supportTransferAll = true;
90
91
  }
@@ -111,45 +112,45 @@ const createTransferExtrinsic = async _ref => {
111
112
  const isTxEqBalancesSupported = !!api && !!api.tx && !!api.tx.eqBalances;
112
113
  let transferAmount; // for PSP-22 tokens, might be deprecated in the future
113
114
 
114
- if ((0, _utils._isTokenWasmSmartContract)(tokenInfo) && api.query.contracts) {
115
- const contractPromise = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils._getContractAddressOfToken)(tokenInfo));
116
- const transferQuery = await contractPromise.query['psp22::transfer'](from, {
117
- gasLimit: -1
118
- }, to, value, {});
119
- const gasLimit = transferQuery.gasRequired.toString();
115
+ if ((0, _utils2._isTokenWasmSmartContract)(tokenInfo) && api.query.contracts) {
116
+ const contractPromise = (0, _wasm.getPSP22ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
117
+ // @ts-ignore
118
+ const gasLimit = await (0, _utils.getWasmContractGasLimit)(api, from, 'psp22::transfer', contractPromise, {}, [from, value, {}]);
119
+
120
+ // @ts-ignore
120
121
  transfer = contractPromise.tx['psp22::transfer']({
121
122
  gasLimit
122
123
  }, to, value, {});
123
124
  transferAmount = value;
124
- } else if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxCurrenciesSupported) {
125
+ } else if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && isTxCurrenciesSupported) {
125
126
  if (transferAll) {
126
127
  // currently Acala, Karura, Acala testnet do not have transfer all method for sub token
127
128
  } else if (value) {
128
- transfer = api.tx.currencies.transfer(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), value);
129
+ transfer = api.tx.currencies.transfer(to, (0, _utils2._getTokenOnChainInfo)(tokenInfo), value);
129
130
  }
130
- } else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxTokensSupported) {
131
+ } else if (_constants._TRANSFER_CHAIN_GROUP.kintsugi.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && isTxTokensSupported) {
131
132
  if (transferAll) {
132
- transfer = api.tx.tokens.transferAll(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), false);
133
+ transfer = api.tx.tokens.transferAll(to, (0, _utils2._getTokenOnChainInfo)(tokenInfo), false);
133
134
  } else if (value) {
134
- transfer = api.tx.tokens.transfer(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), new _util.BN(value));
135
+ transfer = api.tx.tokens.transfer(to, (0, _utils2._getTokenOnChainInfo)(tokenInfo), new _util.BN(value));
135
136
  }
136
- } else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo) && isTxEqBalancesSupported) {
137
+ } else if (_constants._TRANSFER_CHAIN_GROUP.genshiro.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo) && isTxEqBalancesSupported) {
137
138
  if (transferAll) {
138
139
  // currently genshiro_testnet, genshiro, equilibrium_parachain do not have transfer all method for tokens
139
140
  } else if (value) {
140
- transfer = api.tx.eqBalances.transfer((0, _utils._getTokenOnChainAssetId)(tokenInfo), to, value);
141
+ transfer = api.tx.eqBalances.transfer((0, _utils2._getTokenOnChainAssetId)(tokenInfo), to, value);
141
142
  }
142
- } else if (!(0, _utils._isNativeToken)(tokenInfo) && (_constants._TRANSFER_CHAIN_GROUP.crab.includes(networkKey) || _constants._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol))) {
143
+ } else if (!(0, _utils2._isNativeToken)(tokenInfo) && (_constants._TRANSFER_CHAIN_GROUP.crab.includes(networkKey) || _constants._BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol))) {
143
144
  if (transferAll) {
144
145
  transfer = api.tx.kton.transferAll(to, false);
145
146
  } else if (value) {
146
147
  transfer = api.tx.kton.transfer(to, new _util.BN(value));
147
148
  }
148
- } else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo)) {
149
- transfer = api.tx.currencies.transfer(to, (0, _utils._getTokenOnChainInfo)(tokenInfo), value);
150
- } else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils._isNativeToken)(tokenInfo)) {
151
- transfer = api.tx.assets.transfer((0, _utils._getTokenOnChainAssetId)(tokenInfo), to, value);
152
- } else if (isTxBalancesSupported && (0, _utils._isNativeToken)(tokenInfo)) {
149
+ } else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo)) {
150
+ transfer = api.tx.currencies.transfer(to, (0, _utils2._getTokenOnChainInfo)(tokenInfo), value);
151
+ } else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo)) {
152
+ transfer = api.tx.assets.transfer((0, _utils2._getTokenOnChainAssetId)(tokenInfo), to, value);
153
+ } else if (isTxBalancesSupported && (0, _utils2._isNativeToken)(tokenInfo)) {
153
154
  if (transferAll) {
154
155
  transfer = api.tx.balances.transferAll(to, false);
155
156
  } else if (value) {
@@ -117,8 +117,11 @@ class AcalaNftApi extends _nft.BaseNftApi {
117
117
  };
118
118
  params.updateItem(this.chain, parsedNft, address);
119
119
  params.updateCollection(this.chain, parsedCollection);
120
- // params.updateReady(true);
121
120
  }));
121
+ Object.entries(collectionNftIds).forEach(_ref => {
122
+ let [collectionId, nftIds] = _ref;
123
+ params.cleanUpNfts(this.chain, address, collectionId, nftIds);
124
+ });
122
125
  } catch (e) {
123
126
  console.error('Failed to fetch acala nft', e);
124
127
  }
@@ -114,8 +114,11 @@ class BitCountryNftApi extends _nft.BaseNftApi {
114
114
  };
115
115
  params.updateItem(this.chain, parsedNft, address);
116
116
  params.updateCollection(this.chain, parsedCollection);
117
- // params.updateReady(true);
118
117
  }));
118
+ Object.entries(collectionNftIds).forEach(_ref => {
119
+ let [collectionId, nftIds] = _ref;
120
+ params.cleanUpNfts(this.chain, address, collectionId, nftIds);
121
+ });
119
122
  } catch (e) {
120
123
  console.error('Failed to fetch bit.country nft', e);
121
124
  }
@@ -82,6 +82,7 @@ class EvmNftApi extends _nft.BaseNftApi {
82
82
  const contract = new this.evmApi.api.eth.Contract(_helper._ERC721_ABI, smartContract);
83
83
  let ownItem = false;
84
84
  let collectionImage;
85
+ const nftOwnerMap = {};
85
86
  await Promise.all(this.addresses.map(async address => {
86
87
  if (!(0, _utilCrypto.isEthereumAddress)(address)) {
87
88
  return;
@@ -132,8 +133,9 @@ class EvmNftApi extends _nft.BaseNftApi {
132
133
  }
133
134
  }
134
135
  }));
136
+ nftOwnerMap[address] = nftIds;
135
137
  } catch (e) {
136
- console.error('evm nft error', e);
138
+ console.error('EVM NFT error', e);
137
139
  }
138
140
  }));
139
141
  if (ownItem) {
@@ -145,10 +147,12 @@ class EvmNftApi extends _nft.BaseNftApi {
145
147
  originAsset: tokenInfo.slug
146
148
  };
147
149
  nftParams.updateCollection(this.chain, nftCollection);
148
- // nftParams.updateReady(true);
150
+ Object.entries(nftOwnerMap).forEach(_ref => {
151
+ let [owner, nftIds] = _ref;
152
+ nftParams.cleanUpNfts(this.chain, owner, smartContract, nftIds);
153
+ });
149
154
  }
150
155
  }
151
-
152
156
  async handleNfts(params) {
153
157
  if (!this.evmContracts || this.evmContracts.length === 0) {
154
158
  return;