@subwallet/extension-base 1.1.33-beta.3 → 1.1.35-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 (310) 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 +16 -1
  28. package/cjs/services/chain-service/index.js +2 -5
  29. package/cjs/services/chain-service/utils.js +1 -7
  30. package/cjs/services/event-service/index.js +0 -5
  31. package/cjs/services/keyring-service/index.js +2 -14
  32. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  33. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  34. package/cjs/services/migration-service/scripts/index.js +1 -6
  35. package/cjs/services/notification-service/NotificationService.js +1 -1
  36. package/cjs/services/storage-service/DatabaseService.js +0 -63
  37. package/cjs/services/storage-service/databases/index.js +0 -4
  38. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  39. package/cjs/services/subscan-service/index.js +0 -16
  40. package/cjs/services/transaction-service/event-parser/index.js +0 -58
  41. package/cjs/services/transaction-service/helpers/index.js +1 -3
  42. package/cjs/services/transaction-service/index.js +75 -249
  43. package/cjs/services/transaction-service/utils.js +0 -1
  44. package/cjs/types/index.js +0 -44
  45. package/cjs/utils/fetchStaticData.js +1 -2
  46. package/cjs/utils/index.js +1 -89
  47. package/cjs/utils/number.js +2 -6
  48. package/constants/index.d.ts +1 -6
  49. package/constants/index.js +1 -6
  50. package/koni/api/nft/config.js +23 -33
  51. package/koni/api/nft/index.js +1 -15
  52. package/koni/api/nft/nft.js +23 -2
  53. package/koni/api/staking/bonding/amplitude.js +10 -13
  54. package/koni/api/staking/bonding/astar.js +8 -9
  55. package/koni/api/staking/bonding/index.d.ts +1 -1
  56. package/koni/api/staking/bonding/index.js +1 -5
  57. package/koni/api/staking/bonding/paraChain.js +10 -12
  58. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  59. package/koni/api/staking/bonding/relayChain.js +30 -33
  60. package/koni/api/staking/bonding/utils.d.ts +38 -15
  61. package/koni/api/staking/bonding/utils.js +69 -85
  62. package/koni/api/staking/index.js +1 -2
  63. package/koni/api/staking/paraChain.js +18 -11
  64. package/koni/api/staking/relayChain.js +3 -4
  65. package/koni/background/cron.d.ts +4 -0
  66. package/koni/background/cron.js +22 -4
  67. package/koni/background/handlers/Extension.d.ts +1 -17
  68. package/koni/background/handlers/Extension.js +30 -327
  69. package/koni/background/handlers/State.d.ts +1 -6
  70. package/koni/background/handlers/State.js +12 -17
  71. package/koni/background/handlers/index.js +2 -4
  72. package/koni/background/subscription.d.ts +6 -1
  73. package/koni/background/subscription.js +104 -8
  74. package/package.json +7 -320
  75. package/packageInfo.js +1 -1
  76. package/services/balance-service/helpers/subscribe/substrate/index.js +2 -4
  77. package/services/campaign-service/index.js +6 -9
  78. package/services/chain-service/constants.d.ts +12 -0
  79. package/services/chain-service/constants.js +14 -0
  80. package/services/chain-service/index.js +2 -5
  81. package/services/chain-service/utils.d.ts +0 -1
  82. package/services/chain-service/utils.js +1 -5
  83. package/services/event-service/index.d.ts +0 -2
  84. package/services/event-service/index.js +0 -5
  85. package/services/event-service/types.d.ts +0 -9
  86. package/services/keyring-service/index.d.ts +1 -2
  87. package/services/keyring-service/index.js +2 -14
  88. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  89. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  90. package/services/migration-service/scripts/index.js +1 -6
  91. package/services/notification-service/NotificationService.js +1 -1
  92. package/services/storage-service/DatabaseService.d.ts +1 -22
  93. package/services/storage-service/DatabaseService.js +0 -63
  94. package/services/storage-service/databases/index.d.ts +1 -3
  95. package/services/storage-service/databases/index.js +0 -4
  96. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  97. package/services/subscan-service/index.d.ts +2 -3
  98. package/services/subscan-service/index.js +0 -15
  99. package/services/subscan-service/types.d.ts +0 -20
  100. package/services/transaction-service/event-parser/index.d.ts +1 -3
  101. package/services/transaction-service/event-parser/index.js +1 -57
  102. package/services/transaction-service/helpers/index.js +1 -3
  103. package/services/transaction-service/index.d.ts +13 -6
  104. package/services/transaction-service/index.js +73 -247
  105. package/services/transaction-service/types.d.ts +0 -2
  106. package/services/transaction-service/utils.js +0 -1
  107. package/types/index.d.ts +0 -5
  108. package/types/index.js +1 -5
  109. package/utils/fetchStaticData.js +1 -2
  110. package/utils/index.d.ts +0 -5
  111. package/utils/index.js +0 -52
  112. package/utils/number.d.ts +1 -2
  113. package/utils/number.js +1 -2
  114. package/cjs/koni/api/dotsama/balance.js +0 -464
  115. package/cjs/koni/api/nft/ordinal_nft/constants.js +0 -21
  116. package/cjs/koni/api/nft/ordinal_nft/index.js +0 -121
  117. package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
  118. package/cjs/koni/api/yield/helper/utils.js +0 -46
  119. package/cjs/services/earning-service/constants/chains.js +0 -30
  120. package/cjs/services/earning-service/constants/index.js +0 -27
  121. package/cjs/services/earning-service/constants/step.js +0 -18
  122. package/cjs/services/earning-service/handlers/base.js +0 -262
  123. package/cjs/services/earning-service/handlers/index.js +0 -60
  124. package/cjs/services/earning-service/handlers/lending/base.js +0 -81
  125. package/cjs/services/earning-service/handlers/lending/index.js +0 -13
  126. package/cjs/services/earning-service/handlers/lending/interlay.js +0 -192
  127. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -240
  128. package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -97
  129. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +0 -140
  130. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -298
  131. package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -34
  132. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -227
  133. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -404
  134. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +0 -434
  135. package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -466
  136. package/cjs/services/earning-service/handlers/native-staking/base-para.js +0 -146
  137. package/cjs/services/earning-service/handlers/native-staking/base.js +0 -161
  138. package/cjs/services/earning-service/handlers/native-staking/index.js +0 -34
  139. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -390
  140. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +0 -567
  141. package/cjs/services/earning-service/handlers/nomination-pool/index.js +0 -566
  142. package/cjs/services/earning-service/handlers/special.js +0 -493
  143. package/cjs/services/earning-service/service.js +0 -740
  144. package/cjs/services/earning-service/utils/index.js +0 -128
  145. package/cjs/services/migration-service/scripts/DeleteEarningData.js +0 -21
  146. package/cjs/services/migration-service/scripts/EnableEarningChains.js +0 -21
  147. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
  148. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
  149. package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
  150. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -21
  151. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -21
  152. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -149
  153. package/cjs/services/mint-campaign-service/campaigns/index.js +0 -13
  154. package/cjs/services/mint-campaign-service/constants.js +0 -11
  155. package/cjs/services/mint-campaign-service/index.js +0 -18
  156. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +0 -36
  157. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +0 -71
  158. package/cjs/services/storage-service/index.js +0 -241
  159. package/cjs/types/campaigns/index.js +0 -16
  160. package/cjs/types/campaigns/unlock-dot.js +0 -1
  161. package/cjs/types/ordinal.js +0 -1
  162. package/cjs/types/transaction.js +0 -1
  163. package/cjs/types/yield/actions/index.js +0 -27
  164. package/cjs/types/yield/actions/join/index.js +0 -38
  165. package/cjs/types/yield/actions/join/step.js +0 -47
  166. package/cjs/types/yield/actions/join/submit.js +0 -1
  167. package/cjs/types/yield/actions/join/validate.js +0 -16
  168. package/cjs/types/yield/actions/others.js +0 -1
  169. package/cjs/types/yield/index.js +0 -27
  170. package/cjs/types/yield/info/account/index.js +0 -49
  171. package/cjs/types/yield/info/account/info.js +0 -1
  172. package/cjs/types/yield/info/account/reward.js +0 -1
  173. package/cjs/types/yield/info/account/target.js +0 -32
  174. package/cjs/types/yield/info/account/unstake.js +0 -27
  175. package/cjs/types/yield/info/base.js +0 -41
  176. package/cjs/types/yield/info/chain/index.js +0 -27
  177. package/cjs/types/yield/info/chain/info.js +0 -1
  178. package/cjs/types/yield/info/chain/target.js +0 -1
  179. package/cjs/types/yield/info/index.js +0 -49
  180. package/cjs/types/yield/info/pallet.js +0 -15
  181. package/cjs/types.js +0 -1
  182. package/cjs/utils/address.js +0 -34
  183. package/cjs/utils/keyring.js +0 -57
  184. package/cjs/utils/object.js +0 -12
  185. package/koni/api/nft/ordinal_nft/constants.d.ts +0 -9
  186. package/koni/api/nft/ordinal_nft/constants.js +0 -12
  187. package/koni/api/nft/ordinal_nft/index.d.ts +0 -8
  188. package/koni/api/nft/ordinal_nft/index.js +0 -114
  189. package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
  190. package/koni/api/nft/ordinal_nft/utils.js +0 -33
  191. package/koni/api/yield/helper/utils.d.ts +0 -10
  192. package/koni/api/yield/helper/utils.js +0 -32
  193. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +0 -1235
  194. package/services/earning-service/constants/abis/st_liquid_token_abi.json +0 -1355
  195. package/services/earning-service/constants/chains.d.ts +0 -15
  196. package/services/earning-service/constants/chains.js +0 -22
  197. package/services/earning-service/constants/index.d.ts +0 -2
  198. package/services/earning-service/constants/index.js +0 -5
  199. package/services/earning-service/constants/step.d.ts +0 -3
  200. package/services/earning-service/constants/step.js +0 -10
  201. package/services/earning-service/handlers/base.d.ts +0 -113
  202. package/services/earning-service/handlers/base.js +0 -256
  203. package/services/earning-service/handlers/index.d.ts +0 -5
  204. package/services/earning-service/handlers/index.js +0 -8
  205. package/services/earning-service/handlers/lending/base.d.ts +0 -8
  206. package/services/earning-service/handlers/lending/base.js +0 -73
  207. package/services/earning-service/handlers/lending/index.d.ts +0 -1
  208. package/services/earning-service/handlers/lending/index.js +0 -4
  209. package/services/earning-service/handlers/lending/interlay.d.ts +0 -24
  210. package/services/earning-service/handlers/lending/interlay.js +0 -184
  211. package/services/earning-service/handlers/liquid-staking/acala.d.ts +0 -27
  212. package/services/earning-service/handlers/liquid-staking/acala.js +0 -232
  213. package/services/earning-service/handlers/liquid-staking/base.d.ts +0 -11
  214. package/services/earning-service/handlers/liquid-staking/base.js +0 -89
  215. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +0 -46
  216. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -287
  217. package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -4
  218. package/services/earning-service/handlers/liquid-staking/index.js +0 -7
  219. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +0 -26
  220. package/services/earning-service/handlers/liquid-staking/parallel.js +0 -219
  221. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +0 -34
  222. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -394
  223. package/services/earning-service/handlers/native-staking/amplitude.d.ts +0 -22
  224. package/services/earning-service/handlers/native-staking/amplitude.js +0 -425
  225. package/services/earning-service/handlers/native-staking/astar.d.ts +0 -19
  226. package/services/earning-service/handlers/native-staking/astar.js +0 -456
  227. package/services/earning-service/handlers/native-staking/base-para.d.ts +0 -11
  228. package/services/earning-service/handlers/native-staking/base-para.js +0 -138
  229. package/services/earning-service/handlers/native-staking/base.d.ts +0 -21
  230. package/services/earning-service/handlers/native-staking/base.js +0 -152
  231. package/services/earning-service/handlers/native-staking/index.d.ts +0 -4
  232. package/services/earning-service/handlers/native-staking/index.js +0 -7
  233. package/services/earning-service/handlers/native-staking/para-chain.d.ts +0 -15
  234. package/services/earning-service/handlers/native-staking/para-chain.js +0 -382
  235. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -21
  236. package/services/earning-service/handlers/native-staking/relay-chain.js +0 -558
  237. package/services/earning-service/handlers/nomination-pool/index.d.ts +0 -36
  238. package/services/earning-service/handlers/nomination-pool/index.js +0 -556
  239. package/services/earning-service/handlers/special.d.ts +0 -64
  240. package/services/earning-service/handlers/special.js +0 -485
  241. package/services/earning-service/service.d.ts +0 -94
  242. package/services/earning-service/service.js +0 -729
  243. package/services/earning-service/utils/index.d.ts +0 -18
  244. package/services/earning-service/utils/index.js +0 -112
  245. package/services/migration-service/scripts/DeleteEarningData.d.ts +0 -4
  246. package/services/migration-service/scripts/DeleteEarningData.js +0 -13
  247. package/services/migration-service/scripts/EnableEarningChains.d.ts +0 -4
  248. package/services/migration-service/scripts/EnableEarningChains.js +0 -13
  249. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +0 -4
  250. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -13
  251. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +0 -4
  252. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -13
  253. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +0 -13
  254. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -139
  255. package/services/mint-campaign-service/campaigns/index.d.ts +0 -1
  256. package/services/mint-campaign-service/campaigns/index.js +0 -4
  257. package/services/mint-campaign-service/constants.d.ts +0 -1
  258. package/services/mint-campaign-service/constants.js +0 -4
  259. package/services/mint-campaign-service/index.d.ts +0 -7
  260. package/services/mint-campaign-service/index.js +0 -11
  261. package/services/storage-service/db-stores/YieldPoolStore.d.ts +0 -10
  262. package/services/storage-service/db-stores/YieldPoolStore.js +0 -28
  263. package/services/storage-service/db-stores/YieldPositionStore.d.ts +0 -11
  264. package/services/storage-service/db-stores/YieldPositionStore.js +0 -63
  265. package/types/campaigns/index.d.ts +0 -1
  266. package/types/campaigns/index.js +0 -4
  267. package/types/campaigns/unlock-dot.d.ts +0 -71
  268. package/types/campaigns/unlock-dot.js +0 -1
  269. package/types/ordinal.d.ts +0 -69
  270. package/types/ordinal.js +0 -1
  271. package/types/transaction.d.ts +0 -3
  272. package/types/transaction.js +0 -1
  273. package/types/yield/actions/index.d.ts +0 -2
  274. package/types/yield/actions/index.js +0 -5
  275. package/types/yield/actions/join/index.d.ts +0 -3
  276. package/types/yield/actions/join/index.js +0 -6
  277. package/types/yield/actions/join/step.d.ts +0 -95
  278. package/types/yield/actions/join/step.js +0 -46
  279. package/types/yield/actions/join/submit.d.ts +0 -58
  280. package/types/yield/actions/join/submit.js +0 -1
  281. package/types/yield/actions/join/validate.d.ts +0 -18
  282. package/types/yield/actions/join/validate.js +0 -10
  283. package/types/yield/actions/others.d.ts +0 -85
  284. package/types/yield/actions/others.js +0 -1
  285. package/types/yield/index.d.ts +0 -2
  286. package/types/yield/index.js +0 -5
  287. package/types/yield/info/account/index.d.ts +0 -4
  288. package/types/yield/info/account/index.js +0 -7
  289. package/types/yield/info/account/info.d.ts +0 -92
  290. package/types/yield/info/account/info.js +0 -1
  291. package/types/yield/info/account/reward.d.ts +0 -47
  292. package/types/yield/info/account/reward.js +0 -1
  293. package/types/yield/info/account/target.d.ts +0 -43
  294. package/types/yield/info/account/target.js +0 -27
  295. package/types/yield/info/account/unstake.d.ts +0 -31
  296. package/types/yield/info/account/unstake.js +0 -22
  297. package/types/yield/info/base.d.ts +0 -45
  298. package/types/yield/info/base.js +0 -36
  299. package/types/yield/info/chain/index.d.ts +0 -2
  300. package/types/yield/info/chain/index.js +0 -5
  301. package/types/yield/info/chain/info.d.ts +0 -252
  302. package/types/yield/info/chain/info.js +0 -1
  303. package/types/yield/info/chain/target.d.ts +0 -37
  304. package/types/yield/info/chain/target.js +0 -1
  305. package/types/yield/info/index.d.ts +0 -4
  306. package/types/yield/info/index.js +0 -7
  307. package/types/yield/info/pallet.d.ts +0 -143
  308. package/types/yield/info/pallet.js +0 -9
  309. package/utils/object.d.ts +0 -1
  310. 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
  }