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

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