@subwallet/extension-base 1.1.33-beta.0 → 1.1.34-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 (312) 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 +16 -19
  11. package/cjs/koni/api/staking/bonding/astar.js +10 -11
  12. package/cjs/koni/api/staking/bonding/index.js +1 -4
  13. package/cjs/koni/api/staking/bonding/paraChain.js +23 -25
  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 +17 -10
  18. package/cjs/koni/api/staking/relayChain.js +2 -3
  19. package/cjs/koni/background/cron.js +21 -3
  20. package/cjs/koni/background/handlers/Extension.js +69 -368
  21. package/cjs/koni/background/handlers/State.js +12 -18
  22. package/cjs/koni/background/handlers/index.js +2 -4
  23. package/cjs/koni/background/subscription.js +104 -7
  24. package/cjs/packageInfo.js +1 -1
  25. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +1 -3
  26. package/cjs/services/campaign-service/index.js +6 -9
  27. package/cjs/services/chain-service/constants.js +19 -2
  28. package/cjs/services/chain-service/handler/SubstrateApi.js +10 -5
  29. package/cjs/services/chain-service/index.js +101 -40
  30. package/cjs/services/chain-service/utils.js +69 -7
  31. package/cjs/services/event-service/index.js +0 -5
  32. package/cjs/services/keyring-service/index.js +2 -14
  33. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  34. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  35. package/cjs/services/migration-service/scripts/index.js +1 -6
  36. package/cjs/services/notification-service/NotificationService.js +1 -1
  37. package/cjs/services/storage-service/DatabaseService.js +0 -63
  38. package/cjs/services/storage-service/databases/index.js +0 -4
  39. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  40. package/cjs/services/subscan-service/index.js +0 -16
  41. package/cjs/services/transaction-service/event-parser/index.js +0 -58
  42. package/cjs/services/transaction-service/helpers/index.js +1 -3
  43. package/cjs/services/transaction-service/index.js +75 -249
  44. package/cjs/services/transaction-service/utils.js +0 -1
  45. package/cjs/types/index.js +0 -44
  46. package/cjs/utils/fetchStaticData.js +1 -2
  47. package/cjs/utils/index.js +1 -89
  48. package/cjs/utils/number.js +2 -6
  49. package/constants/index.d.ts +1 -6
  50. package/constants/index.js +1 -6
  51. package/koni/api/nft/config.js +23 -33
  52. package/koni/api/nft/index.js +1 -15
  53. package/koni/api/nft/nft.js +23 -2
  54. package/koni/api/staking/bonding/amplitude.js +10 -13
  55. package/koni/api/staking/bonding/astar.js +8 -9
  56. package/koni/api/staking/bonding/index.d.ts +1 -1
  57. package/koni/api/staking/bonding/index.js +1 -5
  58. package/koni/api/staking/bonding/paraChain.js +10 -12
  59. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  60. package/koni/api/staking/bonding/relayChain.js +30 -33
  61. package/koni/api/staking/bonding/utils.d.ts +38 -15
  62. package/koni/api/staking/bonding/utils.js +69 -85
  63. package/koni/api/staking/index.js +1 -2
  64. package/koni/api/staking/paraChain.js +18 -11
  65. package/koni/api/staking/relayChain.js +3 -4
  66. package/koni/background/cron.d.ts +4 -0
  67. package/koni/background/cron.js +22 -4
  68. package/koni/background/handlers/Extension.d.ts +1 -17
  69. package/koni/background/handlers/Extension.js +30 -327
  70. package/koni/background/handlers/State.d.ts +1 -6
  71. package/koni/background/handlers/State.js +12 -17
  72. package/koni/background/handlers/index.js +2 -4
  73. package/koni/background/subscription.d.ts +6 -1
  74. package/koni/background/subscription.js +104 -8
  75. package/package.json +7 -320
  76. package/packageInfo.js +1 -1
  77. package/services/balance-service/helpers/subscribe/substrate/index.js +2 -4
  78. package/services/campaign-service/index.js +6 -9
  79. package/services/chain-service/constants.d.ts +13 -0
  80. package/services/chain-service/constants.js +15 -0
  81. package/services/chain-service/handler/SubstrateApi.js +10 -5
  82. package/services/chain-service/index.d.ts +9 -1
  83. package/services/chain-service/index.js +97 -37
  84. package/services/chain-service/utils.d.ts +10 -2
  85. package/services/chain-service/utils.js +67 -6
  86. package/services/event-service/index.d.ts +0 -2
  87. package/services/event-service/index.js +0 -5
  88. package/services/event-service/types.d.ts +0 -9
  89. package/services/keyring-service/index.d.ts +1 -2
  90. package/services/keyring-service/index.js +2 -14
  91. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  92. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  93. package/services/migration-service/scripts/index.js +1 -6
  94. package/services/notification-service/NotificationService.js +1 -1
  95. package/services/storage-service/DatabaseService.d.ts +1 -22
  96. package/services/storage-service/DatabaseService.js +0 -63
  97. package/services/storage-service/databases/index.d.ts +1 -3
  98. package/services/storage-service/databases/index.js +0 -4
  99. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  100. package/services/subscan-service/index.d.ts +2 -3
  101. package/services/subscan-service/index.js +0 -15
  102. package/services/subscan-service/types.d.ts +0 -20
  103. package/services/transaction-service/event-parser/index.d.ts +1 -3
  104. package/services/transaction-service/event-parser/index.js +1 -57
  105. package/services/transaction-service/helpers/index.js +1 -3
  106. package/services/transaction-service/index.d.ts +13 -6
  107. package/services/transaction-service/index.js +73 -247
  108. package/services/transaction-service/types.d.ts +0 -2
  109. package/services/transaction-service/utils.js +0 -1
  110. package/types/index.d.ts +0 -5
  111. package/types/index.js +1 -5
  112. package/utils/fetchStaticData.js +1 -2
  113. package/utils/index.d.ts +0 -5
  114. package/utils/index.js +0 -52
  115. package/utils/number.d.ts +1 -2
  116. package/utils/number.js +1 -2
  117. package/cjs/koni/api/dotsama/balance.js +0 -464
  118. package/cjs/koni/api/nft/ordinal_nft/constants.js +0 -21
  119. package/cjs/koni/api/nft/ordinal_nft/index.js +0 -121
  120. package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
  121. package/cjs/koni/api/yield/helper/utils.js +0 -46
  122. package/cjs/services/earning-service/constants/chains.js +0 -30
  123. package/cjs/services/earning-service/constants/index.js +0 -27
  124. package/cjs/services/earning-service/constants/step.js +0 -18
  125. package/cjs/services/earning-service/handlers/base.js +0 -262
  126. package/cjs/services/earning-service/handlers/index.js +0 -60
  127. package/cjs/services/earning-service/handlers/lending/base.js +0 -81
  128. package/cjs/services/earning-service/handlers/lending/index.js +0 -13
  129. package/cjs/services/earning-service/handlers/lending/interlay.js +0 -192
  130. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -240
  131. package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -97
  132. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -298
  133. package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -34
  134. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -227
  135. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -404
  136. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +0 -434
  137. package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -466
  138. package/cjs/services/earning-service/handlers/native-staking/base-para.js +0 -146
  139. package/cjs/services/earning-service/handlers/native-staking/base.js +0 -161
  140. package/cjs/services/earning-service/handlers/native-staking/index.js +0 -34
  141. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -390
  142. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +0 -567
  143. package/cjs/services/earning-service/handlers/nomination-pool/index.js +0 -566
  144. package/cjs/services/earning-service/handlers/special.js +0 -493
  145. package/cjs/services/earning-service/service.js +0 -740
  146. package/cjs/services/earning-service/utils/index.js +0 -128
  147. package/cjs/services/migration-service/scripts/DeleteEarningData.js +0 -21
  148. package/cjs/services/migration-service/scripts/EnableEarningChains.js +0 -21
  149. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
  150. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
  151. package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
  152. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -21
  153. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -21
  154. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -149
  155. package/cjs/services/mint-campaign-service/campaigns/index.js +0 -13
  156. package/cjs/services/mint-campaign-service/constants.js +0 -11
  157. package/cjs/services/mint-campaign-service/index.js +0 -18
  158. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +0 -36
  159. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +0 -71
  160. package/cjs/services/storage-service/index.js +0 -241
  161. package/cjs/types/campaigns/index.js +0 -16
  162. package/cjs/types/campaigns/unlock-dot.js +0 -1
  163. package/cjs/types/ordinal.js +0 -1
  164. package/cjs/types/transaction.js +0 -1
  165. package/cjs/types/yield/actions/index.js +0 -27
  166. package/cjs/types/yield/actions/join/index.js +0 -38
  167. package/cjs/types/yield/actions/join/step.js +0 -47
  168. package/cjs/types/yield/actions/join/submit.js +0 -1
  169. package/cjs/types/yield/actions/join/validate.js +0 -16
  170. package/cjs/types/yield/actions/others.js +0 -1
  171. package/cjs/types/yield/index.js +0 -27
  172. package/cjs/types/yield/info/account/index.js +0 -49
  173. package/cjs/types/yield/info/account/info.js +0 -1
  174. package/cjs/types/yield/info/account/reward.js +0 -1
  175. package/cjs/types/yield/info/account/target.js +0 -32
  176. package/cjs/types/yield/info/account/unstake.js +0 -27
  177. package/cjs/types/yield/info/base.js +0 -41
  178. package/cjs/types/yield/info/chain/index.js +0 -27
  179. package/cjs/types/yield/info/chain/info.js +0 -1
  180. package/cjs/types/yield/info/chain/target.js +0 -1
  181. package/cjs/types/yield/info/index.js +0 -49
  182. package/cjs/types/yield/info/pallet.js +0 -15
  183. package/cjs/types.js +0 -1
  184. package/cjs/utils/address.js +0 -34
  185. package/cjs/utils/keyring.js +0 -57
  186. package/cjs/utils/object.js +0 -12
  187. package/koni/api/nft/ordinal_nft/constants.d.ts +0 -9
  188. package/koni/api/nft/ordinal_nft/constants.js +0 -12
  189. package/koni/api/nft/ordinal_nft/index.d.ts +0 -8
  190. package/koni/api/nft/ordinal_nft/index.js +0 -114
  191. package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
  192. package/koni/api/nft/ordinal_nft/utils.js +0 -33
  193. package/koni/api/yield/helper/utils.d.ts +0 -10
  194. package/koni/api/yield/helper/utils.js +0 -32
  195. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +0 -1235
  196. package/services/earning-service/constants/abis/st_liquid_token_abi.json +0 -1355
  197. package/services/earning-service/constants/chains.d.ts +0 -15
  198. package/services/earning-service/constants/chains.js +0 -22
  199. package/services/earning-service/constants/index.d.ts +0 -2
  200. package/services/earning-service/constants/index.js +0 -5
  201. package/services/earning-service/constants/step.d.ts +0 -3
  202. package/services/earning-service/constants/step.js +0 -10
  203. package/services/earning-service/handlers/base.d.ts +0 -113
  204. package/services/earning-service/handlers/base.js +0 -256
  205. package/services/earning-service/handlers/index.d.ts +0 -5
  206. package/services/earning-service/handlers/index.js +0 -8
  207. package/services/earning-service/handlers/lending/base.d.ts +0 -8
  208. package/services/earning-service/handlers/lending/base.js +0 -73
  209. package/services/earning-service/handlers/lending/index.d.ts +0 -1
  210. package/services/earning-service/handlers/lending/index.js +0 -4
  211. package/services/earning-service/handlers/lending/interlay.d.ts +0 -24
  212. package/services/earning-service/handlers/lending/interlay.js +0 -184
  213. package/services/earning-service/handlers/liquid-staking/acala.d.ts +0 -27
  214. package/services/earning-service/handlers/liquid-staking/acala.js +0 -232
  215. package/services/earning-service/handlers/liquid-staking/base.d.ts +0 -11
  216. package/services/earning-service/handlers/liquid-staking/base.js +0 -89
  217. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +0 -46
  218. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -287
  219. package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -4
  220. package/services/earning-service/handlers/liquid-staking/index.js +0 -7
  221. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +0 -26
  222. package/services/earning-service/handlers/liquid-staking/parallel.js +0 -219
  223. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +0 -34
  224. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -394
  225. package/services/earning-service/handlers/native-staking/amplitude.d.ts +0 -22
  226. package/services/earning-service/handlers/native-staking/amplitude.js +0 -425
  227. package/services/earning-service/handlers/native-staking/astar.d.ts +0 -19
  228. package/services/earning-service/handlers/native-staking/astar.js +0 -456
  229. package/services/earning-service/handlers/native-staking/base-para.d.ts +0 -11
  230. package/services/earning-service/handlers/native-staking/base-para.js +0 -138
  231. package/services/earning-service/handlers/native-staking/base.d.ts +0 -21
  232. package/services/earning-service/handlers/native-staking/base.js +0 -152
  233. package/services/earning-service/handlers/native-staking/index.d.ts +0 -4
  234. package/services/earning-service/handlers/native-staking/index.js +0 -7
  235. package/services/earning-service/handlers/native-staking/para-chain.d.ts +0 -15
  236. package/services/earning-service/handlers/native-staking/para-chain.js +0 -382
  237. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -21
  238. package/services/earning-service/handlers/native-staking/relay-chain.js +0 -558
  239. package/services/earning-service/handlers/nomination-pool/index.d.ts +0 -36
  240. package/services/earning-service/handlers/nomination-pool/index.js +0 -556
  241. package/services/earning-service/handlers/special.d.ts +0 -64
  242. package/services/earning-service/handlers/special.js +0 -485
  243. package/services/earning-service/service.d.ts +0 -94
  244. package/services/earning-service/service.js +0 -729
  245. package/services/earning-service/utils/index.d.ts +0 -18
  246. package/services/earning-service/utils/index.js +0 -112
  247. package/services/migration-service/scripts/DeleteEarningData.d.ts +0 -4
  248. package/services/migration-service/scripts/DeleteEarningData.js +0 -13
  249. package/services/migration-service/scripts/EnableEarningChains.d.ts +0 -4
  250. package/services/migration-service/scripts/EnableEarningChains.js +0 -13
  251. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +0 -4
  252. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -13
  253. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +0 -4
  254. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -13
  255. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +0 -13
  256. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -139
  257. package/services/mint-campaign-service/campaigns/index.d.ts +0 -1
  258. package/services/mint-campaign-service/campaigns/index.js +0 -4
  259. package/services/mint-campaign-service/constants.d.ts +0 -1
  260. package/services/mint-campaign-service/constants.js +0 -4
  261. package/services/mint-campaign-service/index.d.ts +0 -7
  262. package/services/mint-campaign-service/index.js +0 -11
  263. package/services/storage-service/db-stores/YieldPoolStore.d.ts +0 -10
  264. package/services/storage-service/db-stores/YieldPoolStore.js +0 -28
  265. package/services/storage-service/db-stores/YieldPositionStore.d.ts +0 -11
  266. package/services/storage-service/db-stores/YieldPositionStore.js +0 -63
  267. package/types/campaigns/index.d.ts +0 -1
  268. package/types/campaigns/index.js +0 -4
  269. package/types/campaigns/unlock-dot.d.ts +0 -71
  270. package/types/campaigns/unlock-dot.js +0 -1
  271. package/types/ordinal.d.ts +0 -69
  272. package/types/ordinal.js +0 -1
  273. package/types/transaction.d.ts +0 -3
  274. package/types/transaction.js +0 -1
  275. package/types/yield/actions/index.d.ts +0 -2
  276. package/types/yield/actions/index.js +0 -5
  277. package/types/yield/actions/join/index.d.ts +0 -3
  278. package/types/yield/actions/join/index.js +0 -6
  279. package/types/yield/actions/join/step.d.ts +0 -95
  280. package/types/yield/actions/join/step.js +0 -46
  281. package/types/yield/actions/join/submit.d.ts +0 -58
  282. package/types/yield/actions/join/submit.js +0 -1
  283. package/types/yield/actions/join/validate.d.ts +0 -18
  284. package/types/yield/actions/join/validate.js +0 -10
  285. package/types/yield/actions/others.d.ts +0 -85
  286. package/types/yield/actions/others.js +0 -1
  287. package/types/yield/index.d.ts +0 -2
  288. package/types/yield/index.js +0 -5
  289. package/types/yield/info/account/index.d.ts +0 -4
  290. package/types/yield/info/account/index.js +0 -7
  291. package/types/yield/info/account/info.d.ts +0 -92
  292. package/types/yield/info/account/info.js +0 -1
  293. package/types/yield/info/account/reward.d.ts +0 -47
  294. package/types/yield/info/account/reward.js +0 -1
  295. package/types/yield/info/account/target.d.ts +0 -43
  296. package/types/yield/info/account/target.js +0 -27
  297. package/types/yield/info/account/unstake.d.ts +0 -31
  298. package/types/yield/info/account/unstake.js +0 -22
  299. package/types/yield/info/base.d.ts +0 -45
  300. package/types/yield/info/base.js +0 -36
  301. package/types/yield/info/chain/index.d.ts +0 -2
  302. package/types/yield/info/chain/index.js +0 -5
  303. package/types/yield/info/chain/info.d.ts +0 -252
  304. package/types/yield/info/chain/info.js +0 -1
  305. package/types/yield/info/chain/target.d.ts +0 -37
  306. package/types/yield/info/chain/target.js +0 -1
  307. package/types/yield/info/index.d.ts +0 -4
  308. package/types/yield/info/index.js +0 -7
  309. package/types/yield/info/pallet.d.ts +0 -143
  310. package/types/yield/info/pallet.js +0 -9
  311. package/utils/object.d.ts +0 -1
  312. package/utils/object.js +0 -6
@@ -14,12 +14,10 @@ import CampaignService from '@subwallet/extension-base/services/campaign-service
14
14
  import { ChainService } from '@subwallet/extension-base/services/chain-service';
15
15
  import { _DEFAULT_MANTA_ZK_CHAIN, _MANTA_ZK_CHAIN_GROUP, _PREDEFINED_SINGLE_MODES } from '@subwallet/extension-base/services/chain-service/constants';
16
16
  import { _getEvmChainId, _getSubstrateGenesisHash, _getTokenOnChainAssetId, _isAssetFungibleToken, _isChainEnabled, _isChainTestNet, _parseMetadataForSmartContractAsset } from '@subwallet/extension-base/services/chain-service/utils';
17
- import EarningService from '@subwallet/extension-base/services/earning-service/service';
18
17
  import { EventService } from '@subwallet/extension-base/services/event-service';
19
18
  import { HistoryService } from '@subwallet/extension-base/services/history-service';
20
19
  import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
21
20
  import MigrationService from '@subwallet/extension-base/services/migration-service';
22
- import MintCampaignService from '@subwallet/extension-base/services/mint-campaign-service';
23
21
  import NotificationService from '@subwallet/extension-base/services/notification-service/NotificationService';
24
22
  import { PriceService } from '@subwallet/extension-base/services/price-service';
25
23
  import RequestService from '@subwallet/extension-base/services/request-service';
@@ -95,13 +93,11 @@ export default class KoniState {
95
93
  this.priceService = new PriceService(this.dbService, this.eventService, this.chainService);
96
94
  this.balanceService = new BalanceService(this);
97
95
  this.historyService = new HistoryService(this.dbService, this.chainService, this.eventService, this.keyringService, this.subscanService);
98
- this.mintCampaignService = new MintCampaignService(this);
96
+ this.transactionService = new TransactionService(this.chainService, this.eventService, this.requestService, this.balanceService, this.historyService, this.notificationService, this.dbService);
99
97
  this.walletConnectService = new WalletConnectService(this, this.requestService);
100
98
  this.migrationService = new MigrationService(this, this.eventService);
101
99
  this.campaignService = new CampaignService(this);
102
100
  this.buyService = new BuyService(this);
103
- this.transactionService = new TransactionService(this);
104
- this.earningService = new EarningService(this);
105
101
  this.subscription = new KoniSubscription(this, this.dbService);
106
102
  this.cron = new KoniCron(this, this.subscription, this.dbService);
107
103
  this.logger = createLogger('State');
@@ -222,7 +218,6 @@ export default class KoniState {
222
218
  await this.migrationService.run();
223
219
  this.campaignService.init();
224
220
  this.eventService.emit('chain.ready', true);
225
- await this.earningService.init();
226
221
  this.onReady();
227
222
  this.onAccountAdd();
228
223
  this.onAccountRemove();
@@ -245,13 +240,20 @@ export default class KoniState {
245
240
  }
246
241
  async startSubscription() {
247
242
  await this.eventService.waitKeyringReady;
248
- await this.eventService.waitAssetReady;
249
243
  this.dbService.subscribeChainStakingMetadata([], data => {
250
244
  this.chainStakingMetadataSubject.next(data);
251
245
  });
252
246
  this.dbService.subscribeMantaPayConfig(_DEFAULT_MANTA_ZK_CHAIN, data => {
253
247
  this.mantaPayConfigSubject.next(data);
254
248
  });
249
+ let unsub;
250
+ this.keyringService.accountSubject.subscribe(accounts => {
251
+ // TODO: improve this
252
+ unsub && unsub.unsubscribe();
253
+ unsub = this.dbService.subscribeNominatorMetadata(Object.keys(accounts), data => {
254
+ this.stakingNominatorMetadataSubject.next(data);
255
+ });
256
+ });
255
257
  }
256
258
  onReady() {
257
259
  // Todo: Need optimize in the future to, only run important services onetime to save resources
@@ -1407,7 +1409,7 @@ export default class KoniState {
1407
1409
  // Stopping services
1408
1410
  await Promise.all([this.cron.stop(), this.subscription.stop()]);
1409
1411
  await this.pauseAllNetworks(undefined, 'IDLE mode');
1410
- await Promise.all([this.historyService.stop(), this.priceService.stop(), this.earningService.stop()]);
1412
+ await Promise.all([this.historyService.stop(), this.priceService.stop()]);
1411
1413
 
1412
1414
  // Complete sleeping
1413
1415
  sleeping.resolve();
@@ -1439,7 +1441,7 @@ export default class KoniState {
1439
1441
  }
1440
1442
 
1441
1443
  // Start services
1442
- await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.earningService.start()]);
1444
+ await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start()]);
1443
1445
 
1444
1446
  // Complete starting
1445
1447
  starting.resolve();
@@ -1540,7 +1542,7 @@ export default class KoniState {
1540
1542
  return await this.cron.reloadNft();
1541
1543
  }
1542
1544
  async reloadStaking() {
1543
- await this.earningService.reloadEarning(true);
1545
+ await this.subscription.reloadStaking();
1544
1546
  return true;
1545
1547
  }
1546
1548
  async reloadBalance() {
@@ -1739,11 +1741,4 @@ export default class KoniState {
1739
1741
  specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
1740
1742
  };
1741
1743
  }
1742
- getCrowdloanContributions({
1743
- address,
1744
- page,
1745
- relayChain
1746
- }) {
1747
- return this.subscanService.getCrowdloanContributions(relayChain, address, page);
1748
- }
1749
1744
  }
@@ -58,8 +58,7 @@ export default function handlers({
58
58
  assert(port, 'Port has been disconnected');
59
59
  port.postMessage({
60
60
  id,
61
- response,
62
- sender: 'BACKGROUND'
61
+ response
63
62
  });
64
63
  }).catch(error => {
65
64
  console.error(error);
@@ -71,8 +70,7 @@ export default function handlers({
71
70
  error: error.message,
72
71
  errorCode: error.code,
73
72
  errorData: error.data,
74
- id,
75
- sender: 'BACKGROUND'
73
+ id
76
74
  });
77
75
  }
78
76
  });
@@ -2,7 +2,7 @@ import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
2
2
  import { _ChainState, _EvmApi, _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
3
3
  import DatabaseService from '@subwallet/extension-base/services/storage-service/DatabaseService';
4
4
  import KoniState from './handlers/State';
5
- declare type SubscriptionName = 'balance' | 'crowdloan' | 'yieldPoolStats' | 'yieldPosition';
5
+ declare type SubscriptionName = 'balance' | 'crowdloan' | 'stakingOnChain' | 'essentialChainStakingMetadata';
6
6
  export declare class KoniSubscription {
7
7
  private eventHandler?;
8
8
  private subscriptionMap;
@@ -18,11 +18,16 @@ export declare class KoniSubscription {
18
18
  stop(): Promise<void>;
19
19
  subscribeBalances(address: string, chainInfoMap: Record<string, _ChainInfo>, chainStateMap: Record<string, _ChainState>, substrateApiMap: Record<string, _SubstrateApi>, web3ApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): void;
20
20
  subscribeCrowdloans(address: string, substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): void;
21
+ subscribeStakingOnChain(address: string, substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): void;
22
+ initStakingOnChainSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
23
+ initEssentialChainStakingMetadataSubscription(substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
21
24
  initBalanceSubscription(addresses: string[], chainInfoMap: Record<string, _ChainInfo>, chainStateMap: Record<string, _ChainState>, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
22
25
  initCrowdloanSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
23
26
  subscribeNft(address: string, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>): void;
24
27
  initNftSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>): void;
25
28
  subscribeStakingReward(address: string): Promise<void>;
29
+ subscribeStakingRewardFastInterval(address: string): Promise<void>;
30
+ reloadStaking(): Promise<void>;
26
31
  reloadBalance(): Promise<void>;
27
32
  reloadCrowdloan(): Promise<void>;
28
33
  }
@@ -2,7 +2,9 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { subscribeCrowdloan } from '@subwallet/extension-base/koni/api/dotsama/crowdloan';
5
- import { getNominationStakingRewardData } from '@subwallet/extension-base/koni/api/staking';
5
+ import { getNominationStakingRewardData, getPoolingStakingRewardData, stakingOnChainApi } from '@subwallet/extension-base/koni/api/staking';
6
+ import { subscribeEssentialChainStakingMetadata } from '@subwallet/extension-base/koni/api/staking/bonding';
7
+ import { getAmplitudeUnclaimedStakingReward } from '@subwallet/extension-base/koni/api/staking/paraChain';
6
8
  import { nftHandler } from '@subwallet/extension-base/koni/background/handlers';
7
9
  import { subscribeBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/balance';
8
10
  import { _isChainEnabled, _isChainSupportSubstrateStaking } from '@subwallet/extension-base/services/chain-service/utils';
@@ -13,8 +15,8 @@ export class KoniSubscription {
13
15
  subscriptionMap = {
14
16
  crowdloan: undefined,
15
17
  balance: undefined,
16
- yieldPoolStats: undefined,
17
- yieldPosition: undefined
18
+ stakingOnChain: undefined,
19
+ essentialChainStakingMetadata: undefined
18
20
  };
19
21
  constructor(state, dbService) {
20
22
  this.dbService = dbService;
@@ -41,6 +43,10 @@ export class KoniSubscription {
41
43
  this.subscriptionMap.crowdloan();
42
44
  delete this.subscriptionMap.crowdloan;
43
45
  }
46
+ if (this.subscriptionMap.stakingOnChain) {
47
+ this.subscriptionMap.stakingOnChain();
48
+ delete this.subscriptionMap.stakingOnChain;
49
+ }
44
50
  }
45
51
  async start() {
46
52
  var _this$state$keyringSe;
@@ -49,6 +55,7 @@ export class KoniSubscription {
49
55
  if (currentAddress) {
50
56
  this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
51
57
  this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
58
+ this.subscribeStakingOnChain(currentAddress, this.state.getSubstrateApiMap());
52
59
  }
53
60
  this.eventHandler = (events, eventTypes) => {
54
61
  var _serviceInfo$currentA;
@@ -63,6 +70,7 @@ export class KoniSubscription {
63
70
  }
64
71
  this.subscribeBalances(address, serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate, serviceInfo.chainApiMap.evm);
65
72
  this.subscribeCrowdloans(address, serviceInfo.chainApiMap.substrate);
73
+ this.subscribeStakingOnChain(address, serviceInfo.chainApiMap.substrate);
66
74
  };
67
75
  this.state.eventService.onLazy(this.eventHandler.bind(this));
68
76
  }
@@ -92,6 +100,55 @@ export class KoniSubscription {
92
100
  this.updateSubscription('crowdloan', this.initCrowdloanSubscription(addresses, substrateApiMap, onlyRunOnFirstTime));
93
101
  }).catch(console.error);
94
102
  }
103
+ subscribeStakingOnChain(address, substrateApiMap, onlyRunOnFirstTime) {
104
+ this.state.resetStaking(address);
105
+ const addresses = this.state.getDecodedAddresses(address);
106
+ if (!addresses.length) {
107
+ return;
108
+ }
109
+ this.updateSubscription('stakingOnChain', this.initStakingOnChainSubscription(addresses, substrateApiMap, onlyRunOnFirstTime));
110
+ this.updateSubscription('essentialChainStakingMetadata', this.initEssentialChainStakingMetadataSubscription(substrateApiMap, onlyRunOnFirstTime)); // TODO: might not need to re-subscribe on changing account
111
+ }
112
+
113
+ initStakingOnChainSubscription(addresses, substrateApiMap, onlyRunOnFirstTime) {
114
+ const stakingCallback = (networkKey, rs) => {
115
+ this.state.setStakingItem(networkKey, rs);
116
+ };
117
+ const nominatorStateCallback = nominatorMetadata => {
118
+ this.state.updateStakingNominatorMetadata(nominatorMetadata);
119
+ };
120
+ const unsub = stakingOnChainApi(addresses, substrateApiMap, this.state.getActiveChainInfoMap(), stakingCallback, nominatorStateCallback);
121
+ if (onlyRunOnFirstTime) {
122
+ unsub && unsub();
123
+ return;
124
+ }
125
+ return () => {
126
+ unsub && unsub();
127
+ };
128
+ }
129
+ initEssentialChainStakingMetadataSubscription(substrateApiMap, onlyRunOnFirstTime) {
130
+ const unsub = subscribeEssentialChainStakingMetadata(substrateApiMap, this.state.getActiveChainInfoMap(), (networkKey, rs) => {
131
+ this.state.updateChainStakingMetadata(rs, {
132
+ era: rs.era,
133
+ minStake: rs.minStake,
134
+ maxValidatorPerNominator: rs.maxValidatorPerNominator,
135
+ // temporary fix for Astar, there's no limit for now
136
+ maxWithdrawalRequestPerValidator: rs.maxWithdrawalRequestPerValidator,
137
+ // by default
138
+ allowCancelUnstaking: rs.allowCancelUnstaking,
139
+ unstakingPeriod: rs.unstakingPeriod,
140
+ expectedReturn: rs.expectedReturn,
141
+ inflation: rs.inflation
142
+ });
143
+ });
144
+ if (onlyRunOnFirstTime) {
145
+ unsub && unsub();
146
+ return;
147
+ }
148
+ return () => {
149
+ unsub && unsub();
150
+ };
151
+ }
95
152
  initBalanceSubscription(addresses, chainInfoMap, chainStateMap, substrateApiMap, evmApiMap, onlyRunOnFirstTime) {
96
153
  const filteredChainInfoMap = {};
97
154
  Object.values(chainStateMap).forEach(chainState => {
@@ -118,11 +175,15 @@ export class KoniSubscription {
118
175
  this.state.setCrowdloanItem(networkKey, rs);
119
176
  });
120
177
  if (onlyRunOnFirstTime) {
121
- subscriptionPromise.then(unsub => unsub === null || unsub === void 0 ? void 0 : unsub()).catch(this.logger.warn);
178
+ subscriptionPromise.then(unsub => {
179
+ unsub && unsub();
180
+ }).catch(this.logger.warn);
122
181
  return;
123
182
  }
124
183
  return () => {
125
- subscriptionPromise.then(unsub => unsub === null || unsub === void 0 ? void 0 : unsub()).catch(this.logger.warn);
184
+ subscriptionPromise.then(unsub => {
185
+ unsub && unsub();
186
+ }).catch(this.logger.warn);
126
187
  };
127
188
  }
128
189
  subscribeNft(address, substrateApiMap, evmApiMap, smartContractNfts, chainInfoMap) {
@@ -156,16 +217,51 @@ export class KoniSubscription {
156
217
  this.state.updateStakingReward(rewardItem);
157
218
  });
158
219
  }
159
- async reloadBalance() {
220
+ async subscribeStakingRewardFastInterval(address) {
221
+ const addresses = this.state.getDecodedAddresses(address);
222
+ if (!addresses.length) {
223
+ return;
224
+ }
225
+ const pooledStakingItems = await this.state.getPooledStakingRecordsByAddress(addresses);
226
+ const pooledAddresses = [];
227
+ pooledStakingItems.forEach(pooledItem => {
228
+ if (!pooledAddresses.includes(pooledItem.address)) {
229
+ pooledAddresses.push(pooledItem.address);
230
+ }
231
+ });
232
+ const chainInfoMap = this.state.getChainInfoMap();
233
+ const targetChainMap = {};
234
+ Object.entries(chainInfoMap).forEach(([key, network]) => {
235
+ const chainState = this.state.getChainStateByKey(key);
236
+ if (_isChainEnabled(chainState) && _isChainSupportSubstrateStaking(network)) {
237
+ targetChainMap[key] = network;
238
+ }
239
+ });
240
+ const activeNetworks = [];
241
+ Object.keys(targetChainMap).forEach(key => {
242
+ activeNetworks.push(key);
243
+ });
244
+ const updateState = result => {
245
+ this.state.updateStakingReward(result);
246
+ };
247
+ await Promise.all([getPoolingStakingRewardData(pooledAddresses, targetChainMap, this.state.getSubstrateApiMap(), updateState), getAmplitudeUnclaimedStakingReward(this.state.getSubstrateApiMap(), addresses, chainInfoMap, activeNetworks, updateState)]);
248
+ }
249
+ async reloadStaking() {
160
250
  var _this$state$keyringSe2;
161
251
  const currentAddress = (_this$state$keyringSe2 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe2 === void 0 ? void 0 : _this$state$keyringSe2.address;
252
+ this.subscribeStakingOnChain(currentAddress, this.state.getSubstrateApiMap());
253
+ await waitTimeout(1800);
254
+ }
255
+ async reloadBalance() {
256
+ var _this$state$keyringSe3;
257
+ const currentAddress = (_this$state$keyringSe3 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe3 === void 0 ? void 0 : _this$state$keyringSe3.address;
162
258
  await this.state.handleResetBalance(currentAddress, true);
163
259
  this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
164
260
  await waitTimeout(1800);
165
261
  }
166
262
  async reloadCrowdloan() {
167
- var _this$state$keyringSe3;
168
- const currentAddress = (_this$state$keyringSe3 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe3 === void 0 ? void 0 : _this$state$keyringSe3.address;
263
+ var _this$state$keyringSe4;
264
+ const currentAddress = (_this$state$keyringSe4 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe4 === void 0 ? void 0 : _this$state$keyringSe4.address;
169
265
  this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
170
266
  await waitTimeout(1800);
171
267
  }