@subwallet/extension-base 1.3.45-1 → 1.3.47-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/background/KoniTypes.d.ts +5 -0
  2. package/background/KoniTypes.js +5 -0
  3. package/background/types.d.ts +2 -0
  4. package/cjs/background/KoniTypes.js +7 -1
  5. package/cjs/core/logic-validation/request.js +55 -28
  6. package/cjs/core/utils.js +22 -0
  7. package/cjs/koni/api/nft/ordinal_nft/index.js +3 -2
  8. package/cjs/koni/background/handlers/Extension.js +84 -61
  9. package/cjs/koni/background/handlers/State.js +3 -0
  10. package/cjs/koni/background/handlers/Tabs.js +11 -3
  11. package/cjs/packageInfo.js +1 -1
  12. package/cjs/page/evm/index.js +64 -105
  13. package/cjs/page/index.js +5 -3
  14. package/cjs/page/substrate/Accounts.js +2 -1
  15. package/cjs/services/balance-service/helpers/subscribe/index.js +3 -76
  16. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
  17. package/cjs/services/buy-service/index.js +2 -0
  18. package/cjs/services/chain-service/index.js +3 -0
  19. package/cjs/services/chain-service/utils/index.js +34 -1
  20. package/cjs/services/chain-service/utils/patch.js +1 -1
  21. package/cjs/services/earning-service/constants/chains.js +2 -1
  22. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +32 -0
  23. package/cjs/services/earning-service/handlers/native-staking/astar.js +18 -0
  24. package/cjs/services/earning-service/handlers/native-staking/base.js +40 -29
  25. package/cjs/services/earning-service/handlers/native-staking/dtao.js +5 -0
  26. package/cjs/services/earning-service/handlers/native-staking/mythos.js +28 -0
  27. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -0
  28. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +25 -2
  29. package/cjs/services/earning-service/handlers/native-staking/tao.js +5 -0
  30. package/cjs/services/earning-service/handlers/nomination-pool/index.js +6 -3
  31. package/cjs/services/earning-service/service.js +65 -22
  32. package/cjs/services/history-service/index.js +12 -7
  33. package/cjs/services/keyring-service/context/handlers/Json.js +2 -1
  34. package/cjs/services/keyring-service/context/handlers/Ledger.js +7 -2
  35. package/cjs/services/request-service/handler/AuthRequestHandler.js +30 -6
  36. package/cjs/services/subscan-service/index.js +35 -104
  37. package/cjs/services/transaction-service/utils.js +10 -1
  38. package/cjs/strategy/api-request-strategy/index.js +1 -0
  39. package/cjs/strategy/api-request-strategy/utils/index.js +2 -2
  40. package/cjs/strategy/api-request-strategy-v2/index.js +138 -0
  41. package/cjs/strategy/api-request-strategy-v2/types.js +1 -0
  42. package/cjs/types/account/info/keyring.js +1 -0
  43. package/cjs/utils/account/analyze.js +5 -2
  44. package/cjs/utils/account/common.js +93 -2
  45. package/cjs/utils/account/transform.js +10 -0
  46. package/cjs/utils/asset.js +9 -2
  47. package/cjs/utils/gear/combine.js +4 -3
  48. package/cjs/utils/gear/vft.js +104 -135
  49. package/cjs/utils/staticData/index.js +7 -2
  50. package/core/logic-validation/request.js +31 -4
  51. package/core/types.d.ts +3 -2
  52. package/core/utils.js +24 -2
  53. package/koni/api/nft/ordinal_nft/index.js +3 -2
  54. package/koni/background/handlers/Extension.js +31 -8
  55. package/koni/background/handlers/State.js +4 -1
  56. package/koni/background/handlers/Tabs.js +11 -4
  57. package/package.json +21 -9
  58. package/packageInfo.js +1 -1
  59. package/page/evm/index.d.ts +9 -18
  60. package/page/evm/index.js +62 -101
  61. package/page/index.js +5 -3
  62. package/page/substrate/Accounts.js +2 -1
  63. package/services/balance-service/helpers/subscribe/index.d.ts +1 -11
  64. package/services/balance-service/helpers/subscribe/index.js +3 -74
  65. package/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
  66. package/services/buy-service/index.js +2 -0
  67. package/services/chain-service/index.d.ts +1 -0
  68. package/services/chain-service/index.js +3 -0
  69. package/services/chain-service/utils/index.d.ts +10 -2
  70. package/services/chain-service/utils/index.js +29 -2
  71. package/services/chain-service/utils/patch.js +1 -1
  72. package/services/earning-service/constants/chains.d.ts +1 -0
  73. package/services/earning-service/constants/chains.js +2 -1
  74. package/services/earning-service/handlers/native-staking/amplitude.d.ts +1 -0
  75. package/services/earning-service/handlers/native-staking/amplitude.js +32 -0
  76. package/services/earning-service/handlers/native-staking/astar.d.ts +1 -0
  77. package/services/earning-service/handlers/native-staking/astar.js +18 -0
  78. package/services/earning-service/handlers/native-staking/base.d.ts +2 -0
  79. package/services/earning-service/handlers/native-staking/base.js +40 -29
  80. package/services/earning-service/handlers/native-staking/dtao.d.ts +1 -0
  81. package/services/earning-service/handlers/native-staking/dtao.js +5 -0
  82. package/services/earning-service/handlers/native-staking/mythos.d.ts +1 -0
  83. package/services/earning-service/handlers/native-staking/mythos.js +28 -0
  84. package/services/earning-service/handlers/native-staking/para-chain.d.ts +1 -0
  85. package/services/earning-service/handlers/native-staking/para-chain.js +17 -0
  86. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +1 -0
  87. package/services/earning-service/handlers/native-staking/relay-chain.js +25 -2
  88. package/services/earning-service/handlers/native-staking/tao.d.ts +1 -0
  89. package/services/earning-service/handlers/native-staking/tao.js +5 -0
  90. package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -0
  91. package/services/earning-service/handlers/nomination-pool/index.js +6 -3
  92. package/services/earning-service/service.d.ts +3 -0
  93. package/services/earning-service/service.js +68 -25
  94. package/services/history-service/index.js +12 -7
  95. package/services/keyring-service/context/handlers/Json.js +2 -1
  96. package/services/keyring-service/context/handlers/Ledger.js +7 -2
  97. package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
  98. package/services/request-service/handler/AuthRequestHandler.js +30 -6
  99. package/services/request-service/types.d.ts +1 -0
  100. package/services/subscan-service/index.d.ts +13 -27
  101. package/services/subscan-service/index.js +26 -95
  102. package/services/transaction-service/utils.js +11 -2
  103. package/strategy/api-request-strategy/context/base.d.ts +2 -6
  104. package/strategy/api-request-strategy/index.js +1 -0
  105. package/strategy/api-request-strategy/types.d.ts +4 -2
  106. package/strategy/api-request-strategy/utils/index.js +2 -2
  107. package/strategy/api-request-strategy-v2/index.d.ts +22 -0
  108. package/strategy/api-request-strategy-v2/index.js +128 -0
  109. package/strategy/api-request-strategy-v2/types.d.ts +11 -0
  110. package/strategy/api-request-strategy-v2/types.js +1 -0
  111. package/types/account/action/subscribe.d.ts +3 -0
  112. package/types/account/info/keyring.d.ts +3 -0
  113. package/types/account/info/keyring.js +1 -0
  114. package/types/balance/transfer.d.ts +1 -0
  115. package/types/buy.d.ts +1 -1
  116. package/utils/account/analyze.js +5 -2
  117. package/utils/account/common.d.ts +13 -1
  118. package/utils/account/common.js +91 -2
  119. package/utils/account/transform.js +10 -0
  120. package/utils/asset.d.ts +2 -1
  121. package/utils/asset.js +7 -1
  122. package/utils/gear/combine.d.ts +2 -1
  123. package/utils/gear/combine.js +4 -4
  124. package/utils/gear/vft.d.ts +20 -9
  125. package/utils/gear/vft.js +104 -135
  126. package/utils/staticData/assetHubStaking.json +1 -0
  127. package/utils/staticData/index.d.ts +4 -1
  128. package/utils/staticData/index.js +5 -1
@@ -4,124 +4,51 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.createSubWalletEvmProvider = createSubWalletEvmProvider;
8
8
  var _safeEventEmitter = _interopRequireDefault(require("@metamask/safe-event-emitter"));
9
9
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
10
10
  // SPDX-License-Identifier: Apache-2.0
11
11
 
12
- let subscribeFlag = false;
13
- class SubWalletEvmProvider extends _safeEventEmitter.default {
14
- isSubWallet = true;
15
- isMetaMask = false;
16
- _connected = false;
17
- constructor(sendMessage, version) {
18
- super();
19
- this.version = version;
20
- this.sendMessage = sendMessage;
21
- this._connected = true;
22
- }
23
- get connected() {
24
- return this._connected;
25
- }
26
- isConnected() {
27
- return this._connected;
28
- }
29
- subscribeExtensionEvents() {
12
+ function createSubWalletEvmProvider(sendMessage, version) {
13
+ const emitter = new _safeEventEmitter.default();
14
+ let connected = true;
15
+ let subscribeFlag = false;
16
+ const provider = Object.assign(emitter, {
17
+ isSubWallet: true,
18
+ isMetaMask: false,
19
+ version
20
+ });
21
+ function subscribeExtensionEvents() {
30
22
  if (subscribeFlag) {
31
23
  return;
32
24
  }
33
- this.sendMessage('evm(events.subscribe)', null, _ref => {
25
+ sendMessage('evm(events.subscribe)', null, _ref => {
34
26
  let {
35
27
  payload,
36
28
  type
37
29
  } = _ref;
38
30
  if (['connect', 'disconnect', 'accountsChanged', 'chainChanged', 'message', 'data', 'reconnect', 'error'].includes(type)) {
39
31
  if (type === 'connect') {
40
- this._connected = true;
32
+ connected = true;
41
33
  } else if (type === 'disconnect') {
42
- this._connected = false;
34
+ connected = false;
43
35
  }
44
36
  const finalType = type === 'data' ? 'message' : type;
45
-
46
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
47
- this.emit(finalType, payload);
37
+ emitter.emit(finalType, payload);
48
38
  } else {
49
39
  console.warn('Can not handle event', type, payload);
50
40
  }
51
- }).then(done => {
41
+ }).then(() => {
52
42
  subscribeFlag = true;
53
43
  }).catch(() => {
54
44
  subscribeFlag = false;
55
45
  });
56
- subscribeFlag = true;
57
- }
58
- async enable() {
59
- return this.request({
60
- method: 'eth_requestAccounts'
61
- });
62
- }
63
- on(eventName, listener) {
64
- this.subscribeExtensionEvents();
65
- super.on(eventName, listener);
66
- return this;
67
46
  }
68
- once(eventName, listener) {
69
- this.subscribeExtensionEvents();
70
- super.once(eventName, listener);
71
- return this;
72
- }
73
- request(_ref2) {
74
- let {
75
- method,
76
- params
77
- } = _ref2;
78
- // if (!this._isEnable) {
79
- // if (method === 'eth_accounts') {
80
- // return this.request<T>({ method: 'eth_requestAccounts' });
81
- // }
82
- // }
83
-
84
- // Subscribe events
85
- switch (method) {
86
- case 'eth_requestAccounts':
87
- return new Promise((resolve, reject) => {
88
- const origin = document.title !== '' ? document.title : window.location.hostname;
89
- this.sendMessage('pub(authorize.tabV2)', {
90
- origin,
91
- accountAuthTypes: ['evm']
92
- }).then(() => {
93
- // Return account list
94
- this.request({
95
- method: 'eth_accounts'
96
- }).then(accounts => {
97
- // @ts-ignore
98
- resolve(accounts);
99
- }).catch(e => {
100
- reject(e);
101
- });
102
- }).catch(e => {
103
- reject(e);
104
- });
105
- });
106
- default:
107
- return new Promise((resolve, reject) => {
108
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
109
- this.sendMessage('evm(request)', {
110
- params,
111
- method
112
- }).then(result => {
113
- resolve(result);
114
- }).catch(e => {
115
- reject(e);
116
- });
117
- });
118
- }
119
- }
120
- _sendSync(payload) {
47
+ const _sendSync = payload => {
121
48
  let result;
122
49
  switch (payload.method) {
123
50
  case 'net_version':
124
- result = this.version ? `SubWallet v${this.version}` : null;
51
+ result = version ? `SubWallet v${version}` : null;
125
52
  break;
126
53
  default:
127
54
  throw new Error(`Not support ${payload.method}`);
@@ -131,29 +58,61 @@ class SubWalletEvmProvider extends _safeEventEmitter.default {
131
58
  jsonrpc: payload.jsonrpc,
132
59
  result
133
60
  };
134
- }
135
- send(methodOrPayload, callbackOrArgs) {
61
+ };
62
+ provider.isConnected = () => connected;
63
+ provider.request = arg => {
64
+ if (arg.method === 'eth_requestAccounts') {
65
+ const origin = document.title || window.location.hostname;
66
+ return sendMessage('pub(authorize.tabV2)', {
67
+ origin,
68
+ accountAuthTypes: ['evm']
69
+ }).then(() => provider.request({
70
+ method: 'eth_accounts'
71
+ }));
72
+ }
73
+ return sendMessage('evm(request)', arg);
74
+ };
75
+ provider.send = (methodOrPayload, callbackOrArgs) => {
136
76
  if (typeof methodOrPayload === 'string' && (!callbackOrArgs || Array.isArray(callbackOrArgs))) {
137
- return this.request({
77
+ return provider.request({
138
78
  method: methodOrPayload,
139
79
  params: callbackOrArgs
140
80
  });
141
- } else if (methodOrPayload && typeof methodOrPayload === 'object' && typeof callbackOrArgs === 'function') {
142
- return this.request(methodOrPayload).then(rs => {
143
- callbackOrArgs(rs);
81
+ } else if (typeof methodOrPayload === 'object' && typeof callbackOrArgs === 'function') {
82
+ return provider.request(methodOrPayload).then(result => {
83
+ callbackOrArgs(null, result);
144
84
  });
145
85
  }
146
- return this._sendSync(methodOrPayload);
147
- }
148
- sendAsync(payload, callback) {
149
- this.request(payload).then(result => {
150
- // @ts-ignore
86
+ return _sendSync(methodOrPayload);
87
+ };
88
+ provider.enable = async () => {
89
+ const accounts = await provider.request({
90
+ method: 'eth_requestAccounts'
91
+ });
92
+ connected = accounts.length > 0;
93
+ return accounts;
94
+ };
95
+ provider.sendAsync = (payload, callback) => {
96
+ provider.request(payload).then(result => {
151
97
  callback(null, {
98
+ id: payload.id,
99
+ jsonrpc: payload.jsonrpc,
100
+ // @ts-ignore
152
101
  result
153
102
  });
154
103
  }).catch(e => {
155
104
  callback(e);
156
105
  });
157
- }
158
- }
159
- exports.default = SubWalletEvmProvider;
106
+ };
107
+ provider.on = (eventName, listener) => {
108
+ subscribeExtensionEvents();
109
+ _safeEventEmitter.default.prototype.on.call(emitter, eventName, listener);
110
+ return provider;
111
+ };
112
+ provider.once = (eventName, listener) => {
113
+ subscribeExtensionEvents();
114
+ _safeEventEmitter.default.prototype.once.call(emitter, eventName, listener);
115
+ return provider;
116
+ };
117
+ return provider;
118
+ }
package/cjs/page/index.js CHANGED
@@ -14,7 +14,7 @@ var _ProviderError = require("@subwallet/extension-base/background/errors/Provid
14
14
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
15
15
  var _bitcoin = _interopRequireDefault(require("@subwallet/extension-base/page/bitcoin"));
16
16
  var _cardano = _interopRequireDefault(require("@subwallet/extension-base/page/cardano"));
17
- var _evm = _interopRequireDefault(require("@subwallet/extension-base/page/evm"));
17
+ var _evm = require("@subwallet/extension-base/page/evm");
18
18
  var _substrate = _interopRequireDefault(require("@subwallet/extension-base/page/substrate"));
19
19
  var _defaults = require("../defaults");
20
20
  var _getId = require("../utils/getId");
@@ -48,9 +48,11 @@ function sendMessage(message, request, subscriber) {
48
48
 
49
49
  async function enable(origin, opt) {
50
50
  const accountAuthTypes = (opt === null || opt === void 0 ? void 0 : opt.accountAuthType) === 'both' ? ['substrate', 'evm'] : [(opt === null || opt === void 0 ? void 0 : opt.accountAuthType) || 'substrate'];
51
+ const canConnectSubstrateEcdsa = accountAuthTypes.includes('evm');
51
52
  await sendMessage('pub(authorize.tabV2)', {
52
53
  origin,
53
- accountAuthTypes
54
+ accountAuthTypes,
55
+ canConnectSubstrateEcdsa
54
56
  });
55
57
  return new _substrate.default(sendMessage);
56
58
  }
@@ -74,7 +76,7 @@ function handleResponse(data) {
74
76
  }
75
77
  }
76
78
  function initEvmProvider(version) {
77
- return new _evm.default(sendMessage, version);
79
+ return (0, _evm.createSubWalletEvmProvider)(sendMessage, version);
78
80
  }
79
81
  function initCardanoProvider() {
80
82
  return new _cardano.default(sendMessage);
@@ -15,7 +15,8 @@ class Accounts {
15
15
  }
16
16
  get(anyType) {
17
17
  return sendRequest('pub(accounts.listV2)', {
18
- anyType
18
+ anyType,
19
+ isSubstrateConnector: true
19
20
  });
20
21
  }
21
22
  subscribe(cb) {
@@ -1,94 +1,21 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.getAccountJsonByAddress = void 0;
8
6
  exports.subscribeBalance = subscribeBalance;
9
7
  var _types = require("@subwallet/chain-list/types");
10
8
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
11
- var _bitcoin2 = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin");
9
+ var _bitcoin = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin");
12
10
  var _cardano = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano");
13
11
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
14
12
  var _utils2 = require("@subwallet/extension-base/utils");
15
- var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
16
13
  var _ton = require("./ton/ton");
17
14
  var _evm = require("./evm");
18
15
  var _substrate = require("./substrate");
19
16
  // Copyright 2019-2022 @subwallet/extension-base
20
17
  // SPDX-License-Identifier: Apache-2.0
21
18
 
22
- /**
23
- * @function getAccountJsonByAddress
24
- * @desc Get account info by address
25
- * <p>
26
- * Note: Use on the background only
27
- * </p>
28
- * @param {string} address - Address
29
- * @returns {AccountJson|null} - Account info or null if not found
30
- */
31
- const getAccountJsonByAddress = address => {
32
- try {
33
- const pair = _uiKeyring.default.getPair(address);
34
- if (pair) {
35
- return (0, _utils2.pairToAccount)(pair);
36
- } else {
37
- return null;
38
- }
39
- } catch (e) {
40
- console.warn(e);
41
- return null;
42
- }
43
- };
44
-
45
- /** Filter addresses to subscribe by chain info */
46
- exports.getAccountJsonByAddress = getAccountJsonByAddress;
47
- const filterAddress = (addresses, chainInfo) => {
48
- const {
49
- _bitcoin,
50
- bitcoin,
51
- cardano,
52
- evm,
53
- substrate,
54
- ton
55
- } = (0, _utils2.getAddressesByChainTypeMap)(addresses, chainInfo);
56
- if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
57
- return [evm, [bitcoin, substrate, ton, cardano, _bitcoin].flat()];
58
- } else if ((0, _utils._isChainBitcoinCompatible)(chainInfo)) {
59
- return [bitcoin, [evm, substrate, ton, cardano, _bitcoin].flat()];
60
- } else if ((0, _utils._isChainTonCompatible)(chainInfo)) {
61
- return [ton, [bitcoin, evm, substrate, cardano, _bitcoin].flat()];
62
- } else if ((0, _utils._isChainCardanoCompatible)(chainInfo)) {
63
- return [cardano, [bitcoin, evm, substrate, ton, _bitcoin].flat()];
64
- } else {
65
- const fetchList = [];
66
- const unfetchList = [];
67
- substrate.forEach(address => {
68
- const account = getAccountJsonByAddress(address);
69
- if (account) {
70
- if (account.isHardware) {
71
- if (account.isGeneric) {
72
- fetchList.push(address);
73
- } else {
74
- const availGen = account.availableGenesisHashes || [];
75
- const gen = (0, _utils._getSubstrateGenesisHash)(chainInfo);
76
- if (availGen.includes(gen)) {
77
- fetchList.push(address);
78
- } else {
79
- unfetchList.push(address);
80
- }
81
- }
82
- } else {
83
- fetchList.push(address);
84
- }
85
- } else {
86
- fetchList.push(address);
87
- }
88
- });
89
- return [fetchList, [unfetchList, bitcoin, evm, ton, cardano, _bitcoin].flat()];
90
- }
91
- };
92
19
  const handleUnsupportedOrPendingAddresses = (addresses, chainSlug, chainAssetMap, state, callback) => {
93
20
  const tokens = (0, _utils2.filterAssetsByChainAndType)(chainAssetMap, chainSlug, [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.PSP22, _types._AssetType.LOCAL, _types._AssetType.GRC20, _types._AssetType.VFT, _types._AssetType.TEP74, _types._AssetType.CIP26]);
94
21
  const now = new Date().getTime();
@@ -120,7 +47,7 @@ function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoM
120
47
  // Looping over each chain
121
48
  const unsubList = Object.values(chainInfoMap).map(async chainInfo => {
122
49
  const chainSlug = chainInfo.slug;
123
- const [useAddresses, notSupportAddresses] = filterAddress(addresses, chainInfo);
50
+ const [useAddresses, notSupportAddresses] = (0, _utils2.filterAddressByChainInfo)(addresses, chainInfo);
124
51
  if (notSupportAddresses.length) {
125
52
  handleUnsupportedOrPendingAddresses(notSupportAddresses, chainSlug, chainAssetMap, _KoniTypes.APIItemState.NOT_SUPPORT, callback);
126
53
  }
@@ -156,7 +83,7 @@ function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoM
156
83
  }
157
84
  const bitcoinApi = bitcoinApiMap[chainSlug];
158
85
  if ((0, _utils._isPureBitcoinChain)(chainInfo)) {
159
- return (0, _bitcoin2.subscribeBitcoinBalance)({
86
+ return (0, _bitcoin.subscribeBitcoinBalance)({
160
87
  addresses: useAddresses,
161
88
  assetMap: chainAssetMap,
162
89
  bitcoinApi,
@@ -338,17 +338,15 @@ const subscribeTokensAccountsPallet = async _ref6 => {
338
338
  const tokensAccountsKey = 'query_tokens_accounts';
339
339
  const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
340
340
  const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, tokenTypes);
341
-
342
- // Hotfix balance for gdot
343
- const getGdotBalance = async () => {
344
- const gdotBalances = await queryGdotBalance(substrateApi, addresses, assetMap[gdotSlug], extrinsicType);
345
- callback(gdotBalances);
346
- };
347
341
  const unsubList = await Promise.all(Object.values(tokenMap).map(tokenInfo => {
348
- // Hotfix balance for gdot
349
- if (tokenInfo.slug === gdotSlug) {
342
+ var _tokenInfo$metadata;
343
+ if ((_tokenInfo$metadata = tokenInfo.metadata) !== null && _tokenInfo$metadata !== void 0 && _tokenInfo$metadata.isGigaToken) {
350
344
  return (0, _rxjs.timer)(0, _constants.CRON_REFRESH_PRICE_INTERVAL).subscribe(() => {
351
- getGdotBalance().catch(console.error);
345
+ const getGigaTokenBalance = async () => {
346
+ const gigaTokenBalances = await queryGigaTokenBalance(substrateApi, addresses, assetMap[tokenInfo.slug], extrinsicType);
347
+ callback(gigaTokenBalances);
348
+ };
349
+ getGigaTokenBalance().catch(console.error);
352
350
  });
353
351
  }
354
352
  try {
@@ -561,11 +559,7 @@ const subscribeSubnetAlphaPallet = async _ref9 => {
561
559
  clearInterval(interval);
562
560
  };
563
561
  };
564
-
565
- // Hot fix for gdot balance
566
-
567
- const gdotSlug = 'hydradx_main-LOCAL-GDOT';
568
- async function queryGdotBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
562
+ async function queryGigaTokenBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
569
563
  return await Promise.all(addresses.map(async address => {
570
564
  const _balanceInfo = await substrateApi.api.call.currenciesApi.account((0, _utils2._getTokenOnChainAssetId)(tokenInfo), address);
571
565
  const balanceInfo = _balanceInfo.toPrimitive();
@@ -21,6 +21,8 @@ const convertSupportType = support => {
21
21
  return _types.AccountChainType.CARDANO;
22
22
  case 'TON':
23
23
  return _types.AccountChainType.TON;
24
+ case 'BITCOIN':
25
+ return _types.AccountChainType.BITCOIN;
24
26
  default:
25
27
  return null;
26
28
  }
@@ -1043,6 +1043,9 @@ class ChainService {
1043
1043
  async fetchLatestSufficientChains() {
1044
1044
  return (await (0, _utils2.fetchStaticData)('chains/supported-sufficient-chains')) || [];
1045
1045
  }
1046
+ async fetchAhMapChain() {
1047
+ return await (0, _utils2.fetchStaticData)('asset-hub-staking-map');
1048
+ }
1046
1049
  async initChains() {
1047
1050
  const storedChainSettings = await this.dbService.getAllChainStore();
1048
1051
  const defaultChainInfoMap = filterChainInfoMap(_chainList.ChainInfoMap, ignoredList);
@@ -28,6 +28,8 @@ var _exportNames = {
28
28
  _isBridgedToken: true,
29
29
  _getTokenMinAmount: true,
30
30
  _isChainEvmCompatible: true,
31
+ _isChainCompatibleLedgerEvm: true,
32
+ _isSubstrateEvmCompatibleChain: true,
31
33
  _isChainBitcoinCompatible: true,
32
34
  _isChainTonCompatible: true,
33
35
  _isChainCardanoCompatible: true,
@@ -56,6 +58,7 @@ var _exportNames = {
56
58
  _getTokenTypesSupportedByChain: true,
57
59
  _getChainNativeTokenBasicInfo: true,
58
60
  _getChainNativeTokenSlug: true,
61
+ _getChainSubstrateTokenSymbol: true,
59
62
  _isLocalToken: true,
60
63
  _isTokenEvmSmartContract: true,
61
64
  _isTokenTonSmartContract: true,
@@ -120,6 +123,7 @@ exports._getChainName = _getChainName;
120
123
  exports._getChainNativeTokenBasicInfo = _getChainNativeTokenBasicInfo;
121
124
  exports._getChainNativeTokenSlug = _getChainNativeTokenSlug;
122
125
  exports._getChainSubstrateAddressPrefix = _getChainSubstrateAddressPrefix;
126
+ exports._getChainSubstrateTokenSymbol = _getChainSubstrateTokenSymbol;
123
127
  exports._getContractAddressOfToken = _getContractAddressOfToken;
124
128
  exports._getCrowdloanUrlFromChain = _getCrowdloanUrlFromChain;
125
129
  exports._getCustomAssets = _getCustomAssets;
@@ -152,6 +156,7 @@ exports._isBridgedToken = _isBridgedToken;
152
156
  exports._isCIP26Token = _isCIP26Token;
153
157
  exports._isChainBitcoinCompatible = _isChainBitcoinCompatible;
154
158
  exports._isChainCardanoCompatible = _isChainCardanoCompatible;
159
+ exports._isChainCompatibleLedgerEvm = _isChainCompatibleLedgerEvm;
155
160
  exports._isChainEnabled = _isChainEnabled;
156
161
  exports._isChainEvmCompatible = _isChainEvmCompatible;
157
162
  exports._isChainInfoCompatibleWithAccountInfo = void 0;
@@ -184,6 +189,7 @@ exports._isPureSubstrateChain = _isPureSubstrateChain;
184
189
  exports._isPureTonChain = _isPureTonChain;
185
190
  exports._isRelayChain = _isRelayChain;
186
191
  exports._isSmartContractToken = _isSmartContractToken;
192
+ exports._isSubstrateEvmCompatibleChain = _isSubstrateEvmCompatibleChain;
187
193
  exports._isSubstrateParaChain = _isSubstrateParaChain;
188
194
  exports._isSubstrateRelayChain = _isSubstrateRelayChain;
189
195
  exports._isSupportOrdinal = void 0;
@@ -358,6 +364,12 @@ function _getTokenMinAmount(tokenInfo) {
358
364
  function _isChainEvmCompatible(chainInfo) {
359
365
  return !!chainInfo.evmInfo;
360
366
  }
367
+ function _isChainCompatibleLedgerEvm(chainInfo) {
368
+ return !!chainInfo.evmInfo && chainInfo.evmInfo.evmChainId > 0;
369
+ }
370
+ function _isSubstrateEvmCompatibleChain(chainInfo) {
371
+ return !!chainInfo.evmInfo && !!chainInfo.substrateInfo;
372
+ }
361
373
  function _isChainBitcoinCompatible(chainInfo) {
362
374
  return !!chainInfo.bitcoinInfo;
363
375
  }
@@ -529,6 +541,13 @@ function _getChainNativeTokenSlug(chainInfo) {
529
541
  }
530
542
  return `${chainInfo.slug}-${_types._AssetType.NATIVE}-${_getChainNativeTokenBasicInfo(chainInfo).symbol}`;
531
543
  }
544
+ function _getChainSubstrateTokenSymbol(chainInfo) {
545
+ if (chainInfo.substrateInfo) {
546
+ return chainInfo.substrateInfo.symbol || '';
547
+ } else {
548
+ return '';
549
+ }
550
+ }
532
551
  function _isLocalToken(tokenInfo) {
533
552
  return tokenInfo.assetType === _types._AssetType.LOCAL;
534
553
  }
@@ -636,6 +655,9 @@ function _getBlockExplorerFromChain(chainInfo) {
636
655
  } else if (_isPureBitcoinChain(chainInfo)) {
637
656
  var _chainInfo$bitcoinInf;
638
657
  blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$bitcoinInf = chainInfo.bitcoinInfo) === null || _chainInfo$bitcoinInf === void 0 ? void 0 : _chainInfo$bitcoinInf.blockExplorer;
658
+ } else if (_isPureTonChain(chainInfo)) {
659
+ var _chainInfo$tonInfo;
660
+ blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$tonInfo = chainInfo.tonInfo) === null || _chainInfo$tonInfo === void 0 ? void 0 : _chainInfo$tonInfo.blockExplorer;
639
661
  } else {
640
662
  var _chainInfo$substrateI18;
641
663
  blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI18 = chainInfo.substrateInfo) === null || _chainInfo$substrateI18 === void 0 ? void 0 : _chainInfo$substrateI18.blockExplorer;
@@ -816,11 +838,22 @@ const _chainInfoToChainType = chainInfo => {
816
838
  return _types3.AccountChainType.SUBSTRATE;
817
839
  };
818
840
  exports._chainInfoToChainType = _chainInfoToChainType;
819
- const _isChainInfoCompatibleWithAccountInfo = (chainInfo, accountChainType, accountType) => {
841
+ const _isChainInfoCompatibleWithAccountInfo = (chainInfo, accountInfo) => {
842
+ const {
843
+ chainType: accountChainType,
844
+ signMode: accountSignMode,
845
+ type: accountType
846
+ } = accountInfo;
820
847
  if (accountChainType === _types3.AccountChainType.SUBSTRATE) {
821
848
  return _isPureSubstrateChain(chainInfo) && _types4.SubstrateKeypairTypes.includes(accountType);
822
849
  }
823
850
  if (accountChainType === _types3.AccountChainType.ETHEREUM) {
851
+ if (accountSignMode === _types3.AccountSignMode.ECDSA_SUBSTRATE_LEDGER) {
852
+ return _isSubstrateEvmCompatibleChain(chainInfo) && _types4.EthereumKeypairTypes.includes(accountType);
853
+ }
854
+ if (accountSignMode === _types3.AccountSignMode.GENERIC_LEDGER) {
855
+ return _isChainCompatibleLedgerEvm(chainInfo) && _types4.EthereumKeypairTypes.includes(accountType);
856
+ }
824
857
  return _isChainEvmCompatible(chainInfo) && _types4.EthereumKeypairTypes.includes(accountType);
825
858
  }
826
859
  if (accountChainType === _types3.AccountChainType.TON) {
@@ -11,7 +11,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
11
11
  const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
12
12
  const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
13
13
  const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
14
- const ChainListVersion = '0.2.107'; // update this when build chainlist
14
+ const ChainListVersion = '0.2.109'; // update this when build chainlist
15
15
 
16
16
  // todo: move this interface to chainlist
17
17
 
@@ -8,7 +8,8 @@ exports._STAKING_CHAIN_GROUP = exports.TON_CHAINS = exports.ST_LIQUID_TOKEN_ABI
8
8
  // SPDX-License-Identifier: Apache-2.0
9
9
 
10
10
  const _STAKING_CHAIN_GROUP = {
11
- relay: ['polkadot', 'kusama', 'aleph', 'polkadex', 'ternoa', 'alephTest', 'polkadexTest', 'westend', 'kate', 'edgeware', 'creditcoin', 'vara_network', 'goldberg_testnet', 'availTuringTest', 'avail_mainnet', 'vara_testnet', 'dentnet', 'cere'],
11
+ relay: ['polkadot', 'kusama', 'aleph', 'polkadex', 'ternoa', 'alephTest', 'polkadexTest', 'westend', 'kate', 'edgeware', 'creditcoin', 'vara_network', 'goldberg_testnet', 'availTuringTest', 'avail_mainnet', 'vara_testnet', 'dentnet', 'cere', 'statemine', 'statemint', 'westend_assethub'],
12
+ assetHub: ['statemine', 'statemint', 'westend_assethub'],
12
13
  para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network', 'polimec'],
13
14
  astar: ['astar', 'shiden', 'shibuya'],
14
15
  amplitude: ['amplitude', 'amplitude_test', 'kilt', 'kilt_peregrine', 'pendulum', 'krest_network'],
@@ -178,6 +178,38 @@ class AmplitudeNativeStakingPoolHandler extends _basePara.default {
178
178
  unstakings: unstakingList
179
179
  };
180
180
  }
181
+ async checkAccountHaveStake(useAddresses) {
182
+ var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6;
183
+ const result = [];
184
+ const substrateApi = await this.substrateApi.isReady;
185
+ const ledgers = await ((_substrateApi$api$que = substrateApi.api.query.parachainStaking) === null || _substrateApi$api$que === void 0 ? void 0 : (_substrateApi$api$que2 = _substrateApi$api$que.delegatorState) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.multi) === null || _substrateApi$api$que3 === void 0 ? void 0 : _substrateApi$api$que3.call(_substrateApi$api$que2, useAddresses));
186
+ const _unstakingStates = await ((_substrateApi$api$que4 = substrateApi.api.query.parachainStaking) === null || _substrateApi$api$que4 === void 0 ? void 0 : (_substrateApi$api$que5 = _substrateApi$api$que4.unstaking) === null || _substrateApi$api$que5 === void 0 ? void 0 : (_substrateApi$api$que6 = _substrateApi$api$que5.multi) === null || _substrateApi$api$que6 === void 0 ? void 0 : _substrateApi$api$que6.call(_substrateApi$api$que5, useAddresses));
187
+ if (!ledgers || !_unstakingStates) {
188
+ return [];
189
+ }
190
+ for (let i = 0; i < useAddresses.length; i++) {
191
+ const owner = useAddresses[i];
192
+ const _delegatorState = ledgers[i];
193
+ let delegatorState = [];
194
+ const unstakingInfo = _unstakingStates[i].toPrimitive();
195
+ if (_constants2._STAKING_CHAIN_GROUP.krest_network.includes(this.chain)) {
196
+ const krestDelegatorState = _delegatorState.toPrimitive();
197
+ const delegates = krestDelegatorState === null || krestDelegatorState === void 0 ? void 0 : krestDelegatorState.delegations;
198
+ if (delegates) {
199
+ delegatorState = delegatorState.concat(delegates);
200
+ }
201
+ } else {
202
+ const delegate = _delegatorState.toPrimitive();
203
+ if (delegate) {
204
+ delegatorState.push(delegate);
205
+ }
206
+ }
207
+ if (delegatorState.length || unstakingInfo && Object.keys(unstakingInfo).length) {
208
+ result.push(owner);
209
+ }
210
+ }
211
+ return Promise.resolve(result);
212
+ }
181
213
  async subscribePoolPosition(useAddresses, resultCallback) {
182
214
  let cancel = false;
183
215
  const substrateApi = await this.substrateApi.isReady;
@@ -294,6 +294,24 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
294
294
  unsub && unsub();
295
295
  };
296
296
  }
297
+ async checkAccountHaveStake(useAddresses) {
298
+ var _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4;
299
+ const result = [];
300
+ const substrateApi = await this.substrateApi.isReady;
301
+ const ledgers = await ((_substrateApi$api$que2 = substrateApi.api.query.dappsStaking) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.ledger) === null || _substrateApi$api$que3 === void 0 ? void 0 : (_substrateApi$api$que4 = _substrateApi$api$que3.multi) === null || _substrateApi$api$que4 === void 0 ? void 0 : _substrateApi$api$que4.call(_substrateApi$api$que3, useAddresses));
302
+ if (!ledgers) {
303
+ return [];
304
+ }
305
+ for (let i = 0; i < useAddresses.length; i++) {
306
+ const owner = useAddresses[i];
307
+ const _ledger = ledgers[i];
308
+ const ledger = _ledger.toPrimitive();
309
+ if (ledger && ledger.locked > 0) {
310
+ result.push(owner);
311
+ }
312
+ }
313
+ return result;
314
+ }
297
315
 
298
316
  /* Subscribe pool position */
299
317