@subwallet/extension-base 1.3.69-0 → 1.3.71-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 (208) hide show
  1. package/background/KoniTypes.d.ts +11 -0
  2. package/background/KoniTypes.js +68 -8
  3. package/cjs/background/KoniTypes.js +68 -8
  4. package/cjs/constants/blocked-actions.js +3 -0
  5. package/cjs/core/logic-validation/swap.js +0 -3
  6. package/cjs/core/substrate/system-pallet.js +0 -2
  7. package/cjs/koni/api/nft/wasm_nft/index.js +0 -1
  8. package/cjs/koni/api/staking/bonding/astar.js +0 -2
  9. package/cjs/koni/api/staking/bonding/paraChain.js +0 -3
  10. package/cjs/koni/api/staking/bonding/relayChain.js +2 -4
  11. package/cjs/koni/api/staking/bonding/utils.js +0 -4
  12. package/cjs/koni/background/cron.js +0 -1
  13. package/cjs/koni/background/handlers/Extension.js +216 -158
  14. package/cjs/koni/background/handlers/State.js +59 -54
  15. package/cjs/koni/background/handlers/Tabs.js +39 -34
  16. package/cjs/packageInfo.js +1 -1
  17. package/cjs/page/index.js +7 -0
  18. package/cjs/page/substrate/PostMessageProvider.js +3 -0
  19. package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +0 -1
  20. package/cjs/services/balance-service/helpers/subscribe/substrate/gear.js +0 -2
  21. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +2 -3
  22. package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +0 -3
  23. package/cjs/services/balance-service/index.js +103 -7
  24. package/cjs/services/balance-service/transfer/bitcoin-transfer.js +0 -1
  25. package/cjs/services/balance-service/transfer/cardano-transfer.js +1 -2
  26. package/cjs/services/balance-service/transfer/smart-contract.js +0 -1
  27. package/cjs/services/balance-service/transfer/token.js +0 -2
  28. package/cjs/services/balance-service/transfer/ton-transfer.js +0 -1
  29. package/cjs/services/balance-service/transfer/xcm/snowBridge.js +0 -1
  30. package/cjs/services/chain-service/constants.js +15 -4
  31. package/cjs/services/chain-service/handler/CardanoApi.js +3 -1
  32. package/cjs/services/chain-service/handler/SubstrateApi.js +0 -2
  33. package/cjs/services/chain-service/handler/light-client/index.js +1 -2
  34. package/cjs/services/chain-service/health-check/index.js +0 -1
  35. package/cjs/services/chain-service/health-check/utils/new-utils/chain-asset-validate.js +0 -1
  36. package/cjs/services/chain-service/index.js +18 -26
  37. package/cjs/services/chain-service/utils/index.js +34 -30
  38. package/cjs/services/earning-service/handlers/base.js +32 -0
  39. package/cjs/services/earning-service/handlers/lending/base.js +0 -2
  40. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -1
  41. package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -2
  42. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -2
  43. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -1
  44. package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -2
  45. package/cjs/services/earning-service/handlers/native-staking/dtao.js +43 -2
  46. package/cjs/services/earning-service/handlers/native-staking/energy.js +0 -1
  47. package/cjs/services/earning-service/handlers/native-staking/mythos.js +0 -2
  48. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -2
  49. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +8 -9
  50. package/cjs/services/earning-service/handlers/special.js +7 -0
  51. package/cjs/services/event-service/index.js +1 -0
  52. package/cjs/services/history-service/subsquid-multi-chain-history.js +0 -1
  53. package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
  54. package/cjs/services/keyring-service/context/handlers/Migration.js +11 -9
  55. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +18 -13
  56. package/cjs/services/keyring-service/context/state.js +21 -3
  57. package/cjs/services/keyring-service/utils.js +12 -2
  58. package/cjs/services/migration-service/index.js +1 -2
  59. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -1
  60. package/cjs/services/nft-service/index.js +5 -0
  61. package/cjs/services/open-gov/handler.js +561 -0
  62. package/cjs/services/open-gov/index.js +273 -0
  63. package/cjs/services/open-gov/interface.js +31 -0
  64. package/cjs/services/open-gov/utils.js +66 -0
  65. package/cjs/services/request-service/handler/BitcoinRequestHandler.js +1 -2
  66. package/cjs/services/request-service/handler/CardanoRequestHandler.js +0 -1
  67. package/cjs/services/request-service/handler/EvmRequestHandler.js +0 -1
  68. package/cjs/services/request-service/handler/TonRequestHandler.js +0 -1
  69. package/cjs/services/request-service/helper/index.js +1 -2
  70. package/cjs/services/storage-service/DatabaseService.js +19 -3
  71. package/cjs/services/storage-service/databases/index.js +5 -0
  72. package/cjs/services/storage-service/db-stores/GovLockedInfoStore.js +35 -0
  73. package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -1
  74. package/cjs/services/swap-service/handler/asset-hub/router.js +0 -1
  75. package/cjs/services/swap-service/handler/chainflip-handler.js +1 -4
  76. package/cjs/services/swap-service/handler/hydradx-handler.js +0 -1
  77. package/cjs/services/swap-service/handler/kyber-handler.js +0 -1
  78. package/cjs/services/swap-service/handler/optimex-handler.js +1 -2
  79. package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -3
  80. package/cjs/services/swap-service/handler/uniswap-handler.js +0 -3
  81. package/cjs/services/transaction-service/event-parser/index.js +6 -6
  82. package/cjs/services/transaction-service/helpers/index.js +6 -0
  83. package/cjs/services/transaction-service/index.js +71 -28
  84. package/cjs/services/wallet-connect-service/index.js +21 -18
  85. package/cjs/services/wallet-connect-service/types.js +1 -1
  86. package/cjs/types/account/info/keyring.js +9 -1
  87. package/cjs/types/balance/index.js +5 -1
  88. package/cjs/types/swap/index.js +2 -1
  89. package/cjs/types/transaction/process.js +2 -0
  90. package/cjs/types/yield/actions/join/step.js +17 -1
  91. package/cjs/utils/account/common.js +0 -26
  92. package/cjs/utils/account/derive/info/solo.js +7 -4
  93. package/cjs/utils/account/derive/validate.js +1 -1
  94. package/cjs/utils/account/transform.js +10 -5
  95. package/cjs/utils/auth.js +1 -1
  96. package/cjs/utils/bitcoin/utxo-management.js +0 -1
  97. package/cjs/utils/environment.js +2 -1
  98. package/cjs/utils/fee/transfer.js +1 -2
  99. package/cjs/utils/index.js +1 -2
  100. package/constants/blocked-actions.js +3 -0
  101. package/core/logic-validation/swap.js +0 -3
  102. package/core/substrate/system-pallet.js +0 -2
  103. package/koni/api/nft/wasm_nft/index.js +0 -1
  104. package/koni/api/staking/bonding/astar.js +0 -2
  105. package/koni/api/staking/bonding/paraChain.js +0 -3
  106. package/koni/api/staking/bonding/relayChain.js +2 -4
  107. package/koni/api/staking/bonding/utils.js +0 -4
  108. package/koni/background/cron.js +0 -1
  109. package/koni/background/handlers/Extension.d.ts +4 -0
  110. package/koni/background/handlers/Extension.js +70 -11
  111. package/koni/background/handlers/State.d.ts +2 -0
  112. package/koni/background/handlers/State.js +46 -40
  113. package/koni/background/handlers/Tabs.js +9 -3
  114. package/package.json +44 -20
  115. package/packageInfo.js +1 -1
  116. package/page/substrate/PostMessageProvider.js +3 -0
  117. package/services/balance-service/helpers/subscribe/cardano/utils.js +0 -1
  118. package/services/balance-service/helpers/subscribe/substrate/gear.js +0 -2
  119. package/services/balance-service/helpers/subscribe/substrate/index.js +0 -1
  120. package/services/balance-service/helpers/subscribe/ton/utils.js +0 -3
  121. package/services/balance-service/index.d.ts +8 -0
  122. package/services/balance-service/index.js +105 -9
  123. package/services/balance-service/transfer/bitcoin-transfer.js +0 -1
  124. package/services/balance-service/transfer/smart-contract.js +0 -1
  125. package/services/balance-service/transfer/token.js +0 -2
  126. package/services/balance-service/transfer/ton-transfer.js +0 -1
  127. package/services/balance-service/transfer/xcm/snowBridge.js +0 -1
  128. package/services/chain-service/constants.d.ts +8 -0
  129. package/services/chain-service/constants.js +12 -2
  130. package/services/chain-service/handler/CardanoApi.js +3 -1
  131. package/services/chain-service/handler/SubstrateApi.js +0 -2
  132. package/services/chain-service/health-check/index.js +0 -1
  133. package/services/chain-service/health-check/utils/new-utils/chain-asset-validate.js +0 -1
  134. package/services/chain-service/index.d.ts +0 -1
  135. package/services/chain-service/index.js +15 -23
  136. package/services/chain-service/utils/index.js +35 -31
  137. package/services/earning-service/handlers/base.js +32 -0
  138. package/services/earning-service/handlers/lending/base.js +0 -2
  139. package/services/earning-service/handlers/liquid-staking/acala.js +0 -1
  140. package/services/earning-service/handlers/liquid-staking/base.js +0 -2
  141. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -2
  142. package/services/earning-service/handlers/liquid-staking/parallel.js +0 -1
  143. package/services/earning-service/handlers/native-staking/astar.js +0 -2
  144. package/services/earning-service/handlers/native-staking/dtao.js +43 -0
  145. package/services/earning-service/handlers/native-staking/energy.js +0 -1
  146. package/services/earning-service/handlers/native-staking/mythos.js +0 -2
  147. package/services/earning-service/handlers/native-staking/para-chain.js +0 -2
  148. package/services/earning-service/handlers/native-staking/relay-chain.js +8 -9
  149. package/services/earning-service/handlers/special.js +7 -0
  150. package/services/event-service/index.d.ts +1 -0
  151. package/services/event-service/index.js +1 -0
  152. package/services/event-service/types.d.ts +1 -0
  153. package/services/history-service/subsquid-multi-chain-history.js +0 -1
  154. package/services/keyring-service/context/handlers/Derive.js +2 -2
  155. package/services/keyring-service/context/handlers/Migration.js +3 -1
  156. package/services/keyring-service/context/handlers/Mnemonic.d.ts +1 -1
  157. package/services/keyring-service/context/handlers/Mnemonic.js +16 -10
  158. package/services/keyring-service/context/state.d.ts +3 -0
  159. package/services/keyring-service/context/state.js +21 -3
  160. package/services/keyring-service/utils.d.ts +1 -0
  161. package/services/keyring-service/utils.js +9 -0
  162. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -1
  163. package/services/nft-service/index.js +6 -0
  164. package/services/open-gov/handler.d.ts +27 -0
  165. package/services/open-gov/handler.js +545 -0
  166. package/services/open-gov/index.d.ts +45 -0
  167. package/services/open-gov/index.js +265 -0
  168. package/services/open-gov/interface.d.ts +141 -0
  169. package/services/open-gov/interface.js +24 -0
  170. package/services/open-gov/utils.d.ts +14 -0
  171. package/services/open-gov/utils.js +52 -0
  172. package/services/request-service/handler/CardanoRequestHandler.js +0 -1
  173. package/services/request-service/handler/EvmRequestHandler.js +0 -1
  174. package/services/request-service/handler/TonRequestHandler.js +0 -1
  175. package/services/setting-service/constants.js +0 -1
  176. package/services/storage-service/DatabaseService.d.ts +7 -0
  177. package/services/storage-service/DatabaseService.js +19 -3
  178. package/services/storage-service/databases/index.d.ts +2 -0
  179. package/services/storage-service/databases/index.js +6 -0
  180. package/services/storage-service/db-stores/GovLockedInfoStore.d.ts +10 -0
  181. package/services/storage-service/db-stores/GovLockedInfoStore.js +27 -0
  182. package/services/swap-service/handler/asset-hub/handler.js +0 -1
  183. package/services/swap-service/handler/asset-hub/router.js +0 -1
  184. package/services/swap-service/handler/chainflip-handler.js +0 -2
  185. package/services/swap-service/handler/hydradx-handler.js +0 -1
  186. package/services/swap-service/handler/kyber-handler.js +0 -1
  187. package/services/swap-service/handler/simpleswap-handler.js +0 -1
  188. package/services/swap-service/handler/uniswap-handler.js +0 -3
  189. package/services/transaction-service/event-parser/index.js +6 -6
  190. package/services/transaction-service/helpers/index.js +6 -0
  191. package/services/transaction-service/index.js +43 -0
  192. package/services/wallet-connect-service/index.js +21 -18
  193. package/services/wallet-connect-service/types.js +1 -1
  194. package/types/account/action/add/mnemonic.d.ts +3 -2
  195. package/types/account/info/keyring.js +9 -1
  196. package/types/balance/index.js +5 -1
  197. package/types/swap/index.js +2 -1
  198. package/types/transaction/process.js +3 -1
  199. package/types/yield/actions/join/step.js +17 -1
  200. package/utils/account/common.d.ts +0 -3
  201. package/utils/account/common.js +0 -24
  202. package/utils/account/derive/info/solo.js +8 -5
  203. package/utils/account/derive/validate.d.ts +2 -2
  204. package/utils/account/derive/validate.js +1 -1
  205. package/utils/account/transform.js +10 -5
  206. package/utils/auth.js +2 -2
  207. package/utils/bitcoin/utxo-management.js +0 -1
  208. package/utils/index.js +2 -5
@@ -69,7 +69,6 @@ export default class BaseLiquidStakingPoolHandler extends BaseSpecialStakingPool
69
69
  if (!(bnRemainingStake.isZero() || bnRemainingStake.gte(minStake))) {
70
70
  errors.push(new TransactionError(StakingTxErrorType.INVALID_ACTIVE_STAKE)); // TODO
71
71
  }
72
-
73
72
  if (poolPosition.unstakings.length > maxUnstakeRequest) {
74
73
  errors.push(new TransactionError(StakingTxErrorType.EXCEED_MAX_UNSTAKING, t('bg.EARNING.services.service.earning.liquidStaking.maxUnstakeTimes', {
75
74
  replace: {
@@ -81,7 +80,6 @@ export default class BaseLiquidStakingPoolHandler extends BaseSpecialStakingPool
81
80
  if (bnRemainingStake.lt(BN_ZERO)) {
82
81
  errors.push(new TransactionError(StakingTxErrorType.INVALID_ACTIVE_STAKE)); // TODO
83
82
  }
84
-
85
83
  return Promise.resolve(errors);
86
84
  }
87
85
 
@@ -154,7 +154,6 @@ export default class BifrostLiquidStakingPoolHandler extends BaseLiquidStakingPo
154
154
 
155
155
  // const bnTotalBalance = bnActiveBalance.add(bnUnstakingBalance);
156
156
  }
157
-
158
157
  const unlockingMap = {};
159
158
 
160
159
  // TODO: review unstaking info vtokenMinting.userUnlockLedger
@@ -203,7 +202,6 @@ export default class BifrostLiquidStakingPoolHandler extends BaseLiquidStakingPo
203
202
  });
204
203
  });
205
204
  }
206
-
207
205
  const activeToTotalBalance = exchangeRate.multipliedBy(bnActiveBalance.toString());
208
206
  const totalBalance = activeToTotalBalance.plus(unlockBalance.toString());
209
207
  const result = {
@@ -132,7 +132,6 @@ export default class ParallelLiquidStakingPoolHandler extends BaseLiquidStakingP
132
132
  });
133
133
  }
134
134
  }
135
-
136
135
  const result = {
137
136
  ...this.baseInfo,
138
137
  type: this.type,
@@ -192,7 +192,6 @@ export default class AstarNativeStakingPoolHandler extends BaseParaNativeStaking
192
192
  }
193
193
  }
194
194
  }
195
-
196
195
  const unlockingChunks = ledger.unbondingInfo.unlockingChunks;
197
196
  if (unlockingChunks.length > 0) {
198
197
  for (const unlockingChunk of unlockingChunks) {
@@ -211,7 +210,6 @@ export default class AstarNativeStakingPoolHandler extends BaseParaNativeStaking
211
210
  });
212
211
  }
213
212
  }
214
-
215
213
  if (nominationList.length === 0 && unstakingList.length === 0) {
216
214
  return {
217
215
  balanceToken: this.nativeToken.slug,
@@ -8,6 +8,49 @@ import { reformatAddress } from '@subwallet/extension-base/utils';
8
8
  import BigN from 'bignumber.js';
9
9
  import { BN, BN_ZERO } from '@polkadot/util';
10
10
  import TaoNativeStakingPoolHandler, { DEFAULT_DTAO_MINBOND } from "./tao.js";
11
+
12
+ // interface ApiResponse {
13
+ // data: SubnetData[];
14
+ // }
15
+
16
+ // interface PoolData {
17
+ // netuid: number;
18
+ // name: string;
19
+ // symbol: string;
20
+ // }
21
+
22
+ // interface PoolApiResponse {
23
+ // data: PoolData[];
24
+ // }
25
+
26
+ // const SUBNET_API_URL = 'https://dash.taostats.io/api/subnet';
27
+ // const POOL_API_URL = 'https://dash.taostats.io/api/dtao/pool';
28
+
29
+ // export async function fetchSubnetData () {
30
+ // try {
31
+ // const [subnetResponse, poolResponse] = await Promise.all([
32
+ // fetch(SUBNET_API_URL).then((res) => res.json()) as Promise<ApiResponse>,
33
+ // fetch(POOL_API_URL).then((res) => res.json()) as Promise<PoolApiResponse>
34
+ // ]);
35
+
36
+ // const poolMap = new Map(poolResponse.data.map((pool) => [pool.netuid, pool]));
37
+
38
+ // const filteredSubnets = subnetResponse.data.filter((subnet) => subnet.netuid !== 0);
39
+
40
+ // const mergedData = filteredSubnets.map((subnet) => ({
41
+ // ...subnet,
42
+ // name: poolMap.get(subnet.netuid)?.name || 'Unknown',
43
+ // symbol: poolMap.get(subnet.netuid)?.symbol || 'Unknown'
44
+ // }));
45
+
46
+ // return mergedData;
47
+ // } catch (err) {
48
+ // console.error('Error:', err);
49
+
50
+ // return [];
51
+ // }
52
+ // }
53
+
11
54
  const getAlphaToTaoMapping = async substrateApi => {
12
55
  const allSubnets = (await substrateApi.api.call.subnetInfoRuntimeApi.getAllDynamicInfo()).toJSON();
13
56
  if (!allSubnets || allSubnets.length === 0) {
@@ -151,7 +151,6 @@ export default class EnergyNativeStakingPoolHandler extends BaseParaNativeStakin
151
151
  }
152
152
  }
153
153
  }
154
-
155
154
  const bnStake = new BN(nomination.amount);
156
155
  const bnUnstakeBalance = unstakingMap[nomination.owner] ? new BN(unstakingMap[nomination.owner].claimable) : BN_ZERO;
157
156
  const bnActiveStake = bnStake.sub(bnUnstakeBalance);
@@ -105,7 +105,6 @@ export default class MythosNativeStakingPoolHandler extends BaseParaStakingPoolH
105
105
  // tvl: totalStake.toString(),
106
106
  // inflation
107
107
  },
108
-
109
108
  maxPoolMembers: parseInt(maxStakers)
110
109
  };
111
110
  callback(data);
@@ -340,7 +339,6 @@ export default class MythosNativeStakingPoolHandler extends BaseParaStakingPoolH
340
339
  }
341
340
  extrinsicList.push(...[substrateApi.api.tx.collatorStaking.unstakeFrom(selectedTarget), substrateApi.api.tx.collatorStaking.unlock(null) // ignore amount to unlock all
342
341
  ]);
343
-
344
342
  return [ExtrinsicType.STAKING_UNBOND, substrateApi.api.tx.utility.batchAll(extrinsicList)];
345
343
  }
346
344
 
@@ -81,7 +81,6 @@ export default class ParaNativeStakingPoolHandler extends BaseParaNativeStakingP
81
81
  if (unvestedAllocation) {
82
82
  totalIssuance.add(unvestedAllocation); // for Turing network, read more at https://hackmd.io/@sbAqOuXkRvyiZPOB3Ryn6Q/Sypr3ZJh5
83
83
  }
84
-
85
84
  const inflationConfig = _inflation.toHuman();
86
85
  const inflation = getParaCurrentInflation(parseRawNumber(totalStake.toString()), inflationConfig);
87
86
  const eraTime = _STAKING_ERA_LENGTH_MAP[this.chain] || _STAKING_ERA_LENGTH_MAP.default; // in hours
@@ -178,7 +177,6 @@ export default class ParaNativeStakingPoolHandler extends BaseParaNativeStakingP
178
177
  }
179
178
  }
180
179
  }
181
-
182
180
  const bnStake = new BN(delegation.amount);
183
181
  const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
184
182
  const bnActiveStake = bnStake.sub(bnUnstakeBalance);
@@ -134,9 +134,9 @@ export default class RelayNativeStakingPoolHandler extends BaseNativeStakingPool
134
134
  /* Subscribe pool position */
135
135
 
136
136
  async parseNominatorMetadata(chainInfo, address, substrateApi, ledger, currentEra, minStake) {
137
- var _substrateApi$api$que7, _substrateApi$api$que8, _substrateApi$api$que9, _substrateApi$api$que10, _substrateApi$api$que11, _substrateApi$api$que12;
137
+ var _substrateApi$api$que7, _substrateApi$api$que8, _substrateApi$api$que9, _substrateApi$api$que0, _substrateApi$api$que1, _substrateApi$api$que10;
138
138
  const chain = chainInfo.slug;
139
- const [_nominations, _bonded, _activeEra] = await Promise.all([(_substrateApi$api$que7 = substrateApi.api.query) === null || _substrateApi$api$que7 === void 0 ? void 0 : (_substrateApi$api$que8 = _substrateApi$api$que7.staking) === null || _substrateApi$api$que8 === void 0 ? void 0 : _substrateApi$api$que8.nominators(address), (_substrateApi$api$que9 = substrateApi.api.query) === null || _substrateApi$api$que9 === void 0 ? void 0 : (_substrateApi$api$que10 = _substrateApi$api$que9.staking) === null || _substrateApi$api$que10 === void 0 ? void 0 : _substrateApi$api$que10.bonded(address), (_substrateApi$api$que11 = substrateApi.api.query) === null || _substrateApi$api$que11 === void 0 ? void 0 : (_substrateApi$api$que12 = _substrateApi$api$que11.staking) === null || _substrateApi$api$que12 === void 0 ? void 0 : _substrateApi$api$que12.activeEra()]);
139
+ const [_nominations, _bonded, _activeEra] = await Promise.all([(_substrateApi$api$que7 = substrateApi.api.query) === null || _substrateApi$api$que7 === void 0 ? void 0 : (_substrateApi$api$que8 = _substrateApi$api$que7.staking) === null || _substrateApi$api$que8 === void 0 ? void 0 : _substrateApi$api$que8.nominators(address), (_substrateApi$api$que9 = substrateApi.api.query) === null || _substrateApi$api$que9 === void 0 ? void 0 : (_substrateApi$api$que0 = _substrateApi$api$que9.staking) === null || _substrateApi$api$que0 === void 0 ? void 0 : _substrateApi$api$que0.bonded(address), (_substrateApi$api$que1 = substrateApi.api.query) === null || _substrateApi$api$que1 === void 0 ? void 0 : (_substrateApi$api$que10 = _substrateApi$api$que1.staking) === null || _substrateApi$api$que10 === void 0 ? void 0 : _substrateApi$api$que10.activeEra()]);
140
140
  const unlimitedNominatorRewarded = substrateApi.api.consts.staking.maxExposurePageSize !== undefined;
141
141
  const _maxNominatorRewardedPerValidator = (substrateApi.api.consts.staking.maxNominatorRewardedPerValidator || 0).toString();
142
142
  const maxNominatorRewardedPerValidator = unlimitedNominatorRewarded ? undefined : parseInt(_maxNominatorRewardedPerValidator);
@@ -236,23 +236,22 @@ export default class RelayNativeStakingPoolHandler extends BaseNativeStakingPool
236
236
  activeStake: '0' // relaychain allocates stake accordingly
237
237
  });
238
238
  }));
239
-
240
239
  return nominationList;
241
240
  }
242
241
  async subscribePoolPosition(useAddresses, resultCallback) {
243
- var _substrateApi$api$que13;
242
+ var _substrateApi$api$que11;
244
243
  let cancel = false;
245
244
  const substrateApi = await this.substrateApi.isReady;
246
245
  const defaultInfo = this.baseInfo;
247
246
  const chainInfo = this.chainInfo;
248
- const unsub = await ((_substrateApi$api$que13 = substrateApi.api.query.staking) === null || _substrateApi$api$que13 === void 0 ? void 0 : _substrateApi$api$que13.ledger.multi(useAddresses, async ledgers => {
247
+ const unsub = await ((_substrateApi$api$que11 = substrateApi.api.query.staking) === null || _substrateApi$api$que11 === void 0 ? void 0 : _substrateApi$api$que11.ledger.multi(useAddresses, async ledgers => {
249
248
  if (cancel) {
250
249
  unsub === null || unsub === void 0 ? void 0 : unsub();
251
250
  return;
252
251
  }
253
252
  if (ledgers) {
254
- var _substrateApi$api$que14, _substrateApi$api$que15, _substrateApi$api$que16, _substrateApi$api$que17, _substrateApi$api$que18, _substrateApi$api$que19, _substrateApi$api$que20, _substrateApi$api$que21, _substrateApi$api$der, _substrateApi$api$der2;
255
- const [_currentEra, _minimumActiveStake, _minNominatorBond] = await Promise.all([(_substrateApi$api$que14 = substrateApi.api.query) === null || _substrateApi$api$que14 === void 0 ? void 0 : (_substrateApi$api$que15 = _substrateApi$api$que14.staking) === null || _substrateApi$api$que15 === void 0 ? void 0 : _substrateApi$api$que15.currentEra(), ((_substrateApi$api$que16 = substrateApi.api.query) === null || _substrateApi$api$que16 === void 0 ? void 0 : (_substrateApi$api$que17 = _substrateApi$api$que16.staking) === null || _substrateApi$api$que17 === void 0 ? void 0 : _substrateApi$api$que17.minimumActiveStake) && ((_substrateApi$api$que18 = substrateApi.api.query) === null || _substrateApi$api$que18 === void 0 ? void 0 : (_substrateApi$api$que19 = _substrateApi$api$que18.staking) === null || _substrateApi$api$que19 === void 0 ? void 0 : _substrateApi$api$que19.minimumActiveStake()), (_substrateApi$api$que20 = substrateApi.api.query) === null || _substrateApi$api$que20 === void 0 ? void 0 : (_substrateApi$api$que21 = _substrateApi$api$que20.staking) === null || _substrateApi$api$que21 === void 0 ? void 0 : _substrateApi$api$que21.minNominatorBond(), (_substrateApi$api$der = substrateApi.api.derive) === null || _substrateApi$api$der === void 0 ? void 0 : (_substrateApi$api$der2 = _substrateApi$api$der.session) === null || _substrateApi$api$der2 === void 0 ? void 0 : _substrateApi$api$der2.progress()]);
253
+ var _substrateApi$api$que12, _substrateApi$api$que13, _substrateApi$api$que14, _substrateApi$api$que15, _substrateApi$api$que16, _substrateApi$api$que17, _substrateApi$api$que18, _substrateApi$api$que19, _substrateApi$api$der, _substrateApi$api$der2;
254
+ const [_currentEra, _minimumActiveStake, _minNominatorBond] = await Promise.all([(_substrateApi$api$que12 = substrateApi.api.query) === null || _substrateApi$api$que12 === void 0 ? void 0 : (_substrateApi$api$que13 = _substrateApi$api$que12.staking) === null || _substrateApi$api$que13 === void 0 ? void 0 : _substrateApi$api$que13.currentEra(), ((_substrateApi$api$que14 = substrateApi.api.query) === null || _substrateApi$api$que14 === void 0 ? void 0 : (_substrateApi$api$que15 = _substrateApi$api$que14.staking) === null || _substrateApi$api$que15 === void 0 ? void 0 : _substrateApi$api$que15.minimumActiveStake) && ((_substrateApi$api$que16 = substrateApi.api.query) === null || _substrateApi$api$que16 === void 0 ? void 0 : (_substrateApi$api$que17 = _substrateApi$api$que16.staking) === null || _substrateApi$api$que17 === void 0 ? void 0 : _substrateApi$api$que17.minimumActiveStake()), (_substrateApi$api$que18 = substrateApi.api.query) === null || _substrateApi$api$que18 === void 0 ? void 0 : (_substrateApi$api$que19 = _substrateApi$api$que18.staking) === null || _substrateApi$api$que19 === void 0 ? void 0 : _substrateApi$api$que19.minNominatorBond(), (_substrateApi$api$der = substrateApi.api.derive) === null || _substrateApi$api$der === void 0 ? void 0 : (_substrateApi$api$der2 = _substrateApi$api$der.session) === null || _substrateApi$api$der2 === void 0 ? void 0 : _substrateApi$api$der2.progress()]);
256
255
  const currentEra = _currentEra.toString();
257
256
  const minActiveStake = (_minimumActiveStake === null || _minimumActiveStake === void 0 ? void 0 : _minimumActiveStake.toString()) || '0';
258
257
  const minNominatorBond = _minNominatorBond.toString();
@@ -294,10 +293,10 @@ export default class RelayNativeStakingPoolHandler extends BaseNativeStakingPool
294
293
  };
295
294
  }
296
295
  async checkAccountHaveStake(useAddresses) {
297
- var _substrateApi$api$que22, _substrateApi$api$que23, _substrateApi$api$que24;
296
+ var _substrateApi$api$que20, _substrateApi$api$que21, _substrateApi$api$que22;
298
297
  const result = [];
299
298
  const substrateApi = await this.substrateApi.isReady;
300
- const ledgers = await ((_substrateApi$api$que22 = substrateApi.api.query.staking) === null || _substrateApi$api$que22 === void 0 ? void 0 : (_substrateApi$api$que23 = _substrateApi$api$que22.ledger) === null || _substrateApi$api$que23 === void 0 ? void 0 : (_substrateApi$api$que24 = _substrateApi$api$que23.multi) === null || _substrateApi$api$que24 === void 0 ? void 0 : _substrateApi$api$que24.call(_substrateApi$api$que23, useAddresses));
299
+ const ledgers = await ((_substrateApi$api$que20 = substrateApi.api.query.staking) === null || _substrateApi$api$que20 === void 0 ? void 0 : (_substrateApi$api$que21 = _substrateApi$api$que20.ledger) === null || _substrateApi$api$que21 === void 0 ? void 0 : (_substrateApi$api$que22 = _substrateApi$api$que21.multi) === null || _substrateApi$api$que22 === void 0 ? void 0 : _substrateApi$api$que22.call(_substrateApi$api$que21, useAddresses));
301
300
  if (ledgers) {
302
301
  for (let i = 0; i < useAddresses.length; i++) {
303
302
  const address = useAddresses[i];
@@ -274,6 +274,13 @@ export default class BaseSpecialStakingPoolHandler extends BasePoolHandler {
274
274
  * @return Fee of the submitting step
275
275
  * */
276
276
 
277
+ /**
278
+ * @async
279
+ * @function getSubmitStepFee
280
+ * @description Get submit step fee
281
+ * @return {Promise<YieldTokenBaseInfo>} Fee of the submitting step
282
+ * */
283
+
277
284
  async getSubmitStep(params) {
278
285
  const fee = await this.getSubmitStepFee(params);
279
286
  return [this.submitJoinStepInfo, fee];
@@ -21,6 +21,7 @@ export declare class EventService extends EventEmitter<EventRegistry> {
21
21
  readonly waitBuyServiceReady: Promise<boolean>;
22
22
  readonly waitEarningReady: Promise<boolean>;
23
23
  readonly waitLedgerReady: Promise<boolean>;
24
+ readonly waitOpenGovReady: Promise<boolean>;
24
25
  constructor();
25
26
  private generateWaitPromise;
26
27
  private setLazyTimeout;
@@ -33,6 +33,7 @@ export class EventService extends EventEmitter {
33
33
  this.waitBuyServiceReady = this.generateWaitPromise('buy.services.ready');
34
34
  this.waitEarningReady = this.generateWaitPromise('earning.ready');
35
35
  this.waitLedgerReady = this.generateWaitPromise('ledger.ready');
36
+ this.waitOpenGovReady = this.generateWaitPromise('open-gov.ready');
36
37
  }
37
38
  generateWaitPromise(eventType) {
38
39
  return new Promise(resolve => {
@@ -45,6 +45,7 @@ export interface EventRegistry {
45
45
  'earning.ready': [boolean];
46
46
  'swap.ready': [boolean];
47
47
  'ledger.ready': [boolean];
48
+ 'open-gov.ready': [boolean];
48
49
  }
49
50
  export declare type EventType = keyof EventRegistry;
50
51
  export declare const COMMON_RELOAD_EVENTS: EventType[];
@@ -38,7 +38,6 @@ export let SubsquidTransactionType;
38
38
  const HISTORY_SUPPORT_TYPES = [SubsquidTransactionType.BalanceTransfer, SubsquidTransactionType.EthereumExecuted, SubsquidTransactionType.StakingBonded
39
39
  // SubsquidTransactionType.CrowdloanContributed // Not support because data indexer not enough data
40
40
  ];
41
-
42
41
  function parseData(anyData) {
43
42
  try {
44
43
  return JSON.parse(anyData);
@@ -4,12 +4,12 @@
4
4
  import { ALL_ACCOUNT_KEY } from '@subwallet/extension-base/constants';
5
5
  import { CommonAccountErrorType, DeriveErrorType, SWCommonAccountError, SWDeriveError } from '@subwallet/extension-base/types';
6
6
  import { createAccountProxyId, derivePair, findSoloNextDerive, findUnifiedNextDerive, getSoloDerivationInfo, parseUnifiedSuriToDerivationPath, validateDerivationPath } from '@subwallet/extension-base/utils';
7
- import { BitcoinKeypairTypes, EthereumKeypairTypes, SubstrateKeypairTypes } from '@subwallet/keyring/types';
7
+ import { BitcoinKeypairTypes, DefaultSubstrateKeypairTypes, EthereumKeypairTypes } from '@subwallet/keyring/types';
8
8
  import { keyring } from '@subwallet/ui-keyring';
9
9
  import { t } from 'i18next';
10
10
  import { assert } from '@polkadot/util';
11
11
  import { AccountBaseHandler } from "./Base.js";
12
- const validDeriveKeypairTypes = [...SubstrateKeypairTypes, ...EthereumKeypairTypes, 'ton', 'cardano', ...BitcoinKeypairTypes];
12
+ const validDeriveKeypairTypes = [...DefaultSubstrateKeypairTypes, ...EthereumKeypairTypes, 'ton', 'cardano', ...BitcoinKeypairTypes];
13
13
 
14
14
  /**
15
15
  * @class AccountDeriveHandler
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { AccountBaseHandler } from '@subwallet/extension-base/services/keyring-service/context/handlers/Base';
5
+ import { isTWAccount } from '@subwallet/extension-base/services/keyring-service/utils';
5
6
  import { AccountChainType, SUPPORTED_ACCOUNT_CHAIN_TYPES } from '@subwallet/extension-base/types';
6
7
  import { createAccountProxyId, getDefaultKeypairTypeFromAccountChainType, getSuri } from '@subwallet/extension-base/utils';
7
8
  import { generateRandomString } from '@subwallet/extension-base/utils/getId';
@@ -26,7 +27,8 @@ export class AccountMigrationHandler extends AccountBaseHandler {
26
27
  async migrateUnifiedAndFetchEligibleSoloAccounts(request, setMigratingModeFn) {
27
28
  // Migrate unified -> unified
28
29
  const password = request.password;
29
- const allAccountProxies = Object.values(this.state.accounts);
30
+ const _allAccountProxies = Object.values(this.state.accounts);
31
+ const allAccountProxies = _allAccountProxies.filter(acc => !isTWAccount(acc)); // Prevent migrate TrustWallet solo account
30
32
  const UACanBeMigrated = this.getUACanBeMigrated(allAccountProxies);
31
33
  const UACanBeMigratedSortedByParent = this.sortUAByParent(UACanBeMigrated); // master account must be migrated before derived account
32
34
  const migratedUnifiedAccountIds = await this.migrateUnifiedToUnifiedAccount(password, UACanBeMigratedSortedByParent, setMigratingModeFn);
@@ -9,7 +9,7 @@ export declare const SEED_LENGTHS: number[];
9
9
  * */
10
10
  export declare class AccountMnemonicHandler extends AccountBaseHandler {
11
11
  mnemonicCreateV2({ length, mnemonic: _seed, type }: RequestMnemonicCreateV2): Promise<ResponseMnemonicCreateV2>;
12
- mnemonicValidateV2({ mnemonic }: RequestMnemonicValidateV2): ResponseMnemonicValidateV2;
12
+ mnemonicValidateV2(request: RequestMnemonicValidateV2): ResponseMnemonicValidateV2;
13
13
  accountsCreateSuriV2(request: RequestAccountCreateSuriV2): ResponseAccountCreateSuriV2;
14
14
  exportAccountProxyMnemonic({ password, proxyId }: RequestExportAccountProxyMnemonic): ResponseExportAccountProxyMnemonic;
15
15
  }
@@ -41,9 +41,11 @@ export class AccountMnemonicHandler extends AccountBaseHandler {
41
41
  }
42
42
 
43
43
  /* Validate seed */
44
- mnemonicValidateV2({
45
- mnemonic
46
- }) {
44
+ mnemonicValidateV2(request) {
45
+ const {
46
+ mnemonic,
47
+ mnemonicType
48
+ } = request;
47
49
  const {
48
50
  phrase
49
51
  } = keyExtractSuri(mnemonic);
@@ -60,8 +62,13 @@ export class AccountMnemonicHandler extends AccountBaseHandler {
60
62
  }));
61
63
  try {
62
64
  assert(mnemonicValidate(phrase), t('bg.ACCOUNT.services.keyring.handler.Mnemonic.invalidSeedPhraseTryAgain'));
63
- mnemonicTypes = 'general';
64
- pairTypes = ['sr25519', ...EthereumKeypairTypes, 'ton', ...CardanoKeypairTypes, ...BitcoinKeypairTypes];
65
+ if (mnemonicType === 'trust-wallet') {
66
+ mnemonicTypes = 'trust-wallet';
67
+ pairTypes = ['ed25519-tw'];
68
+ } else {
69
+ mnemonicTypes = 'general';
70
+ pairTypes = ['sr25519', ...EthereumKeypairTypes, 'ton', ...CardanoKeypairTypes, ...BitcoinKeypairTypes];
71
+ }
65
72
  } catch (e) {
66
73
  assert(tonMnemonicValidate(phrase), t('bg.ACCOUNT.services.keyring.handler.Mnemonic.invalidSeedPhraseTryAgain'));
67
74
  mnemonicTypes = 'ton';
@@ -77,10 +84,10 @@ export class AccountMnemonicHandler extends AccountBaseHandler {
77
84
  pairTypes.forEach(type => {
78
85
  rs.addressMap[type] = keyring.createFromUri(getSuri(mnemonic, type), {}, type).address;
79
86
  });
80
- const exists = this.state.checkAddressExists(Object.values(rs.addressMap));
81
- assert(!exists, t('bg.ACCOUNT.services.keyring.handler.Mnemonic.accountAlreadyExistsWithName', {
87
+ const existingAccount = this.state.checkAddressExists(Object.values(rs.addressMap));
88
+ assert(!existingAccount, t('bg.ACCOUNT.services.keyring.handler.Mnemonic.accountAlreadyExistsWithName', {
82
89
  replace: {
83
- name: (exists === null || exists === void 0 ? void 0 : exists.name) || (exists === null || exists === void 0 ? void 0 : exists.address) || ''
90
+ name: (existingAccount === null || existingAccount === void 0 ? void 0 : existingAccount.name) || (existingAccount === null || existingAccount === void 0 ? void 0 : existingAccount.address) || ''
84
91
  }
85
92
  }));
86
93
  return rs;
@@ -93,12 +100,11 @@ export class AccountMnemonicHandler extends AccountBaseHandler {
93
100
  name,
94
101
  password,
95
102
  suri: _suri,
96
- type
103
+ types
97
104
  } = request;
98
105
  const addressDict = {};
99
106
  let changedAccount = false;
100
107
  const hasMasterPassword = keyring.keyring.hasMasterPassword;
101
- const types = type ? [type] : ['sr25519', ...EthereumKeypairTypes, 'ton', ...CardanoKeypairTypes, ...BitcoinKeypairTypes];
102
108
  if (!hasMasterPassword) {
103
109
  if (!password) {
104
110
  throw Error(t('bg.ACCOUNT.services.keyring.handler.Mnemonic.eachAccountPasswordNeeded'));
@@ -1,9 +1,11 @@
1
1
  import KoniState from '@subwallet/extension-base/koni/background/handlers/State';
2
2
  import { AccountProxy, AccountProxyData, AccountProxyMap, AccountProxyStoreData, CurrentAccountInfo, ModifyPairStoreData } from '@subwallet/extension-base/types';
3
+ import { KeypairType } from '@subwallet/keyring/types';
3
4
  import { SubjectInfo } from '@subwallet/ui-keyring/observable/types';
4
5
  interface ExistsAccount {
5
6
  address: string;
6
7
  name: string;
8
+ relatedAccountTypes: KeypairType[];
7
9
  }
8
10
  export declare class AccountState {
9
11
  private readonly koniState;
@@ -70,6 +72,7 @@ export declare class AccountState {
70
72
  getAllAddresses(): string[];
71
73
  getProxyId(): string | null;
72
74
  getDecodedAddresses(accountProxy?: string, allowGetAllAccount?: boolean): string[];
75
+ getDecodedAccountTypes(accountProxyId: string): KeypairType[];
73
76
  /**
74
77
  * Account ref
75
78
  * @deprecated
@@ -279,15 +279,19 @@ export class AccountState {
279
279
  const belongsTo = this.belongUnifiedAccount(address);
280
280
  if (belongsTo) {
281
281
  const accountProxy = this.accountProxies[belongsTo];
282
+ const allAccountTypes = this.getDecodedAccountTypes(belongsTo); // get allAccountTypes of unified account of the account address
283
+
282
284
  return {
283
285
  address,
284
- name: accountProxy.name
286
+ name: accountProxy.name,
287
+ relatedAccountTypes: allAccountTypes
285
288
  };
286
289
  } else {
287
290
  var _pair$meta;
288
291
  return {
289
292
  address,
290
- name: ((_pair$meta = pair.meta) === null || _pair$meta === void 0 ? void 0 : _pair$meta.name) || address
293
+ name: ((_pair$meta = pair.meta) === null || _pair$meta === void 0 ? void 0 : _pair$meta.name) || address,
294
+ relatedAccountTypes: [pair.type]
291
295
  };
292
296
  }
293
297
  }
@@ -449,6 +453,20 @@ export class AccountState {
449
453
  return accountProxies[proxyId].accounts.map(account => account.address);
450
454
  }
451
455
  }
456
+ getDecodedAccountTypes(accountProxyId) {
457
+ if (!accountProxyId) {
458
+ return [];
459
+ }
460
+ if (accountProxyId === ALL_ACCOUNT_KEY) {
461
+ return []; // todo
462
+ }
463
+ const accountProxies = this.accounts;
464
+ if (!accountProxies[accountProxyId]) {
465
+ return [];
466
+ } else {
467
+ return accountProxies[accountProxyId].accounts.map(account => account.type);
468
+ }
469
+ }
452
470
 
453
471
  /* Get address for another service */
454
472
 
@@ -563,7 +581,7 @@ export class AccountState {
563
581
  metadata.suri = _parentSuri;
564
582
  needUpdateSet.add(address);
565
583
  }
566
- const hasSuri = ('suri' in metadata);
584
+ const hasSuri = 'suri' in metadata;
567
585
  const lacksDerivationPath = !('derivationPath' in metadata);
568
586
  const isEthereumType = EthereumKeypairTypes.includes(pair.type);
569
587
  const isTonType = pair.type === 'ton';
@@ -1,2 +1,3 @@
1
1
  import { AccountProxy } from '@subwallet/extension-base/types';
2
2
  export declare const hasAnyAccountForMigration: (allAccountProxies: AccountProxy[]) => boolean;
3
+ export declare const isTWAccount: (account: AccountProxy) => boolean;
@@ -1,6 +1,7 @@
1
1
  // Copyright 2019-2022 @subwallet/extension-base
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import { AccountProxyType } from '@subwallet/extension-base/types';
4
5
  export const hasAnyAccountForMigration = allAccountProxies => {
5
6
  for (const account of allAccountProxies) {
6
7
  if (account.isNeedMigrateUnifiedAccount) {
@@ -8,4 +9,12 @@ export const hasAnyAccountForMigration = allAccountProxies => {
8
9
  }
9
10
  }
10
11
  return false;
12
+ };
13
+
14
+ // Check if account is TrustWallet account
15
+ export const isTWAccount = account => {
16
+ const isTWDerivation = account.suri === "m/44'/354'/0'/0'/0'";
17
+ const isTWSolo = account.accountType === AccountProxyType.SOLO;
18
+ const isTWKeyPairType = account.accounts[0].type === 'ed25519-tw';
19
+ return isTWDerivation && isTWSolo && isTWKeyPairType;
11
20
  };
@@ -36,7 +36,6 @@ export default class UnlockDotCampaign {
36
36
  // } else {
37
37
  // result = await this.getMinted(address, slug);
38
38
  }
39
-
40
39
  this.#transactionNftState[transactionId] = (_result = result) !== null && _result !== void 0 ? _result : {
41
40
  nftImage: ''
42
41
  };
@@ -7,6 +7,12 @@ import { baseParseIPFSUrl } from '@subwallet/extension-base/utils';
7
7
  import { getKeypairTypeByAddress } from '@subwallet/keyring';
8
8
  import { EthereumKeypairTypes } from '@subwallet/keyring/types';
9
9
  import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
10
+
11
+ /**
12
+ * NFT detection service
13
+ * Responsible for managing NFT detection jobs per address
14
+ */
15
+
10
16
  function mapSdkToNftItem(rawInstance, chain, collectionId, owner) {
11
17
  var _rawInstance$token_ty, _rawInstance$token_ty2, _rawInstance$id;
12
18
  const metadata = rawInstance.metadata || {};
@@ -0,0 +1,27 @@
1
+ import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
2
+ import KoniState from '@subwallet/extension-base/koni/background/handlers/State';
3
+ import { TransactionData } from '@subwallet/extension-base/types';
4
+ import { _SubstrateApi } from '../chain-service/types';
5
+ import { GovVoteRequest, GovVotingInfo, RemoveVoteRequest, UnlockVoteRequest } from './interface';
6
+ export default abstract class BaseOpenGovHandler {
7
+ protected readonly state: KoniState;
8
+ readonly chain: string;
9
+ constructor(state: KoniState, chain: string);
10
+ protected get substrateApi(): _SubstrateApi;
11
+ get chainInfo(): _ChainInfo;
12
+ protected get nativeToken(): _ChainAsset;
13
+ private lockPeriod;
14
+ private refToTrackMap;
15
+ handleVote(request: GovVoteRequest): Promise<TransactionData>;
16
+ private handleStandardVote;
17
+ private handleSplitVote;
18
+ private handleSplitAbstainVote;
19
+ handleRemoveVote(request: RemoveVoteRequest): Promise<TransactionData>;
20
+ handleUnlockVote(request: UnlockVoteRequest): Promise<TransactionData>;
21
+ private earlyValidateVoting;
22
+ private validateConvictionAndBalance;
23
+ private validateSplitAbstainAmount;
24
+ subscribeGovLockedInfo(addresses: string[], cb: (info: GovVotingInfo) => void): Promise<() => void>;
25
+ private parseVotesAndCheckFinished;
26
+ private calculateUnlockAmounts;
27
+ }