@subwallet/extension-base 1.1.29-0 → 1.1.29-beta.1

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 (293) hide show
  1. package/background/KoniTypes.d.ts +95 -68
  2. package/background/KoniTypes.js +16 -13
  3. package/background/errors/TransactionError.js +9 -0
  4. package/cjs/background/KoniTypes.js +17 -16
  5. package/cjs/background/errors/TransactionError.js +9 -0
  6. package/cjs/constants/index.js +19 -4
  7. package/cjs/koni/api/nft/config.js +33 -23
  8. package/cjs/koni/api/nft/index.js +14 -0
  9. package/cjs/koni/api/nft/nft.js +1 -22
  10. package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
  11. package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
  12. package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
  13. package/cjs/koni/api/staking/bonding/amplitude.js +17 -15
  14. package/cjs/koni/api/staking/bonding/astar.js +11 -10
  15. package/cjs/koni/api/staking/bonding/index.js +4 -1
  16. package/cjs/koni/api/staking/bonding/paraChain.js +25 -23
  17. package/cjs/koni/api/staking/bonding/relayChain.js +48 -45
  18. package/cjs/koni/api/staking/bonding/utils.js +104 -86
  19. package/cjs/koni/api/staking/index.js +6 -5
  20. package/cjs/koni/api/staking/paraChain.js +6 -5
  21. package/cjs/koni/api/staking/relayChain.js +3 -2
  22. package/cjs/koni/api/yield/helper/utils.js +46 -0
  23. package/cjs/koni/background/cron.js +11 -1
  24. package/cjs/koni/background/handlers/Extension.js +362 -69
  25. package/cjs/koni/background/handlers/State.js +51 -3
  26. package/cjs/koni/background/handlers/index.js +4 -2
  27. package/cjs/koni/background/subscription.js +95 -37
  28. package/cjs/services/campaign-service/index.js +9 -6
  29. package/cjs/services/chain-service/constants.js +2 -16
  30. package/cjs/services/chain-service/utils.js +7 -1
  31. package/cjs/services/earning-service/constants/chains.js +29 -0
  32. package/cjs/services/earning-service/constants/index.js +27 -0
  33. package/cjs/services/earning-service/constants/step.js +18 -0
  34. package/cjs/services/earning-service/handlers/base.js +232 -0
  35. package/cjs/services/earning-service/handlers/index.js +60 -0
  36. package/cjs/services/earning-service/handlers/lending/base.js +20 -0
  37. package/cjs/services/earning-service/handlers/lending/index.js +13 -0
  38. package/cjs/services/earning-service/handlers/lending/interlay.js +184 -0
  39. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +217 -0
  40. package/cjs/services/earning-service/handlers/liquid-staking/base.js +43 -0
  41. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +283 -0
  42. package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
  43. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +196 -0
  44. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +409 -0
  45. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +382 -0
  46. package/cjs/services/earning-service/handlers/native-staking/astar.js +459 -0
  47. package/cjs/services/earning-service/handlers/native-staking/base-para.js +137 -0
  48. package/cjs/services/earning-service/handlers/native-staking/base.js +159 -0
  49. package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
  50. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +383 -0
  51. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +542 -0
  52. package/cjs/services/earning-service/handlers/nomination-pool/index.js +541 -0
  53. package/cjs/services/earning-service/handlers/special.js +411 -0
  54. package/cjs/services/earning-service/service.js +387 -0
  55. package/cjs/services/earning-service/utils/index.js +128 -0
  56. package/cjs/services/event-service/index.js +4 -0
  57. package/cjs/services/keyring-service/index.js +14 -2
  58. package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
  59. package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
  60. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  61. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  62. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +21 -0
  63. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +21 -0
  64. package/cjs/services/migration-service/scripts/index.js +7 -1
  65. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
  66. package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
  67. package/cjs/services/mint-campaign-service/constants.js +11 -0
  68. package/cjs/services/mint-campaign-service/index.js +18 -0
  69. package/cjs/services/notification-service/NotificationService.js +1 -1
  70. package/cjs/services/storage-service/DatabaseService.js +51 -0
  71. package/cjs/services/storage-service/databases/index.js +4 -0
  72. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  73. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
  74. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +65 -0
  75. package/cjs/services/subscan-service/index.js +16 -0
  76. package/cjs/services/transaction-service/event-parser/index.js +58 -0
  77. package/cjs/services/transaction-service/helpers/index.js +3 -1
  78. package/cjs/services/transaction-service/index.js +185 -74
  79. package/cjs/services/transaction-service/utils.js +1 -0
  80. package/cjs/types/campaigns/index.js +16 -0
  81. package/cjs/types/campaigns/unlock-dot.js +1 -0
  82. package/cjs/types/index.js +44 -0
  83. package/cjs/types/ordinal.js +1 -0
  84. package/cjs/types/transaction.js +1 -0
  85. package/cjs/types/yield/actions/index.js +27 -0
  86. package/cjs/types/yield/actions/join/index.js +38 -0
  87. package/cjs/types/yield/actions/join/step.js +47 -0
  88. package/cjs/types/yield/actions/join/submit.js +1 -0
  89. package/cjs/types/yield/actions/join/validate.js +16 -0
  90. package/cjs/types/yield/actions/others.js +1 -0
  91. package/cjs/types/yield/index.js +27 -0
  92. package/cjs/types/yield/info/account/index.js +49 -0
  93. package/cjs/types/yield/info/account/info.js +1 -0
  94. package/cjs/types/yield/info/account/reward.js +1 -0
  95. package/cjs/types/yield/info/account/target.js +32 -0
  96. package/cjs/types/yield/info/account/unstake.js +27 -0
  97. package/cjs/types/yield/info/base.js +41 -0
  98. package/cjs/types/yield/info/chain/index.js +27 -0
  99. package/cjs/types/yield/info/chain/info.js +1 -0
  100. package/cjs/types/yield/info/chain/target.js +1 -0
  101. package/cjs/types/yield/info/index.js +49 -0
  102. package/cjs/types/yield/info/pallet.js +15 -0
  103. package/cjs/utils/fetchStaticData.js +2 -1
  104. package/cjs/utils/index.js +89 -1
  105. package/cjs/utils/object.js +12 -0
  106. package/cjs/utils/yield/index.js +3 -0
  107. package/constants/index.d.ts +6 -1
  108. package/constants/index.js +6 -1
  109. package/koni/api/nft/config.js +33 -23
  110. package/koni/api/nft/index.js +15 -1
  111. package/koni/api/nft/nft.js +2 -23
  112. package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
  113. package/koni/api/nft/ordinal_nft/constants.js +12 -0
  114. package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
  115. package/koni/api/nft/ordinal_nft/index.js +114 -0
  116. package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
  117. package/koni/api/nft/ordinal_nft/utils.js +33 -0
  118. package/koni/api/staking/bonding/amplitude.js +11 -9
  119. package/koni/api/staking/bonding/astar.js +9 -8
  120. package/koni/api/staking/bonding/index.d.ts +1 -1
  121. package/koni/api/staking/bonding/index.js +5 -1
  122. package/koni/api/staking/bonding/paraChain.js +12 -10
  123. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  124. package/koni/api/staking/bonding/relayChain.js +33 -30
  125. package/koni/api/staking/bonding/utils.d.ts +15 -38
  126. package/koni/api/staking/bonding/utils.js +85 -69
  127. package/koni/api/staking/index.js +2 -1
  128. package/koni/api/staking/paraChain.js +7 -6
  129. package/koni/api/staking/relayChain.js +4 -3
  130. package/koni/api/yield/helper/utils.d.ts +10 -0
  131. package/koni/api/yield/helper/utils.js +32 -0
  132. package/koni/background/cron.d.ts +1 -0
  133. package/koni/background/cron.js +12 -2
  134. package/koni/background/handlers/Extension.d.ts +17 -1
  135. package/koni/background/handlers/Extension.js +321 -30
  136. package/koni/background/handlers/State.d.ts +18 -2
  137. package/koni/background/handlers/State.js +50 -3
  138. package/koni/background/handlers/index.js +4 -2
  139. package/koni/background/subscription.d.ts +6 -1
  140. package/koni/background/subscription.js +97 -38
  141. package/package.json +316 -3
  142. package/services/campaign-service/index.js +9 -6
  143. package/services/chain-service/constants.d.ts +0 -11
  144. package/services/chain-service/constants.js +1 -14
  145. package/services/chain-service/utils.d.ts +1 -0
  146. package/services/chain-service/utils.js +5 -1
  147. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
  148. package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
  149. package/services/earning-service/constants/chains.d.ts +14 -0
  150. package/services/earning-service/constants/chains.js +21 -0
  151. package/services/earning-service/constants/index.d.ts +2 -0
  152. package/services/earning-service/constants/index.js +5 -0
  153. package/services/earning-service/constants/step.d.ts +3 -0
  154. package/services/earning-service/constants/step.js +10 -0
  155. package/services/earning-service/handlers/base.d.ts +112 -0
  156. package/services/earning-service/handlers/base.js +226 -0
  157. package/services/earning-service/handlers/index.d.ts +5 -0
  158. package/services/earning-service/handlers/index.js +8 -0
  159. package/services/earning-service/handlers/lending/base.d.ts +6 -0
  160. package/services/earning-service/handlers/lending/base.js +12 -0
  161. package/services/earning-service/handlers/lending/index.d.ts +1 -0
  162. package/services/earning-service/handlers/lending/index.js +4 -0
  163. package/services/earning-service/handlers/lending/interlay.d.ts +23 -0
  164. package/services/earning-service/handlers/lending/interlay.js +176 -0
  165. package/services/earning-service/handlers/liquid-staking/acala.d.ts +26 -0
  166. package/services/earning-service/handlers/liquid-staking/acala.js +209 -0
  167. package/services/earning-service/handlers/liquid-staking/base.d.ts +9 -0
  168. package/services/earning-service/handlers/liquid-staking/base.js +35 -0
  169. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +45 -0
  170. package/services/earning-service/handlers/liquid-staking/bifrost.js +272 -0
  171. package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
  172. package/services/earning-service/handlers/liquid-staking/index.js +7 -0
  173. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +25 -0
  174. package/services/earning-service/handlers/liquid-staking/parallel.js +188 -0
  175. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +34 -0
  176. package/services/earning-service/handlers/liquid-staking/stella-swap.js +399 -0
  177. package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
  178. package/services/earning-service/handlers/native-staking/amplitude.js +373 -0
  179. package/services/earning-service/handlers/native-staking/astar.d.ts +19 -0
  180. package/services/earning-service/handlers/native-staking/astar.js +449 -0
  181. package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
  182. package/services/earning-service/handlers/native-staking/base-para.js +129 -0
  183. package/services/earning-service/handlers/native-staking/base.d.ts +21 -0
  184. package/services/earning-service/handlers/native-staking/base.js +150 -0
  185. package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
  186. package/services/earning-service/handlers/native-staking/index.js +7 -0
  187. package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
  188. package/services/earning-service/handlers/native-staking/para-chain.js +375 -0
  189. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
  190. package/services/earning-service/handlers/native-staking/relay-chain.js +533 -0
  191. package/services/earning-service/handlers/nomination-pool/index.d.ts +35 -0
  192. package/services/earning-service/handlers/nomination-pool/index.js +531 -0
  193. package/services/earning-service/handlers/special.d.ts +56 -0
  194. package/services/earning-service/handlers/special.js +403 -0
  195. package/services/earning-service/service.d.ts +45 -0
  196. package/services/earning-service/service.js +379 -0
  197. package/services/earning-service/utils/index.d.ts +18 -0
  198. package/services/earning-service/utils/index.js +112 -0
  199. package/services/event-service/index.d.ts +1 -0
  200. package/services/event-service/index.js +4 -0
  201. package/services/event-service/types.d.ts +8 -0
  202. package/services/keyring-service/index.d.ts +2 -1
  203. package/services/keyring-service/index.js +14 -2
  204. package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
  205. package/services/migration-service/scripts/DeleteEarningData.js +13 -0
  206. package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
  207. package/services/migration-service/scripts/EnableEarningChains.js +13 -0
  208. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  209. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  210. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +4 -0
  211. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +13 -0
  212. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +4 -0
  213. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +13 -0
  214. package/services/migration-service/scripts/index.js +7 -1
  215. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
  216. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
  217. package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
  218. package/services/mint-campaign-service/campaigns/index.js +4 -0
  219. package/services/mint-campaign-service/constants.d.ts +1 -0
  220. package/services/mint-campaign-service/constants.js +4 -0
  221. package/services/mint-campaign-service/index.d.ts +7 -0
  222. package/services/mint-campaign-service/index.js +11 -0
  223. package/services/notification-service/NotificationService.js +1 -1
  224. package/services/storage-service/DatabaseService.d.ts +18 -1
  225. package/services/storage-service/DatabaseService.js +51 -0
  226. package/services/storage-service/databases/index.d.ts +3 -1
  227. package/services/storage-service/databases/index.js +4 -0
  228. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  229. package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
  230. package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
  231. package/services/storage-service/db-stores/YieldPositionStore.d.ts +9 -0
  232. package/services/storage-service/db-stores/YieldPositionStore.js +57 -0
  233. package/services/subscan-service/index.d.ts +3 -2
  234. package/services/subscan-service/index.js +15 -0
  235. package/services/subscan-service/types.d.ts +20 -0
  236. package/services/transaction-service/event-parser/index.d.ts +3 -1
  237. package/services/transaction-service/event-parser/index.js +57 -1
  238. package/services/transaction-service/helpers/index.js +3 -1
  239. package/services/transaction-service/index.d.ts +4 -15
  240. package/services/transaction-service/index.js +183 -72
  241. package/services/transaction-service/types.d.ts +2 -0
  242. package/services/transaction-service/utils.js +1 -0
  243. package/types/campaigns/index.d.ts +1 -0
  244. package/types/campaigns/index.js +4 -0
  245. package/types/campaigns/unlock-dot.d.ts +71 -0
  246. package/types/campaigns/unlock-dot.js +1 -0
  247. package/types/index.d.ts +5 -0
  248. package/types/index.js +5 -1
  249. package/types/ordinal.d.ts +69 -0
  250. package/types/ordinal.js +1 -0
  251. package/types/transaction.d.ts +3 -0
  252. package/types/transaction.js +1 -0
  253. package/types/yield/actions/index.d.ts +2 -0
  254. package/types/yield/actions/index.js +5 -0
  255. package/types/yield/actions/join/index.d.ts +3 -0
  256. package/types/yield/actions/join/index.js +6 -0
  257. package/types/yield/actions/join/step.d.ts +94 -0
  258. package/types/yield/actions/join/step.js +46 -0
  259. package/types/yield/actions/join/submit.d.ts +53 -0
  260. package/types/yield/actions/join/submit.js +1 -0
  261. package/types/yield/actions/join/validate.d.ts +18 -0
  262. package/types/yield/actions/join/validate.js +10 -0
  263. package/types/yield/actions/others.d.ts +63 -0
  264. package/types/yield/actions/others.js +1 -0
  265. package/types/yield/index.d.ts +2 -0
  266. package/types/yield/index.js +5 -0
  267. package/types/yield/info/account/index.d.ts +4 -0
  268. package/types/yield/info/account/index.js +7 -0
  269. package/types/yield/info/account/info.d.ts +92 -0
  270. package/types/yield/info/account/info.js +1 -0
  271. package/types/yield/info/account/reward.d.ts +45 -0
  272. package/types/yield/info/account/reward.js +1 -0
  273. package/types/yield/info/account/target.d.ts +43 -0
  274. package/types/yield/info/account/target.js +27 -0
  275. package/types/yield/info/account/unstake.d.ts +31 -0
  276. package/types/yield/info/account/unstake.js +22 -0
  277. package/types/yield/info/base.d.ts +45 -0
  278. package/types/yield/info/base.js +36 -0
  279. package/types/yield/info/chain/index.d.ts +2 -0
  280. package/types/yield/info/chain/index.js +5 -0
  281. package/types/yield/info/chain/info.d.ts +243 -0
  282. package/types/yield/info/chain/info.js +1 -0
  283. package/types/yield/info/chain/target.d.ts +37 -0
  284. package/types/yield/info/chain/target.js +1 -0
  285. package/types/yield/info/index.d.ts +4 -0
  286. package/types/yield/info/index.js +7 -0
  287. package/types/yield/info/pallet.d.ts +143 -0
  288. package/types/yield/info/pallet.js +9 -0
  289. package/utils/fetchStaticData.js +2 -1
  290. package/utils/index.d.ts +5 -0
  291. package/utils/index.js +53 -1
  292. package/utils/object.d.ts +1 -0
  293. package/utils/object.js +6 -0
@@ -14,10 +14,12 @@ 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';
17
18
  import { EventService } from '@subwallet/extension-base/services/event-service';
18
19
  import { HistoryService } from '@subwallet/extension-base/services/history-service';
19
20
  import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
20
21
  import MigrationService from '@subwallet/extension-base/services/migration-service';
22
+ import MintCampaignService from '@subwallet/extension-base/services/mint-campaign-service';
21
23
  import NotificationService from '@subwallet/extension-base/services/notification-service/NotificationService';
22
24
  import { PriceService } from '@subwallet/extension-base/services/price-service';
23
25
  import RequestService from '@subwallet/extension-base/services/request-service';
@@ -75,6 +77,10 @@ export default class KoniState {
75
77
  ready: false,
76
78
  data: {}
77
79
  };
80
+
81
+ // earning
82
+ yieldPoolInfoSubject = new Subject();
83
+ yieldPositionSubject = new Subject();
78
84
  lazyMap = {};
79
85
  // Handle the general status of the extension
80
86
  generalStatus = ServiceStatus.INITIALIZING;
@@ -93,11 +99,13 @@ export default class KoniState {
93
99
  this.priceService = new PriceService(this.dbService, this.eventService, this.chainService);
94
100
  this.balanceService = new BalanceService(this);
95
101
  this.historyService = new HistoryService(this.dbService, this.chainService, this.eventService, this.keyringService, this.subscanService);
96
- this.transactionService = new TransactionService(this.chainService, this.eventService, this.requestService, this.balanceService, this.historyService, this.notificationService, this.dbService);
102
+ this.mintCampaignService = new MintCampaignService(this);
97
103
  this.walletConnectService = new WalletConnectService(this, this.requestService);
98
104
  this.migrationService = new MigrationService(this, this.eventService);
99
105
  this.campaignService = new CampaignService(this);
100
106
  this.buyService = new BuyService(this);
107
+ this.transactionService = new TransactionService(this);
108
+ this.earningService = new EarningService(this);
101
109
  this.subscription = new KoniSubscription(this, this.dbService);
102
110
  this.cron = new KoniCron(this, this.subscription, this.dbService);
103
111
  this.logger = createLogger('State');
@@ -240,6 +248,7 @@ export default class KoniState {
240
248
  }
241
249
  async startSubscription() {
242
250
  await this.eventService.waitKeyringReady;
251
+ await this.eventService.waitAssetReady;
243
252
  this.dbService.subscribeChainStakingMetadata([], data => {
244
253
  this.chainStakingMetadataSubject.next(data);
245
254
  });
@@ -250,8 +259,8 @@ export default class KoniState {
250
259
  this.keyringService.accountSubject.subscribe(accounts => {
251
260
  // TODO: improve this
252
261
  unsub && unsub.unsubscribe();
253
- unsub = this.dbService.subscribeNominatorMetadata(Object.keys(accounts), data => {
254
- this.stakingNominatorMetadataSubject.next(data);
262
+ unsub = this.dbService.subscribeYieldPosition(Object.keys(accounts), data => {
263
+ this.yieldPositionSubject.next(data);
255
264
  });
256
265
  });
257
266
  }
@@ -343,6 +352,22 @@ export default class KoniState {
343
352
  async getPooledStakingRecordsByAddress(addresses) {
344
353
  return this.dbService.getPooledStakings(addresses, this.activeChainSlugs);
345
354
  }
355
+ async getPooledPositionByAddress(addresses) {
356
+ return this.dbService.getYieldNominationPoolPosition(addresses, this.activeChainSlugs);
357
+ }
358
+ subscribeYieldPoolInfo() {
359
+ return this.yieldPoolInfoSubject;
360
+ }
361
+ subscribeYieldPosition() {
362
+ return this.yieldPositionSubject;
363
+ }
364
+ getYieldPoolInfo() {
365
+ return this.dbService.getYieldPools();
366
+ }
367
+ getYieldPositionInfo() {
368
+ const addresses = this.getDecodedAddresses(this.keyringService.currentAccount.address);
369
+ return this.dbService.getYieldPositionByAddress(addresses);
370
+ }
346
371
  subscribeMantaPayConfig() {
347
372
  return this.mantaPayConfigSubject;
348
373
  }
@@ -1741,4 +1766,26 @@ export default class KoniState {
1741
1766
  specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
1742
1767
  };
1743
1768
  }
1769
+ updateYieldPoolInfo(data) {
1770
+ this.dbService.updateYieldPoolStore(data).catch(e => this.logger.warn(e));
1771
+ }
1772
+ resetYieldPoolInfo(chains) {
1773
+ this.dbService.subscribeYieldPoolInfo(chains, data => {
1774
+ // TODO: no unsub
1775
+ this.yieldPoolInfoSubject.next(data);
1776
+ });
1777
+ }
1778
+ updateYieldPosition(data) {
1779
+ this.dbService.updateYieldPosition(data).catch(e => this.logger.warn(e));
1780
+ }
1781
+ getYieldPoolStakingInfo(chain, poolType) {
1782
+ return this.dbService.getYieldPoolStakingInfo(chain, poolType);
1783
+ }
1784
+ getCrowdloanContributions({
1785
+ address,
1786
+ page,
1787
+ relayChain
1788
+ }) {
1789
+ return this.subscanService.getCrowdloanContributions(relayChain, address, page);
1790
+ }
1744
1791
  }
@@ -58,7 +58,8 @@ export default function handlers({
58
58
  assert(port, 'Port has been disconnected');
59
59
  port.postMessage({
60
60
  id,
61
- response
61
+ response,
62
+ sender: 'BACKGROUND'
62
63
  });
63
64
  }).catch(error => {
64
65
  console.error(error);
@@ -70,7 +71,8 @@ export default function handlers({
70
71
  error: error.message,
71
72
  errorCode: error.code,
72
73
  errorData: error.data,
73
- id
74
+ id,
75
+ sender: 'BACKGROUND'
74
76
  });
75
77
  }
76
78
  });
@@ -1,8 +1,9 @@
1
1
  import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
2
+ import { SubstrateApi } from '@subwallet/extension-base/services/chain-service/handler/SubstrateApi';
2
3
  import { _ChainState, _EvmApi, _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
3
4
  import DatabaseService from '@subwallet/extension-base/services/storage-service/DatabaseService';
4
5
  import KoniState from './handlers/State';
5
- declare type SubscriptionName = 'balance' | 'crowdloan' | 'stakingOnChain' | 'essentialChainStakingMetadata';
6
+ declare type SubscriptionName = 'balance' | 'crowdloan' | 'stakingOnChain' | 'essentialChainStakingMetadata' | 'yieldPoolStats' | 'yieldPosition';
6
7
  export declare class KoniSubscription {
7
8
  private eventHandler?;
8
9
  private subscriptionMap;
@@ -18,6 +19,9 @@ export declare class KoniSubscription {
18
19
  stop(): Promise<void>;
19
20
  subscribeBalances(address: string, chainInfoMap: Record<string, _ChainInfo>, chainStateMap: Record<string, _ChainState>, substrateApiMap: Record<string, _SubstrateApi>, web3ApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): void;
20
21
  subscribeCrowdloans(address: string, substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): void;
22
+ subscribeYieldPools(chainInfoMap: Record<string, _ChainInfo>, assetInfoMap: Record<string, _ChainAsset>, substrateApiMap: Record<string, SubstrateApi>, evmApiMap: Record<string, _EvmApi>, address?: string, onlyRunOnFirstTime?: boolean): void;
23
+ initYieldPositionSubscription(addresses: string[], substrateApiMap: Record<string, SubstrateApi>, evmApiMap: Record<string, _EvmApi>, chainInfoMap: Record<string, _ChainInfo>, assetInfoMap: Record<string, _ChainAsset>, onlyRunOnFirstTime?: boolean): () => void;
24
+ initYieldPoolStatsSubscription(substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): () => void;
21
25
  subscribeStakingOnChain(address: string, substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): void;
22
26
  initStakingOnChainSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
23
27
  initEssentialChainStakingMetadataSubscription(substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
@@ -27,6 +31,7 @@ export declare class KoniSubscription {
27
31
  initNftSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>): void;
28
32
  subscribeStakingReward(address: string): Promise<void>;
29
33
  subscribeStakingRewardFastInterval(address: string): Promise<void>;
34
+ subscribeEarningRewardHistoryInterval(address: string): Promise<void>;
30
35
  reloadStaking(): Promise<void>;
31
36
  reloadBalance(): Promise<void>;
32
37
  reloadCrowdloan(): Promise<void>;
@@ -2,21 +2,22 @@
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, getPoolingStakingRewardData, stakingOnChainApi } from '@subwallet/extension-base/koni/api/staking';
5
+ import { getNominationStakingRewardData, stakingOnChainApi } from '@subwallet/extension-base/koni/api/staking';
6
6
  import { subscribeEssentialChainStakingMetadata } from '@subwallet/extension-base/koni/api/staking/bonding';
7
- import { getAmplitudeUnclaimedStakingReward } from '@subwallet/extension-base/koni/api/staking/paraChain';
8
7
  import { nftHandler } from '@subwallet/extension-base/koni/background/handlers';
9
8
  import { subscribeBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/balance';
10
9
  import { _isChainEnabled, _isChainSupportSubstrateStaking } from '@subwallet/extension-base/services/chain-service/utils';
11
10
  import { COMMON_RELOAD_EVENTS } from '@subwallet/extension-base/services/event-service/types';
12
11
  import { waitTimeout } from '@subwallet/extension-base/utils';
13
- import { logger as createLogger } from '@polkadot/util';
12
+ import { logger as createLogger, noop } from '@polkadot/util';
14
13
  export class KoniSubscription {
15
14
  subscriptionMap = {
16
15
  crowdloan: undefined,
17
16
  balance: undefined,
18
17
  stakingOnChain: undefined,
19
- essentialChainStakingMetadata: undefined
18
+ essentialChainStakingMetadata: undefined,
19
+ yieldPoolStats: undefined,
20
+ yieldPosition: undefined
20
21
  };
21
22
  constructor(state, dbService) {
22
23
  this.dbService = dbService;
@@ -52,6 +53,7 @@ export class KoniSubscription {
52
53
  var _this$state$keyringSe;
53
54
  await Promise.all([this.state.eventService.waitCryptoReady, this.state.eventService.waitKeyringReady, this.state.eventService.waitAssetReady]);
54
55
  const currentAddress = (_this$state$keyringSe = this.state.keyringService.currentAccount) === null || _this$state$keyringSe === void 0 ? void 0 : _this$state$keyringSe.address;
56
+ this.subscribeYieldPools(this.state.getChainInfoMap(), this.state.getAssetRegistry(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap(), currentAddress);
55
57
  if (currentAddress) {
56
58
  this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
57
59
  this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
@@ -65,6 +67,9 @@ export class KoniSubscription {
65
67
  return;
66
68
  }
67
69
  const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
70
+
71
+ // @ts-ignore
72
+ this.subscribeYieldPools(serviceInfo.chainInfoMap, serviceInfo.assetRegistry, serviceInfo.chainApiMap.substrate, serviceInfo.chainApiMap.evm, address);
68
73
  if (!address) {
69
74
  return;
70
75
  }
@@ -100,6 +105,72 @@ export class KoniSubscription {
100
105
  this.updateSubscription('crowdloan', this.initCrowdloanSubscription(addresses, substrateApiMap, onlyRunOnFirstTime));
101
106
  }).catch(console.error);
102
107
  }
108
+ subscribeYieldPools(chainInfoMap, assetInfoMap, substrateApiMap, evmApiMap, address, onlyRunOnFirstTime) {
109
+ this.updateSubscription('yieldPoolStats', this.initYieldPoolStatsSubscription(substrateApiMap, evmApiMap, onlyRunOnFirstTime));
110
+ if (address) {
111
+ const addresses = this.state.getDecodedAddresses(address);
112
+ if (!addresses.length) {
113
+ return;
114
+ }
115
+ this.updateSubscription('yieldPosition', this.initYieldPositionSubscription(addresses, substrateApiMap, evmApiMap, chainInfoMap, assetInfoMap));
116
+ }
117
+ }
118
+ initYieldPositionSubscription(addresses, substrateApiMap, evmApiMap, chainInfoMap, assetInfoMap, onlyRunOnFirstTime) {
119
+ let cancel = false;
120
+ const updateYieldPoolStats = data => {
121
+ this.state.updateYieldPosition(data);
122
+ };
123
+ let unsub = noop;
124
+ this.state.earningService.subscribePoolPositions(addresses, updateYieldPoolStats).then(rs => {
125
+ if (cancel) {
126
+ rs();
127
+ } else {
128
+ if (onlyRunOnFirstTime) {
129
+ rs && rs();
130
+ } else {
131
+ unsub = rs;
132
+ }
133
+ }
134
+ }).catch(console.error);
135
+ return () => {
136
+ cancel = true;
137
+ unsub && unsub();
138
+ };
139
+ }
140
+ initYieldPoolStatsSubscription(substrateApiMap, evmApiMap, onlyRunOnFirstTime) {
141
+ let cancel = false;
142
+ this.state.resetYieldPoolInfo(Object.keys(this.state.getChainInfoMap()));
143
+ const updateYieldPoolStats = data => {
144
+ this.state.updateYieldPoolInfo(data);
145
+ };
146
+
147
+ // const unsub = subscribeYieldPoolStats(substrateApiMap, evmApiMap, this.state.getActiveChainInfoMap(), this.state.getAssetRegistry(), updateYieldPoolStats);
148
+ let unsub = noop;
149
+ this.state.earningService.subscribePoolsInfo(updateYieldPoolStats).then(rs => {
150
+ if (cancel) {
151
+ rs();
152
+ } else {
153
+ if (onlyRunOnFirstTime) {
154
+ rs && rs();
155
+ } else {
156
+ unsub = rs;
157
+ }
158
+ }
159
+ }).catch(console.error);
160
+
161
+ //
162
+ // if (onlyRunOnFirstTime) {
163
+ // unsub && unsub();
164
+ //
165
+ // return;
166
+ // }
167
+
168
+ return () => {
169
+ cancel = true;
170
+ // unsub && unsub();
171
+ unsub && unsub();
172
+ };
173
+ }
103
174
  subscribeStakingOnChain(address, substrateApiMap, onlyRunOnFirstTime) {
104
175
  this.state.resetStaking(address);
105
176
  const addresses = this.state.getDecodedAddresses(address);
@@ -175,15 +246,11 @@ export class KoniSubscription {
175
246
  this.state.setCrowdloanItem(networkKey, rs);
176
247
  });
177
248
  if (onlyRunOnFirstTime) {
178
- subscriptionPromise.then(unsub => {
179
- unsub && unsub();
180
- }).catch(this.logger.warn);
249
+ subscriptionPromise.then(unsub => unsub === null || unsub === void 0 ? void 0 : unsub()).catch(this.logger.warn);
181
250
  return;
182
251
  }
183
252
  return () => {
184
- subscriptionPromise.then(unsub => {
185
- unsub && unsub();
186
- }).catch(this.logger.warn);
253
+ subscriptionPromise.then(unsub => unsub === null || unsub === void 0 ? void 0 : unsub()).catch(this.logger.warn);
187
254
  };
188
255
  }
189
256
  subscribeNft(address, substrateApiMap, evmApiMap, smartContractNfts, chainInfoMap) {
@@ -222,46 +289,38 @@ export class KoniSubscription {
222
289
  if (!addresses.length) {
223
290
  return;
224
291
  }
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
292
  const updateState = result => {
245
- this.state.updateStakingReward(result);
293
+ this.state.earningService.updateEarningReward(result);
294
+ };
295
+ await Promise.all([this.state.earningService.getPoolReward(addresses, updateState)]);
296
+ }
297
+ async subscribeEarningRewardHistoryInterval(address) {
298
+ const addresses = this.state.getDecodedAddresses(address);
299
+ if (!addresses.length) {
300
+ return;
301
+ }
302
+ const updateState = result => {
303
+ this.state.earningService.updateEarningRewardHistory(result);
246
304
  };
247
- await Promise.all([getPoolingStakingRewardData(pooledAddresses, targetChainMap, this.state.getSubstrateApiMap(), updateState), getAmplitudeUnclaimedStakingReward(this.state.getSubstrateApiMap(), addresses, chainInfoMap, activeNetworks, updateState)]);
305
+ await Promise.all([this.state.earningService.fetchPoolRewardHistory(addresses, updateState)]);
248
306
  }
249
307
  async reloadStaking() {
250
- var _this$state$keyringSe2;
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());
308
+ // const currentAddress = this.state.keyringService.currentAccount?.address;
309
+
310
+ // this.subscribeYieldPools(this.state.getSubstrateApiMap());
311
+
253
312
  await waitTimeout(1800);
254
313
  }
255
314
  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;
315
+ var _this$state$keyringSe2;
316
+ const currentAddress = (_this$state$keyringSe2 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe2 === void 0 ? void 0 : _this$state$keyringSe2.address;
258
317
  await this.state.handleResetBalance(currentAddress, true);
259
318
  this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
260
319
  await waitTimeout(1800);
261
320
  }
262
321
  async reloadCrowdloan() {
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;
322
+ var _this$state$keyringSe3;
323
+ const currentAddress = (_this$state$keyringSe3 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe3 === void 0 ? void 0 : _this$state$keyringSe3.address;
265
324
  this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
266
325
  await waitTimeout(1800);
267
326
  }