@subwallet/extension-base 1.1.31-beta.0 → 1.1.32-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 (307) hide show
  1. package/background/KoniTypes.d.ts +69 -111
  2. package/background/KoniTypes.js +13 -19
  3. package/background/errors/TransactionError.js +0 -9
  4. package/cjs/background/KoniTypes.js +16 -20
  5. package/cjs/background/errors/TransactionError.js +0 -9
  6. package/cjs/constants/index.js +4 -19
  7. package/cjs/koni/api/nft/config.js +23 -33
  8. package/cjs/koni/api/nft/index.js +0 -14
  9. package/cjs/koni/api/nft/nft.js +22 -1
  10. package/cjs/koni/api/staking/bonding/amplitude.js +15 -17
  11. package/cjs/koni/api/staking/bonding/astar.js +10 -11
  12. package/cjs/koni/api/staking/bonding/index.js +3 -4
  13. package/cjs/koni/api/staking/bonding/paraChain.js +29 -28
  14. package/cjs/koni/api/staking/bonding/relayChain.js +45 -48
  15. package/cjs/koni/api/staking/bonding/utils.js +86 -104
  16. package/cjs/koni/api/staking/index.js +5 -6
  17. package/cjs/koni/api/staking/paraChain.js +5 -6
  18. package/cjs/koni/api/staking/relayChain.js +2 -3
  19. package/cjs/koni/background/cron.js +1 -11
  20. package/cjs/koni/background/handlers/Extension.js +69 -362
  21. package/cjs/koni/background/handlers/State.js +3 -51
  22. package/cjs/koni/background/handlers/index.js +2 -4
  23. package/cjs/koni/background/subscription.js +37 -95
  24. package/cjs/packageInfo.js +1 -1
  25. package/cjs/services/campaign-service/index.js +6 -9
  26. package/cjs/services/chain-service/constants.js +18 -3
  27. package/cjs/services/chain-service/index.js +2 -3
  28. package/cjs/services/chain-service/utils.js +1 -7
  29. package/cjs/services/event-service/index.js +0 -4
  30. package/cjs/services/keyring-service/index.js +2 -14
  31. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  32. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  33. package/cjs/services/migration-service/scripts/index.js +1 -7
  34. package/cjs/services/notification-service/NotificationService.js +1 -1
  35. package/cjs/services/storage-service/DatabaseService.js +0 -51
  36. package/cjs/services/storage-service/databases/index.js +0 -4
  37. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  38. package/cjs/services/subscan-service/index.js +0 -16
  39. package/cjs/services/transaction-service/event-parser/index.js +0 -58
  40. package/cjs/services/transaction-service/helpers/index.js +1 -3
  41. package/cjs/services/transaction-service/index.js +75 -231
  42. package/cjs/services/transaction-service/utils.js +0 -1
  43. package/cjs/types/index.js +0 -44
  44. package/cjs/utils/fetchStaticData.js +1 -2
  45. package/cjs/utils/index.js +1 -89
  46. package/cjs/utils/number.js +1 -3
  47. package/constants/index.d.ts +1 -6
  48. package/constants/index.js +1 -6
  49. package/koni/api/nft/config.js +23 -33
  50. package/koni/api/nft/index.js +1 -15
  51. package/koni/api/nft/nft.js +23 -2
  52. package/koni/api/staking/bonding/amplitude.js +9 -11
  53. package/koni/api/staking/bonding/astar.js +8 -9
  54. package/koni/api/staking/bonding/index.d.ts +2 -1
  55. package/koni/api/staking/bonding/index.js +3 -5
  56. package/koni/api/staking/bonding/paraChain.js +16 -15
  57. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  58. package/koni/api/staking/bonding/relayChain.js +30 -33
  59. package/koni/api/staking/bonding/utils.d.ts +38 -15
  60. package/koni/api/staking/bonding/utils.js +69 -85
  61. package/koni/api/staking/index.js +1 -2
  62. package/koni/api/staking/paraChain.js +6 -7
  63. package/koni/api/staking/relayChain.js +3 -4
  64. package/koni/background/cron.d.ts +0 -1
  65. package/koni/background/cron.js +2 -12
  66. package/koni/background/handlers/Extension.d.ts +1 -17
  67. package/koni/background/handlers/Extension.js +30 -321
  68. package/koni/background/handlers/State.d.ts +2 -18
  69. package/koni/background/handlers/State.js +3 -50
  70. package/koni/background/handlers/index.js +2 -4
  71. package/koni/background/subscription.d.ts +1 -6
  72. package/koni/background/subscription.js +38 -97
  73. package/package.json +8 -321
  74. package/packageInfo.js +1 -1
  75. package/services/campaign-service/index.js +6 -9
  76. package/services/chain-service/constants.d.ts +11 -0
  77. package/services/chain-service/constants.js +16 -2
  78. package/services/chain-service/index.js +2 -3
  79. package/services/chain-service/utils.d.ts +0 -1
  80. package/services/chain-service/utils.js +1 -5
  81. package/services/event-service/index.d.ts +0 -1
  82. package/services/event-service/index.js +0 -4
  83. package/services/event-service/types.d.ts +0 -8
  84. package/services/keyring-service/index.d.ts +1 -2
  85. package/services/keyring-service/index.js +2 -14
  86. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  87. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  88. package/services/migration-service/scripts/index.js +1 -7
  89. package/services/notification-service/NotificationService.js +1 -1
  90. package/services/storage-service/DatabaseService.d.ts +1 -18
  91. package/services/storage-service/DatabaseService.js +0 -51
  92. package/services/storage-service/databases/index.d.ts +1 -3
  93. package/services/storage-service/databases/index.js +0 -4
  94. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  95. package/services/subscan-service/index.d.ts +2 -3
  96. package/services/subscan-service/index.js +0 -15
  97. package/services/subscan-service/types.d.ts +0 -20
  98. package/services/transaction-service/event-parser/index.d.ts +1 -3
  99. package/services/transaction-service/event-parser/index.js +1 -57
  100. package/services/transaction-service/helpers/index.js +1 -3
  101. package/services/transaction-service/index.d.ts +15 -4
  102. package/services/transaction-service/index.js +73 -229
  103. package/services/transaction-service/types.d.ts +0 -2
  104. package/services/transaction-service/utils.js +0 -1
  105. package/types/index.d.ts +0 -5
  106. package/types/index.js +1 -5
  107. package/utils/fetchStaticData.js +1 -2
  108. package/utils/index.d.ts +0 -5
  109. package/utils/index.js +1 -53
  110. package/utils/number.d.ts +1 -1
  111. package/utils/number.js +1 -1
  112. package/cjs/koni/api/dotsama/balance.js +0 -464
  113. package/cjs/koni/api/nft/ordinal_nft/constants.js +0 -21
  114. package/cjs/koni/api/nft/ordinal_nft/index.js +0 -121
  115. package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
  116. package/cjs/koni/api/yield/helper/utils.js +0 -46
  117. package/cjs/services/earning-service/constants/chains.js +0 -29
  118. package/cjs/services/earning-service/constants/index.js +0 -27
  119. package/cjs/services/earning-service/constants/step.js +0 -18
  120. package/cjs/services/earning-service/handlers/base.js +0 -259
  121. package/cjs/services/earning-service/handlers/index.js +0 -60
  122. package/cjs/services/earning-service/handlers/lending/base.js +0 -20
  123. package/cjs/services/earning-service/handlers/lending/index.js +0 -13
  124. package/cjs/services/earning-service/handlers/lending/interlay.js +0 -191
  125. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -239
  126. package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -43
  127. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -297
  128. package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -34
  129. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -226
  130. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -395
  131. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +0 -384
  132. package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -461
  133. package/cjs/services/earning-service/handlers/native-staking/base-para.js +0 -146
  134. package/cjs/services/earning-service/handlers/native-staking/base.js +0 -159
  135. package/cjs/services/earning-service/handlers/native-staking/index.js +0 -34
  136. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -385
  137. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +0 -558
  138. package/cjs/services/earning-service/handlers/nomination-pool/index.js +0 -560
  139. package/cjs/services/earning-service/handlers/special.js +0 -503
  140. package/cjs/services/earning-service/service.js +0 -387
  141. package/cjs/services/earning-service/utils/index.js +0 -128
  142. package/cjs/services/migration-service/scripts/DeleteEarningData.js +0 -21
  143. package/cjs/services/migration-service/scripts/EnableEarningChains.js +0 -21
  144. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
  145. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
  146. package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
  147. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -21
  148. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -21
  149. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -149
  150. package/cjs/services/mint-campaign-service/campaigns/index.js +0 -13
  151. package/cjs/services/mint-campaign-service/constants.js +0 -11
  152. package/cjs/services/mint-campaign-service/index.js +0 -18
  153. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +0 -36
  154. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +0 -65
  155. package/cjs/services/storage-service/index.js +0 -241
  156. package/cjs/types/campaigns/index.js +0 -16
  157. package/cjs/types/campaigns/unlock-dot.js +0 -1
  158. package/cjs/types/ordinal.js +0 -1
  159. package/cjs/types/transaction.js +0 -1
  160. package/cjs/types/yield/actions/index.js +0 -27
  161. package/cjs/types/yield/actions/join/index.js +0 -38
  162. package/cjs/types/yield/actions/join/step.js +0 -47
  163. package/cjs/types/yield/actions/join/submit.js +0 -1
  164. package/cjs/types/yield/actions/join/validate.js +0 -16
  165. package/cjs/types/yield/actions/others.js +0 -1
  166. package/cjs/types/yield/index.js +0 -27
  167. package/cjs/types/yield/info/account/index.js +0 -49
  168. package/cjs/types/yield/info/account/info.js +0 -1
  169. package/cjs/types/yield/info/account/reward.js +0 -1
  170. package/cjs/types/yield/info/account/target.js +0 -32
  171. package/cjs/types/yield/info/account/unstake.js +0 -27
  172. package/cjs/types/yield/info/base.js +0 -41
  173. package/cjs/types/yield/info/chain/index.js +0 -27
  174. package/cjs/types/yield/info/chain/info.js +0 -1
  175. package/cjs/types/yield/info/chain/target.js +0 -1
  176. package/cjs/types/yield/info/index.js +0 -49
  177. package/cjs/types/yield/info/pallet.js +0 -15
  178. package/cjs/types.js +0 -1
  179. package/cjs/utils/address.js +0 -34
  180. package/cjs/utils/keyring.js +0 -57
  181. package/cjs/utils/object.js +0 -12
  182. package/koni/api/nft/ordinal_nft/constants.d.ts +0 -9
  183. package/koni/api/nft/ordinal_nft/constants.js +0 -12
  184. package/koni/api/nft/ordinal_nft/index.d.ts +0 -8
  185. package/koni/api/nft/ordinal_nft/index.js +0 -114
  186. package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
  187. package/koni/api/nft/ordinal_nft/utils.js +0 -33
  188. package/koni/api/yield/helper/utils.d.ts +0 -10
  189. package/koni/api/yield/helper/utils.js +0 -32
  190. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +0 -1235
  191. package/services/earning-service/constants/abis/st_liquid_token_abi.json +0 -1355
  192. package/services/earning-service/constants/chains.d.ts +0 -14
  193. package/services/earning-service/constants/chains.js +0 -21
  194. package/services/earning-service/constants/index.d.ts +0 -2
  195. package/services/earning-service/constants/index.js +0 -5
  196. package/services/earning-service/constants/step.d.ts +0 -3
  197. package/services/earning-service/constants/step.js +0 -10
  198. package/services/earning-service/handlers/base.d.ts +0 -112
  199. package/services/earning-service/handlers/base.js +0 -253
  200. package/services/earning-service/handlers/index.d.ts +0 -5
  201. package/services/earning-service/handlers/index.js +0 -8
  202. package/services/earning-service/handlers/lending/base.d.ts +0 -6
  203. package/services/earning-service/handlers/lending/base.js +0 -12
  204. package/services/earning-service/handlers/lending/index.d.ts +0 -1
  205. package/services/earning-service/handlers/lending/index.js +0 -4
  206. package/services/earning-service/handlers/lending/interlay.d.ts +0 -24
  207. package/services/earning-service/handlers/lending/interlay.js +0 -183
  208. package/services/earning-service/handlers/liquid-staking/acala.d.ts +0 -27
  209. package/services/earning-service/handlers/liquid-staking/acala.js +0 -231
  210. package/services/earning-service/handlers/liquid-staking/base.d.ts +0 -9
  211. package/services/earning-service/handlers/liquid-staking/base.js +0 -35
  212. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +0 -46
  213. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -286
  214. package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -4
  215. package/services/earning-service/handlers/liquid-staking/index.js +0 -7
  216. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +0 -26
  217. package/services/earning-service/handlers/liquid-staking/parallel.js +0 -218
  218. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +0 -34
  219. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -385
  220. package/services/earning-service/handlers/native-staking/amplitude.d.ts +0 -22
  221. package/services/earning-service/handlers/native-staking/amplitude.js +0 -375
  222. package/services/earning-service/handlers/native-staking/astar.d.ts +0 -19
  223. package/services/earning-service/handlers/native-staking/astar.js +0 -451
  224. package/services/earning-service/handlers/native-staking/base-para.d.ts +0 -11
  225. package/services/earning-service/handlers/native-staking/base-para.js +0 -138
  226. package/services/earning-service/handlers/native-staking/base.d.ts +0 -21
  227. package/services/earning-service/handlers/native-staking/base.js +0 -150
  228. package/services/earning-service/handlers/native-staking/index.d.ts +0 -4
  229. package/services/earning-service/handlers/native-staking/index.js +0 -7
  230. package/services/earning-service/handlers/native-staking/para-chain.d.ts +0 -15
  231. package/services/earning-service/handlers/native-staking/para-chain.js +0 -377
  232. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -21
  233. package/services/earning-service/handlers/native-staking/relay-chain.js +0 -549
  234. package/services/earning-service/handlers/nomination-pool/index.d.ts +0 -36
  235. package/services/earning-service/handlers/nomination-pool/index.js +0 -550
  236. package/services/earning-service/handlers/special.d.ts +0 -65
  237. package/services/earning-service/handlers/special.js +0 -495
  238. package/services/earning-service/service.d.ts +0 -45
  239. package/services/earning-service/service.js +0 -379
  240. package/services/earning-service/utils/index.d.ts +0 -18
  241. package/services/earning-service/utils/index.js +0 -112
  242. package/services/migration-service/scripts/DeleteEarningData.d.ts +0 -4
  243. package/services/migration-service/scripts/DeleteEarningData.js +0 -13
  244. package/services/migration-service/scripts/EnableEarningChains.d.ts +0 -4
  245. package/services/migration-service/scripts/EnableEarningChains.js +0 -13
  246. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +0 -4
  247. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -13
  248. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +0 -4
  249. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -13
  250. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +0 -13
  251. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -139
  252. package/services/mint-campaign-service/campaigns/index.d.ts +0 -1
  253. package/services/mint-campaign-service/campaigns/index.js +0 -4
  254. package/services/mint-campaign-service/constants.d.ts +0 -1
  255. package/services/mint-campaign-service/constants.js +0 -4
  256. package/services/mint-campaign-service/index.d.ts +0 -7
  257. package/services/mint-campaign-service/index.js +0 -11
  258. package/services/storage-service/db-stores/YieldPoolStore.d.ts +0 -10
  259. package/services/storage-service/db-stores/YieldPoolStore.js +0 -28
  260. package/services/storage-service/db-stores/YieldPositionStore.d.ts +0 -9
  261. package/services/storage-service/db-stores/YieldPositionStore.js +0 -57
  262. package/types/campaigns/index.d.ts +0 -1
  263. package/types/campaigns/index.js +0 -4
  264. package/types/campaigns/unlock-dot.d.ts +0 -71
  265. package/types/campaigns/unlock-dot.js +0 -1
  266. package/types/ordinal.d.ts +0 -69
  267. package/types/ordinal.js +0 -1
  268. package/types/transaction.d.ts +0 -3
  269. package/types/transaction.js +0 -1
  270. package/types/yield/actions/index.d.ts +0 -2
  271. package/types/yield/actions/index.js +0 -5
  272. package/types/yield/actions/join/index.d.ts +0 -3
  273. package/types/yield/actions/join/index.js +0 -6
  274. package/types/yield/actions/join/step.d.ts +0 -95
  275. package/types/yield/actions/join/step.js +0 -46
  276. package/types/yield/actions/join/submit.d.ts +0 -57
  277. package/types/yield/actions/join/submit.js +0 -1
  278. package/types/yield/actions/join/validate.d.ts +0 -18
  279. package/types/yield/actions/join/validate.js +0 -10
  280. package/types/yield/actions/others.d.ts +0 -85
  281. package/types/yield/actions/others.js +0 -1
  282. package/types/yield/index.d.ts +0 -2
  283. package/types/yield/index.js +0 -5
  284. package/types/yield/info/account/index.d.ts +0 -4
  285. package/types/yield/info/account/index.js +0 -7
  286. package/types/yield/info/account/info.d.ts +0 -92
  287. package/types/yield/info/account/info.js +0 -1
  288. package/types/yield/info/account/reward.d.ts +0 -45
  289. package/types/yield/info/account/reward.js +0 -1
  290. package/types/yield/info/account/target.d.ts +0 -43
  291. package/types/yield/info/account/target.js +0 -27
  292. package/types/yield/info/account/unstake.d.ts +0 -31
  293. package/types/yield/info/account/unstake.js +0 -22
  294. package/types/yield/info/base.d.ts +0 -45
  295. package/types/yield/info/base.js +0 -36
  296. package/types/yield/info/chain/index.d.ts +0 -2
  297. package/types/yield/info/chain/index.js +0 -5
  298. package/types/yield/info/chain/info.d.ts +0 -251
  299. package/types/yield/info/chain/info.js +0 -1
  300. package/types/yield/info/chain/target.d.ts +0 -37
  301. package/types/yield/info/chain/target.js +0 -1
  302. package/types/yield/info/index.d.ts +0 -4
  303. package/types/yield/info/index.js +0 -7
  304. package/types/yield/info/pallet.d.ts +0 -143
  305. package/types/yield/info/pallet.js +0 -9
  306. package/utils/object.d.ts +0 -1
  307. package/utils/object.js +0 -6
@@ -2,12 +2,10 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
5
- import { BasicTxErrorType, StakingTxErrorType, StakingType } from '@subwallet/extension-base/background/KoniTypes';
6
- import { getBondedValidators, getEarningStatusByNominations, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getParaCurrentInflation, isUnstakeAll } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
5
+ import { BasicTxErrorType, StakingStatus, StakingTxErrorType, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
6
+ import { getBondedValidators, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, getParaCurrentInflation, getStakingStatusByNominations, isUnstakeAll, parseIdentity } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
7
7
  import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
8
8
  import { _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
9
- import { parseIdentity } from '@subwallet/extension-base/services/earning-service/utils';
10
- import { EarningStatus, UnstakingStatus } from '@subwallet/extension-base/types';
11
9
  import { isSameAddress, parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
12
10
  import { BN, BN_ZERO } from '@polkadot/util';
13
11
  import { isEthereumAddress } from '@polkadot/util-crypto';
@@ -48,7 +46,7 @@ export function validateParaChainBondingCondition(chainInfo, amount, selectedCol
48
46
  const minStakeErrorMessage = getMinStakeErrorMessage(chainInfo, bnMinStake);
49
47
  const maxValidatorErrorMessage = getMaxValidatorErrorMessage(chainInfo, chainStakingMetadata.maxValidatorPerNominator);
50
48
  const existUnstakeErrorMessage = getExistUnstakeErrorMessage(chainInfo.slug, nominatorMetadata === null || nominatorMetadata === void 0 ? void 0 : nominatorMetadata.type, true);
51
- if (!nominatorMetadata || nominatorMetadata.status === EarningStatus.NOT_STAKING) {
49
+ if (!nominatorMetadata || nominatorMetadata.status === StakingStatus.NOT_STAKING) {
52
50
  if (!bnTotalStake.gte(bnMinStake)) {
53
51
  errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
54
52
  }
@@ -89,17 +87,18 @@ export function validateParaChainBondingCondition(chainInfo, amount, selectedCol
89
87
  }
90
88
  export function subscribeParaChainStakingMetadata(chain, substrateApi, callback) {
91
89
  return substrateApi.api.query.parachainStaking.round(_round => {
92
- var _substrateApi$api$con, _substrateApi$api$con2, _substrateApi$api$con3;
90
+ var _substrateApi$api$con, _substrateApi$api$con2, _substrateApi$api$con3, _substrateApi$api$con4, _substrateApi$api$con5, _substrateApi$api$con6;
93
91
  const roundObj = _round.toHuman();
94
92
  const round = parseRawNumber(roundObj.current);
95
93
  const maxDelegations = (_substrateApi$api$con = substrateApi.api.consts) === null || _substrateApi$api$con === void 0 ? void 0 : (_substrateApi$api$con2 = _substrateApi$api$con.parachainStaking) === null || _substrateApi$api$con2 === void 0 ? void 0 : (_substrateApi$api$con3 = _substrateApi$api$con2.maxDelegationsPerDelegator) === null || _substrateApi$api$con3 === void 0 ? void 0 : _substrateApi$api$con3.toString();
96
94
  const unstakingDelay = substrateApi.api.consts.parachainStaking.delegationBondLessDelay.toString();
97
95
  const unstakingPeriod = parseInt(unstakingDelay) * (_STAKING_ERA_LENGTH_MAP[chain] || _STAKING_ERA_LENGTH_MAP.default);
96
+ const minDelegatorStake = (_substrateApi$api$con4 = substrateApi.api.consts) === null || _substrateApi$api$con4 === void 0 ? void 0 : (_substrateApi$api$con5 = _substrateApi$api$con4.parachainStaking) === null || _substrateApi$api$con5 === void 0 ? void 0 : (_substrateApi$api$con6 = _substrateApi$api$con5.minDelegatorStk) === null || _substrateApi$api$con6 === void 0 ? void 0 : _substrateApi$api$con6.toString();
98
97
  callback(chain, {
99
98
  chain,
100
99
  type: StakingType.NOMINATED,
101
100
  era: round,
102
- minStake: '0',
101
+ minStake: minDelegatorStake || '0',
103
102
  maxValidatorPerNominator: parseInt(maxDelegations),
104
103
  maxWithdrawalRequestPerValidator: 1,
105
104
  // by default
@@ -109,11 +108,13 @@ export function subscribeParaChainStakingMetadata(chain, substrateApi, callback)
109
108
  });
110
109
  }
111
110
  export async function getParaChainStakingMetadata(chain, substrateApi) {
111
+ var _chainApi$api$consts$, _chainApi$api$consts$2;
112
112
  const chainApi = await substrateApi.isReady;
113
113
  const _round = (await chainApi.api.query.parachainStaking.round()).toHuman();
114
114
  const round = parseRawNumber(_round.current);
115
115
  const maxDelegations = chainApi.api.consts.parachainStaking.maxDelegationsPerDelegator.toString();
116
116
  const unstakingDelay = chainApi.api.consts.parachainStaking.delegationBondLessDelay.toString();
117
+ const minDelegatorStake = (_chainApi$api$consts$ = chainApi.api.consts.parachainStaking) === null || _chainApi$api$consts$ === void 0 ? void 0 : (_chainApi$api$consts$2 = _chainApi$api$consts$.minDelegatorStk) === null || _chainApi$api$consts$2 === void 0 ? void 0 : _chainApi$api$consts$2.toString();
117
118
  let _unvestedAllocation;
118
119
  if (chainApi.api.query.vesting && chainApi.api.query.vesting.totalUnvestedAllocation) {
119
120
  _unvestedAllocation = await chainApi.api.query.vesting.totalUnvestedAllocation();
@@ -138,7 +139,7 @@ export async function getParaChainStakingMetadata(chain, substrateApi) {
138
139
  type: StakingType.NOMINATED,
139
140
  era: round,
140
141
  inflation,
141
- minStake: '0',
142
+ minStake: minDelegatorStake || '0',
142
143
  maxValidatorPerNominator: parseInt(maxDelegations),
143
144
  maxWithdrawalRequestPerValidator: 1,
144
145
  // by default
@@ -159,7 +160,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
159
160
  const minDelegation = collatorInfo === null || collatorInfo === void 0 ? void 0 : collatorInfo.lowestTopDelegationAmount.toString();
160
161
  const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
161
162
  let hasUnstaking = false;
162
- let delegationStatus = EarningStatus.NOT_EARNING;
163
+ let delegationStatus = StakingStatus.NOT_EARNING;
163
164
 
164
165
  // parse unstaking info
165
166
  if (delegationScheduledRequests) {
@@ -187,7 +188,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
187
188
  const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
188
189
  const bnActiveStake = bnStake.sub(bnUnstakeBalance);
189
190
  if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegation))) {
190
- delegationStatus = EarningStatus.EARNING_REWARD;
191
+ delegationStatus = StakingStatus.EARNING_REWARD;
191
192
  }
192
193
  bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
193
194
  nominationList.push({
@@ -208,7 +209,7 @@ export async function subscribeParaChainNominatorMetadata(chainInfo, address, su
208
209
  // nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
209
210
  // }));
210
211
 
211
- const stakingStatus = getEarningStatusByNominations(bnTotalActiveStake, nominationList);
212
+ const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
212
213
  return {
213
214
  chain: chainInfo.slug,
214
215
  type: StakingType.NOMINATED,
@@ -238,7 +239,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
238
239
  chain: chainInfo.slug,
239
240
  type: StakingType.NOMINATED,
240
241
  address,
241
- status: EarningStatus.NOT_STAKING,
242
+ status: StakingStatus.NOT_STAKING,
242
243
  activeStake: '0',
243
244
  nominations: [],
244
245
  unstakings: []
@@ -253,7 +254,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
253
254
  const delegationScheduledRequests = _delegationScheduledRequests.toPrimitive();
254
255
  const currentRound = roundInfo.current;
255
256
  let hasUnstaking = false;
256
- let delegationStatus = EarningStatus.NOT_EARNING;
257
+ let delegationStatus = StakingStatus.NOT_EARNING;
257
258
 
258
259
  // parse unstaking info
259
260
  if (delegationScheduledRequests) {
@@ -281,7 +282,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
281
282
  const bnUnstakeBalance = unstakingMap[delegation.owner] ? new BN(unstakingMap[delegation.owner].claimable) : BN_ZERO;
282
283
  const bnActiveStake = bnStake.sub(bnUnstakeBalance);
283
284
  if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegation))) {
284
- delegationStatus = EarningStatus.EARNING_REWARD;
285
+ delegationStatus = StakingStatus.EARNING_REWARD;
285
286
  }
286
287
  bnTotalActiveStake = bnTotalActiveStake.add(bnActiveStake);
287
288
  nominationList.push({
@@ -298,7 +299,7 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
298
299
  const collatorInfo = _collatorInfo.toPrimitive();
299
300
  nomination.validatorMinStake = collatorInfo.lowestTopDelegationAmount.toString();
300
301
  }));
301
- const stakingStatus = getEarningStatusByNominations(bnTotalActiveStake, nominationList);
302
+ const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
302
303
  return {
303
304
  chain,
304
305
  type: StakingType.NOMINATED,
@@ -1,8 +1,8 @@
1
1
  import { _ChainInfo } from '@subwallet/chain-list/types';
2
2
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
3
- import { ChainStakingMetadata, NominatorMetadata, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
3
+ import { ChainStakingMetadata, NominationPoolInfo, NominatorMetadata, UnstakingInfo, ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes';
4
+ import { PalletNominationPoolsPoolMember } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
4
5
  import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
5
- import { NominationPoolInfo, PalletNominationPoolsPoolMember } from '@subwallet/extension-base/types';
6
6
  import { Codec } from '@polkadot/types/types';
7
7
  export interface PalletStakingNominations {
8
8
  targets: string[];
@@ -2,14 +2,11 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
5
- import { StakingTxErrorType, StakingType } from '@subwallet/extension-base/background/KoniTypes';
5
+ import { StakingStatus, StakingTxErrorType, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
6
6
  import { MAX_NOMINATIONS } from '@subwallet/extension-base/constants';
7
- import { calculateAlephZeroValidatorReturn, calculateChainStakedReturn, calculateInflation, calculateTernoaValidatorReturn, calculateValidatorStakedReturn, getCommission, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, parsePoolStashAddress } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
8
- import { _EXPECTED_BLOCK_TIME, _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
7
+ import { calculateAlephZeroValidatorReturn, calculateChainStakedReturn, calculateInflation, calculateTernoaValidatorReturn, calculateValidatorStakedReturn, getCommission, getExistUnstakeErrorMessage, getMaxValidatorErrorMessage, getMinStakeErrorMessage, parseIdentity, parsePoolStashAddress } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
8
+ import { _EXPECTED_BLOCK_TIME, _STAKING_CHAIN_GROUP, _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
9
9
  import { _getChainSubstrateAddressPrefix } from '@subwallet/extension-base/services/chain-service/utils';
10
- import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
11
- import { parseIdentity } from '@subwallet/extension-base/services/earning-service/utils';
12
- import { EarningStatus, UnstakingStatus } from '@subwallet/extension-base/types';
13
10
  import { reformatAddress } from '@subwallet/extension-base/utils';
14
11
  import BigN from 'bignumber.js';
15
12
  import { t } from 'i18next';
@@ -61,7 +58,7 @@ export function validateRelayBondingCondition(chainInfo, amount, selectedValidat
61
58
  const bnMinStake = new BN(chainStakingMetadata.minStake);
62
59
  const minStakeErrorMessage = getMinStakeErrorMessage(chainInfo, bnMinStake);
63
60
  const maxValidatorErrorMessage = getMaxValidatorErrorMessage(chainInfo, chainStakingMetadata.maxValidatorPerNominator);
64
- if (!nominatorMetadata || nominatorMetadata.status === EarningStatus.NOT_STAKING) {
61
+ if (!nominatorMetadata || nominatorMetadata.status === StakingStatus.NOT_STAKING) {
65
62
  if (!bnTotalStake.gte(bnMinStake)) {
66
63
  errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE, minStakeErrorMessage));
67
64
  }
@@ -120,12 +117,12 @@ export function subscribeRelayChainStakingMetadata(chainInfo, substrateApi, call
120
117
  });
121
118
  }
122
119
  export async function getRelayChainStakingMetadata(chainInfo, substrateApi) {
123
- var _chainApi$api$consts$, _chainApi$api$consts$2, _chainApi$api$query$a, _chainApi$api$query, _chainApi$api$query$s, _chainApi$api$query2, _chainApi$api$query2$, _chainApi$api$query3, _chainApi$api$query3$;
120
+ var _chainApi$api$query$a, _chainApi$api$query, _chainApi$api$query$s, _chainApi$api$query2, _chainApi$api$query2$, _chainApi$api$query3, _chainApi$api$query3$;
124
121
  const chain = chainInfo.slug;
125
122
  const chainApi = await substrateApi.isReady;
126
123
  const _era = await chainApi.api.query.staking.currentEra();
127
124
  const currentEra = _era.toString();
128
- const maxNominations = ((_chainApi$api$consts$ = chainApi.api.consts.staking) === null || _chainApi$api$consts$ === void 0 ? void 0 : (_chainApi$api$consts$2 = _chainApi$api$consts$.maxNominations) === null || _chainApi$api$consts$2 === void 0 ? void 0 : _chainApi$api$consts$2.toString()) || '16'; // TODO
125
+ const maxNominations = chainApi.api.consts.staking.maxNominations.toString();
129
126
  const maxUnlockingChunks = chainApi.api.consts.staking.maxUnlockingChunks.toString();
130
127
  const unlockingEras = chainApi.api.consts.staking.bondingDuration.toString();
131
128
  const [_totalEraStake, _totalIssuance, _auctionCounter, _minimumActiveStake, _minNominatorBond, _minPoolJoin, _eraStakers] = await Promise.all([chainApi.api.query.staking.erasTotalStake(parseInt(currentEra)), chainApi.api.query.balances.totalIssuance(), (_chainApi$api$query$a = chainApi.api.query.auctions) === null || _chainApi$api$query$a === void 0 ? void 0 : _chainApi$api$query$a.auctionCounter(), ((_chainApi$api$query = chainApi.api.query) === null || _chainApi$api$query === void 0 ? void 0 : (_chainApi$api$query$s = _chainApi$api$query.staking) === null || _chainApi$api$query$s === void 0 ? void 0 : _chainApi$api$query$s.minimumActiveStake) && ((_chainApi$api$query2 = chainApi.api.query) === null || _chainApi$api$query2 === void 0 ? void 0 : (_chainApi$api$query2$ = _chainApi$api$query2.staking) === null || _chainApi$api$query2$ === void 0 ? void 0 : _chainApi$api$query2$.minimumActiveStake()), chainApi.api.query.staking.minNominatorBond(), (_chainApi$api$query3 = chainApi.api.query) === null || _chainApi$api$query3 === void 0 ? void 0 : (_chainApi$api$query3$ = _chainApi$api$query3.nominationPools) === null || _chainApi$api$query3$ === void 0 ? void 0 : _chainApi$api$query3$.minJoinBond(), chainApi.api.query.staking.erasStakers.entries(parseInt(currentEra))]);
@@ -196,7 +193,7 @@ export async function subscribeRelayChainNominatorMetadata(chainInfo, address, s
196
193
  if (nominations) {
197
194
  const validatorList = nominations.targets;
198
195
  await Promise.all(validatorList.map(async validatorAddress => {
199
- let nominationStatus = EarningStatus.NOT_EARNING;
196
+ let nominationStatus = StakingStatus.NOT_EARNING;
200
197
  const [[identity], _eraStaker] = await Promise.all([parseIdentity(chainApi, validatorAddress), chainApi.api.query.staking.erasStakers(currentEra, validatorAddress)]);
201
198
  const eraStaker = _eraStaker.toPrimitive();
202
199
  const sortedNominators = eraStaker.others.sort((a, b) => {
@@ -207,10 +204,10 @@ export async function subscribeRelayChainNominatorMetadata(chainInfo, address, s
207
204
  });
208
205
  if (!topNominators.includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
209
206
  // if nominator has target but not in nominator list
210
- nominationStatus = EarningStatus.WAITING;
207
+ nominationStatus = StakingStatus.WAITING;
211
208
  } else if (topNominators.slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator).includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
212
209
  // if address in top nominators
213
- nominationStatus = EarningStatus.EARNING_REWARD;
210
+ nominationStatus = StakingStatus.EARNING_REWARD;
214
211
  }
215
212
  nominationList.push({
216
213
  chain,
@@ -222,20 +219,20 @@ export async function subscribeRelayChainNominatorMetadata(chainInfo, address, s
222
219
  }));
223
220
  }
224
221
 
225
- let stakingStatus = EarningStatus.NOT_EARNING;
222
+ let stakingStatus = StakingStatus.NOT_EARNING;
226
223
  const bnActiveStake = new BN(activeStake);
227
224
  let waitingNominationCount = 0;
228
225
  if (bnActiveStake.gte(minStake)) {
229
226
  for (const nomination of nominationList) {
230
- if (nomination.status === EarningStatus.EARNING_REWARD) {
227
+ if (nomination.status === StakingStatus.EARNING_REWARD) {
231
228
  // only need 1 earning nomination to count
232
- stakingStatus = EarningStatus.EARNING_REWARD;
233
- } else if (nomination.status === EarningStatus.WAITING) {
229
+ stakingStatus = StakingStatus.EARNING_REWARD;
230
+ } else if (nomination.status === StakingStatus.WAITING) {
234
231
  waitingNominationCount += 1;
235
232
  }
236
233
  }
237
234
  if (waitingNominationCount === nominationList.length) {
238
- stakingStatus = EarningStatus.WAITING;
235
+ stakingStatus = StakingStatus.WAITING;
239
236
  }
240
237
  }
241
238
  ledger.unlocking.forEach(unlockingChunk => {
@@ -296,7 +293,7 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
296
293
  return {
297
294
  chain,
298
295
  type: StakingType.NOMINATED,
299
- status: EarningStatus.NOT_STAKING,
296
+ status: StakingStatus.NOT_STAKING,
300
297
  address: address,
301
298
  activeStake: '0',
302
299
  nominations: [],
@@ -309,7 +306,7 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
309
306
  if (nominations) {
310
307
  const validatorList = nominations.targets;
311
308
  await Promise.all(validatorList.map(async validatorAddress => {
312
- let nominationStatus = EarningStatus.NOT_EARNING;
309
+ let nominationStatus = StakingStatus.NOT_EARNING;
313
310
  const [[identity], _eraStaker] = await Promise.all([parseIdentity(chainApi, validatorAddress), chainApi.api.query.staking.erasStakers(currentEra, validatorAddress)]);
314
311
  const eraStaker = _eraStaker.toPrimitive();
315
312
  const sortedNominators = eraStaker.others.sort((a, b) => {
@@ -320,10 +317,10 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
320
317
  });
321
318
  if (!topNominators.includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
322
319
  // if nominator has target but not in nominator list
323
- nominationStatus = EarningStatus.WAITING;
320
+ nominationStatus = StakingStatus.WAITING;
324
321
  } else if (topNominators.slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator).includes(reformatAddress(address, _getChainSubstrateAddressPrefix(chainInfo)))) {
325
322
  // if address in top nominators
326
- nominationStatus = EarningStatus.EARNING_REWARD;
323
+ nominationStatus = StakingStatus.EARNING_REWARD;
327
324
  }
328
325
  nominationList.push({
329
326
  chain,
@@ -335,20 +332,20 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
335
332
  }));
336
333
  }
337
334
 
338
- let stakingStatus = EarningStatus.NOT_EARNING;
335
+ let stakingStatus = StakingStatus.NOT_EARNING;
339
336
  const bnActiveStake = new BN(activeStake);
340
337
  let waitingNominationCount = 0;
341
338
  if (bnActiveStake.gte(minStake)) {
342
339
  for (const nomination of nominationList) {
343
- if (nomination.status === EarningStatus.EARNING_REWARD) {
340
+ if (nomination.status === StakingStatus.EARNING_REWARD) {
344
341
  // only need 1 earning nomination to count
345
- stakingStatus = EarningStatus.EARNING_REWARD;
346
- } else if (nomination.status === EarningStatus.WAITING) {
342
+ stakingStatus = StakingStatus.EARNING_REWARD;
343
+ } else if (nomination.status === StakingStatus.WAITING) {
347
344
  waitingNominationCount += 1;
348
345
  }
349
346
  }
350
347
  if (waitingNominationCount === nominationList.length) {
351
- stakingStatus = EarningStatus.WAITING;
348
+ stakingStatus = StakingStatus.WAITING;
352
349
  }
353
350
  }
354
351
  ledger.unlocking.forEach(unlockingChunk => {
@@ -384,7 +381,7 @@ export async function subscribeRelayChainPoolMemberMetadata(chainInfo, address,
384
381
  const poolMetadata = _poolMetadata.toPrimitive();
385
382
  const currentEra = _currentEra.toString();
386
383
  const nominations = _nominations.toJSON();
387
- let stakingStatus = EarningStatus.NOT_EARNING;
384
+ let stakingStatus = StakingStatus.NOT_EARNING;
388
385
  const getPoolName = () => {
389
386
  if (poolMetadata.isUtf8) {
390
387
  return poolMetadata.toUtf8();
@@ -407,7 +404,7 @@ export async function subscribeRelayChainPoolMemberMetadata(chainInfo, address,
407
404
  }).slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator);
408
405
  if (topNominators.includes(reformatAddress(poolStashAccount, _getChainSubstrateAddressPrefix(chainInfo)))) {
409
406
  // if address in top nominators
410
- stakingStatus = EarningStatus.EARNING_REWARD;
407
+ stakingStatus = StakingStatus.EARNING_REWARD;
411
408
  }
412
409
  }));
413
410
  }
@@ -442,7 +439,7 @@ export async function subscribeRelayChainPoolMemberMetadata(chainInfo, address,
442
439
  });
443
440
  const bnActiveStake = new BN(poolMemberInfo.points.toString());
444
441
  if (!bnActiveStake.gt(BN_ZERO)) {
445
- stakingStatus = EarningStatus.NOT_EARNING;
442
+ stakingStatus = StakingStatus.NOT_EARNING;
446
443
  }
447
444
  return {
448
445
  chain: chainInfo.slug,
@@ -473,14 +470,14 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
473
470
  chain: chainInfo.slug,
474
471
  type: StakingType.POOLED,
475
472
  address,
476
- status: EarningStatus.NOT_STAKING,
473
+ status: StakingStatus.NOT_STAKING,
477
474
  activeStake: '0',
478
475
  nominations: [],
479
476
  // can only join 1 pool at a time
480
477
  unstakings: []
481
478
  };
482
479
  }
483
- let stakingStatus = EarningStatus.NOT_EARNING;
480
+ let stakingStatus = StakingStatus.NOT_EARNING;
484
481
  const _poolMetadata = await chainApi.api.query.nominationPools.metadata(poolMemberInfo.poolId);
485
482
  const poolMetadata = _poolMetadata.toPrimitive();
486
483
  const getPoolName = () => {
@@ -508,7 +505,7 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
508
505
  }).slice(0, unlimitedNominatorRewarded ? undefined : maxNominatorRewardedPerValidator);
509
506
  if (topNominators.includes(reformatAddress(poolStashAccount, _getChainSubstrateAddressPrefix(chainInfo)))) {
510
507
  // if address in top nominators
511
- stakingStatus = EarningStatus.EARNING_REWARD;
508
+ stakingStatus = StakingStatus.EARNING_REWARD;
512
509
  }
513
510
  }));
514
511
  }
@@ -535,7 +532,7 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
535
532
  });
536
533
  const bnActiveStake = new BN(poolMemberInfo.points.toString());
537
534
  if (!bnActiveStake.gt(BN_ZERO)) {
538
- stakingStatus = EarningStatus.NOT_EARNING;
535
+ stakingStatus = StakingStatus.NOT_EARNING;
539
536
  }
540
537
  return {
541
538
  chain: chainInfo.slug,
@@ -1,10 +1,16 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { _ChainInfo } from '@subwallet/chain-list/types';
3
- import { NominationInfo, NominatorMetadata, StakingType, UnstakingInfo } from '@subwallet/extension-base/background/KoniTypes';
3
+ import { NominationInfo, NominatorMetadata, StakingStatus, StakingType, UnstakingInfo } from '@subwallet/extension-base/background/KoniTypes';
4
4
  import { _SubstrateInflationParams } from '@subwallet/extension-base/services/chain-service/constants';
5
- import { EarningStatus, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
5
+ import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
6
6
  import { ApiPromise } from '@polkadot/api';
7
7
  import { BN } from '@polkadot/util';
8
+ export interface PalletNominationPoolsPoolMember {
9
+ poolId: number;
10
+ points: number;
11
+ lasRecordedRewardCounter: number;
12
+ unbondingEras: Record<string, number>;
13
+ }
8
14
  export interface PalletDappsStakingDappInfo {
9
15
  address: string;
10
16
  name: string;
@@ -61,6 +67,15 @@ export interface PalletParachainStakingDelegator {
61
67
  lessTotal: number;
62
68
  status: number;
63
69
  }
70
+ export interface PalletStakingExposureItem {
71
+ who: string;
72
+ value: number;
73
+ }
74
+ export interface PalletStakingExposure {
75
+ total: number;
76
+ own: number;
77
+ others: PalletStakingExposureItem[];
78
+ }
64
79
  export interface PalletIdentityRegistration {
65
80
  judgements: any[];
66
81
  deposit: number;
@@ -82,12 +97,32 @@ export interface PalletIdentityRegistration {
82
97
  export declare type PalletIdentitySuper = [string, {
83
98
  Raw: string;
84
99
  }];
100
+ export interface ValidatorExtraInfo {
101
+ commission: string;
102
+ blocked: false;
103
+ identity?: string;
104
+ isVerified: boolean;
105
+ }
85
106
  export interface Unlocking {
86
107
  remainingEras: BN;
87
108
  value: BN;
88
109
  }
110
+ export interface TernoaStakingRewardsStakingRewardsData {
111
+ sessionEraPayout: string;
112
+ sessionExtraRewardPayout: string;
113
+ }
89
114
  export declare function parsePoolStashAddress(api: ApiPromise, index: number, poolId: number, poolsPalletId: string): string;
90
115
  export declare function transformPoolName(input: string): string;
116
+ /**
117
+ * @returns
118
+ * <p>
119
+ * [0] - identity
120
+ * </p>
121
+ * <p>
122
+ * [1] - isReasonable (isVerified)
123
+ * </p>
124
+ * */
125
+ export declare function parseIdentity(substrateApi: _SubstrateApi, address: string, children?: string): Promise<[string | undefined, boolean]>;
91
126
  export declare function getInflationParams(networkKey: string): _SubstrateInflationParams;
92
127
  export declare function calcInflationUniformEraPayout(totalIssuance: BN, yearlyInflationInTokens: number): number;
93
128
  export declare function calcInflationRewardCurve(minInflation: number, stakedFraction: number, idealStake: number, idealInterest: number, falloff: number): number;
@@ -125,18 +160,6 @@ export declare function getBondedValidators(nominations: NominationInfo[]): {
125
160
  bondedValidators: string[];
126
161
  };
127
162
  export declare function isUnstakeAll(selectedValidator: string, nominations: NominationInfo[], unstakeAmount: string): boolean;
128
- export declare enum YieldAction {
129
- STAKE = "STAKE",
130
- UNSTAKE = "UNSTAKE",
131
- WITHDRAW = "WITHDRAW",
132
- CLAIM_REWARD = "CLAIM_REWARD",
133
- CANCEL_UNSTAKE = "CANCEL_UNSTAKE",
134
- START_EARNING = "EARN",
135
- WITHDRAW_EARNING = "WITHDRAW_EARNING",
136
- CUSTOM_ACTION = "CUSTOM_ACTION"
137
- }
138
- export declare function getYieldAvailableActionsByType(yieldPoolInfo: YieldPoolInfo): YieldAction[];
139
- export declare function getYieldAvailableActionsByPosition(yieldPosition: YieldPositionInfo, yieldPoolInfo: YieldPoolInfo, unclaimedReward?: string): YieldAction[];
140
163
  export declare enum StakingAction {
141
164
  STAKE = "STAKE",
142
165
  UNSTAKE = "UNSTAKE",
@@ -148,7 +171,7 @@ export declare function getStakingAvailableActionsByChain(chain: string, type: S
148
171
  export declare function getStakingAvailableActionsByNominator(nominatorMetadata: NominatorMetadata, unclaimedReward?: string): StakingAction[];
149
172
  export declare function isActionFromValidator(stakingType: StakingType, chain: string): boolean;
150
173
  export declare function getWithdrawalInfo(nominatorMetadata: NominatorMetadata): UnstakingInfo | undefined;
151
- export declare function getEarningStatusByNominations(bnTotalActiveStake: BN, nominationList: NominationInfo[]): EarningStatus;
174
+ export declare function getStakingStatusByNominations(bnTotalActiveStake: BN, nominationList: NominationInfo[]): StakingStatus;
152
175
  export declare function getValidatorLabel(chain: string): "dApp" | "Validator" | "Collator";
153
176
  export declare const getMinStakeErrorMessage: (chainInfo: _ChainInfo, bnMinStake: BN) => string;
154
177
  export declare const getMaxValidatorErrorMessage: (chainInfo: _ChainInfo, max: number) => string;
@@ -1,16 +1,14 @@
1
1
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { StakingType } from '@subwallet/extension-base/background/KoniTypes';
4
+ import { StakingStatus, StakingType, UnstakingStatus } from '@subwallet/extension-base/background/KoniTypes';
5
5
  import { getAstarWithdrawable } from '@subwallet/extension-base/koni/api/staking/bonding/astar';
6
- import { _KNOWN_CHAIN_INFLATION_PARAMS, _SUBSTRATE_DEFAULT_INFLATION_PARAMS } from '@subwallet/extension-base/services/chain-service/constants';
6
+ import { _KNOWN_CHAIN_INFLATION_PARAMS, _STAKING_CHAIN_GROUP, _SUBSTRATE_DEFAULT_INFLATION_PARAMS } from '@subwallet/extension-base/services/chain-service/constants';
7
7
  import { _getChainNativeTokenBasicInfo } from '@subwallet/extension-base/services/chain-service/utils';
8
- import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
9
- import { EarningStatus, UnstakingStatus, YieldPoolType } from '@subwallet/extension-base/types';
10
- import { detectTranslate, parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
8
+ import { detectTranslate, isSameAddress, parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
11
9
  import { balanceFormatter, formatNumber } from '@subwallet/extension-base/utils/number';
12
10
  import { t } from 'i18next';
13
- import { BN, BN_BILLION, BN_HUNDRED, BN_MILLION, BN_THOUSAND, BN_ZERO, bnToU8a, stringToU8a, u8aConcat } from '@polkadot/util';
11
+ import { BN, BN_BILLION, BN_HUNDRED, BN_MILLION, BN_THOUSAND, BN_ZERO, bnToU8a, hexToString, isHex, stringToU8a, u8aConcat } from '@polkadot/util';
14
12
  export let PalletParachainStakingRequestType;
15
13
  (function (PalletParachainStakingRequestType) {
16
14
  PalletParachainStakingRequestType["REVOKE"] = "revoke";
@@ -29,6 +27,64 @@ export function parsePoolStashAddress(api, index, poolId, poolsPalletId) {
29
27
  export function transformPoolName(input) {
30
28
  return input.replace(/[^\x20-\x7E]/g, '');
31
29
  }
30
+
31
+ /**
32
+ * @returns
33
+ * <p>
34
+ * [0] - identity
35
+ * </p>
36
+ * <p>
37
+ * [1] - isReasonable (isVerified)
38
+ * </p>
39
+ * */
40
+ export async function parseIdentity(substrateApi, address, children) {
41
+ const compactResult = rs => {
42
+ const result = [];
43
+ if (rs) {
44
+ result.push(rs);
45
+ }
46
+ if (children) {
47
+ result.push(children);
48
+ }
49
+ if (result.length > 0) {
50
+ return result.join('/');
51
+ } else {
52
+ return undefined;
53
+ }
54
+ };
55
+ if (substrateApi.api.query.identity) {
56
+ let identity;
57
+ const _parent = await substrateApi.api.query.identity.superOf(address);
58
+ const parentInfo = _parent.toHuman();
59
+ if (parentInfo) {
60
+ const [parentAddress, {
61
+ Raw: data
62
+ }] = parentInfo;
63
+ const child = isHex(data) ? hexToString(data) : data;
64
+ if (!isSameAddress(address, parentAddress)) {
65
+ const [rs, isReasonable] = await parseIdentity(substrateApi, parentAddress, child);
66
+ return [compactResult(rs), isReasonable];
67
+ }
68
+ }
69
+ const _identity = await substrateApi.api.query.identity.identityOf(address);
70
+ const identityInfo = _identity.toHuman();
71
+ if (identityInfo) {
72
+ var _identityInfo$info, _identityInfo$info$di, _identityInfo$info2, _identityInfo$info2$w, _identityInfo$info3, _identityInfo$info3$r, _identityInfo$info4, _identityInfo$info4$t;
73
+ const displayName = (_identityInfo$info = identityInfo.info) === null || _identityInfo$info === void 0 ? void 0 : (_identityInfo$info$di = _identityInfo$info.display) === null || _identityInfo$info$di === void 0 ? void 0 : _identityInfo$info$di.Raw;
74
+ const web = (_identityInfo$info2 = identityInfo.info) === null || _identityInfo$info2 === void 0 ? void 0 : (_identityInfo$info2$w = _identityInfo$info2.web) === null || _identityInfo$info2$w === void 0 ? void 0 : _identityInfo$info2$w.Raw;
75
+ const riot = (_identityInfo$info3 = identityInfo.info) === null || _identityInfo$info3 === void 0 ? void 0 : (_identityInfo$info3$r = _identityInfo$info3.riot) === null || _identityInfo$info3$r === void 0 ? void 0 : _identityInfo$info3$r.Raw;
76
+ const twitter = (_identityInfo$info4 = identityInfo.info) === null || _identityInfo$info4 === void 0 ? void 0 : (_identityInfo$info4$t = _identityInfo$info4.twitter) === null || _identityInfo$info4$t === void 0 ? void 0 : _identityInfo$info4$t.Raw;
77
+ const isReasonable = identityInfo.judgements.length > 0;
78
+ if (displayName) {
79
+ identity = isHex(displayName) ? hexToString(displayName) : displayName;
80
+ } else {
81
+ identity = twitter || web || riot;
82
+ }
83
+ return [compactResult(identity), isReasonable];
84
+ }
85
+ }
86
+ return [undefined, false];
87
+ }
32
88
  export function getInflationParams(networkKey) {
33
89
  return _KNOWN_CHAIN_INFLATION_PARAMS[networkKey] || _SUBSTRATE_DEFAULT_INFLATION_PARAMS;
34
90
  }
@@ -142,78 +198,6 @@ export function isUnstakeAll(selectedValidator, nominations, unstakeAmount) {
142
198
  }
143
199
  return isUnstakeAll;
144
200
  }
145
- export let YieldAction;
146
- (function (YieldAction) {
147
- YieldAction["STAKE"] = "STAKE";
148
- YieldAction["UNSTAKE"] = "UNSTAKE";
149
- YieldAction["WITHDRAW"] = "WITHDRAW";
150
- YieldAction["CLAIM_REWARD"] = "CLAIM_REWARD";
151
- YieldAction["CANCEL_UNSTAKE"] = "CANCEL_UNSTAKE";
152
- YieldAction["START_EARNING"] = "EARN";
153
- YieldAction["WITHDRAW_EARNING"] = "WITHDRAW_EARNING";
154
- YieldAction["CUSTOM_ACTION"] = "CUSTOM_ACTION";
155
- })(YieldAction || (YieldAction = {}));
156
- export function getYieldAvailableActionsByType(yieldPoolInfo) {
157
- if ([YieldPoolType.NATIVE_STAKING, YieldPoolType.NOMINATION_POOL].includes(yieldPoolInfo.type)) {
158
- if (yieldPoolInfo.type === YieldPoolType.NOMINATION_POOL) {
159
- return [YieldAction.STAKE, YieldAction.CLAIM_REWARD, YieldAction.UNSTAKE, YieldAction.WITHDRAW];
160
- }
161
- const chain = yieldPoolInfo.chain;
162
- if (_STAKING_CHAIN_GROUP.para.includes(chain)) {
163
- return [YieldAction.STAKE, YieldAction.UNSTAKE, YieldAction.WITHDRAW, YieldAction.CANCEL_UNSTAKE];
164
- } else if (_STAKING_CHAIN_GROUP.astar.includes(chain)) {
165
- return [YieldAction.STAKE, YieldAction.CLAIM_REWARD, YieldAction.UNSTAKE, YieldAction.WITHDRAW];
166
- } else if (_STAKING_CHAIN_GROUP.amplitude.includes(chain)) {
167
- return [YieldAction.STAKE, YieldAction.UNSTAKE, YieldAction.WITHDRAW];
168
- }
169
- }
170
- if (yieldPoolInfo.type === YieldPoolType.LENDING) {
171
- return [YieldAction.START_EARNING, YieldAction.WITHDRAW_EARNING];
172
- } else if (yieldPoolInfo.type === YieldPoolType.LIQUID_STAKING) {
173
- return [YieldAction.START_EARNING, YieldAction.UNSTAKE, YieldAction.WITHDRAW];
174
- }
175
- return [YieldAction.STAKE, YieldAction.UNSTAKE, YieldAction.WITHDRAW, YieldAction.CANCEL_UNSTAKE];
176
- }
177
- export function getYieldAvailableActionsByPosition(yieldPosition, yieldPoolInfo, unclaimedReward) {
178
- const result = [];
179
- if ([YieldPoolType.NATIVE_STAKING, YieldPoolType.NOMINATION_POOL].includes(yieldPoolInfo.type)) {
180
- result.push(YieldAction.STAKE);
181
- const bnActiveStake = new BN(yieldPosition.activeStake);
182
- if (yieldPosition.activeStake && bnActiveStake.gt(BN_ZERO)) {
183
- result.push(YieldAction.UNSTAKE);
184
- const isAstarNetwork = _STAKING_CHAIN_GROUP.astar.includes(yieldPosition.chain);
185
- const isAmplitudeNetwork = _STAKING_CHAIN_GROUP.amplitude.includes(yieldPosition.chain);
186
- const bnUnclaimedReward = new BN(unclaimedReward || '0');
187
- if ((yieldPosition.type === YieldPoolType.NOMINATION_POOL || isAmplitudeNetwork) && bnUnclaimedReward.gt(BN_ZERO) || isAstarNetwork) {
188
- result.push(YieldAction.CLAIM_REWARD);
189
- }
190
- }
191
- if (yieldPosition.unstakings.length > 0) {
192
- result.push(YieldAction.CANCEL_UNSTAKE);
193
- const hasClaimable = yieldPosition.unstakings.some(unstaking => unstaking.status === UnstakingStatus.CLAIMABLE);
194
- if (hasClaimable) {
195
- result.push(YieldAction.WITHDRAW);
196
- }
197
- }
198
- } else if (yieldPoolInfo.type === YieldPoolType.LIQUID_STAKING) {
199
- result.push(YieldAction.START_EARNING);
200
- const activeBalance = new BN(yieldPosition.activeStake || '0');
201
- if (activeBalance.gt(BN_ZERO)) {
202
- result.push(YieldAction.UNSTAKE);
203
- }
204
- const hasWithdrawal = yieldPosition.unstakings.some(unstakingInfo => unstakingInfo.status === UnstakingStatus.CLAIMABLE);
205
- if (hasWithdrawal) {
206
- result.push(YieldAction.WITHDRAW);
207
- }
208
-
209
- // TODO: check has unstakings to withdraw
210
- } else {
211
- result.push(YieldAction.START_EARNING);
212
- result.push(YieldAction.WITHDRAW_EARNING); // TODO
213
- }
214
-
215
- return result;
216
- }
217
201
  export let StakingAction;
218
202
  (function (StakingAction) {
219
203
  StakingAction["STAKE"] = "STAKE";
@@ -257,7 +241,7 @@ export function getStakingAvailableActionsByNominator(nominatorMetadata, unclaim
257
241
  return result;
258
242
  }
259
243
  export function isActionFromValidator(stakingType, chain) {
260
- if (stakingType === StakingType.POOLED || stakingType === StakingType.LIQUID_STAKING) {
244
+ if (stakingType === StakingType.POOLED) {
261
245
  return false;
262
246
  }
263
247
  if (_STAKING_CHAIN_GROUP.astar.includes(chain)) {
@@ -283,21 +267,21 @@ export function getWithdrawalInfo(nominatorMetadata) {
283
267
  }
284
268
  return result;
285
269
  }
286
- export function getEarningStatusByNominations(bnTotalActiveStake, nominationList) {
287
- let stakingStatus = EarningStatus.EARNING_REWARD;
270
+ export function getStakingStatusByNominations(bnTotalActiveStake, nominationList) {
271
+ let stakingStatus = StakingStatus.EARNING_REWARD;
288
272
  if (bnTotalActiveStake.isZero()) {
289
- stakingStatus = EarningStatus.NOT_EARNING;
273
+ stakingStatus = StakingStatus.NOT_EARNING;
290
274
  } else {
291
275
  let invalidDelegationCount = 0;
292
276
  for (const nomination of nominationList) {
293
- if (nomination.status === EarningStatus.NOT_EARNING) {
277
+ if (nomination.status === StakingStatus.NOT_EARNING) {
294
278
  invalidDelegationCount += 1;
295
279
  }
296
280
  }
297
281
  if (invalidDelegationCount > 0 && invalidDelegationCount < nominationList.length) {
298
- stakingStatus = EarningStatus.PARTIALLY_EARNING;
282
+ stakingStatus = StakingStatus.PARTIALLY_EARNING;
299
283
  } else if (invalidDelegationCount === nominationList.length) {
300
- stakingStatus = EarningStatus.NOT_EARNING;
284
+ stakingStatus = StakingStatus.NOT_EARNING;
301
285
  }
302
286
  }
303
287
  return stakingStatus;