@subwallet/extension-base 1.1.28-0 → 1.1.28-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 (292) hide show
  1. package/background/KoniTypes.d.ts +92 -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 +9 -3
  7. package/cjs/koni/api/dotsama/balance.js +464 -0
  8. package/cjs/koni/api/nft/config.js +33 -23
  9. package/cjs/koni/api/nft/index.js +14 -0
  10. package/cjs/koni/api/nft/nft.js +1 -22
  11. package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
  12. package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
  13. package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
  14. package/cjs/koni/api/staking/bonding/amplitude.js +17 -15
  15. package/cjs/koni/api/staking/bonding/astar.js +11 -10
  16. package/cjs/koni/api/staking/bonding/index.js +4 -1
  17. package/cjs/koni/api/staking/bonding/paraChain.js +25 -23
  18. package/cjs/koni/api/staking/bonding/relayChain.js +48 -45
  19. package/cjs/koni/api/staking/bonding/utils.js +104 -86
  20. package/cjs/koni/api/staking/index.js +6 -5
  21. package/cjs/koni/api/staking/paraChain.js +6 -5
  22. package/cjs/koni/api/staking/relayChain.js +3 -2
  23. package/cjs/koni/api/yield/helper/utils.js +46 -0
  24. package/cjs/koni/background/cron.js +2 -0
  25. package/cjs/koni/background/handlers/Extension.js +323 -69
  26. package/cjs/koni/background/handlers/State.js +57 -4
  27. package/cjs/koni/background/handlers/index.js +4 -2
  28. package/cjs/koni/background/subscription.js +89 -19
  29. package/cjs/packageInfo.js +1 -1
  30. package/cjs/services/campaign-service/index.js +9 -6
  31. package/cjs/services/chain-service/constants.js +2 -16
  32. package/cjs/services/chain-service/utils.js +7 -1
  33. package/cjs/services/earning-service/constants/chains.js +29 -0
  34. package/cjs/services/earning-service/constants/index.js +27 -0
  35. package/cjs/services/earning-service/constants/step.js +18 -0
  36. package/cjs/services/earning-service/handlers/base.js +202 -0
  37. package/cjs/services/earning-service/handlers/index.js +60 -0
  38. package/cjs/services/earning-service/handlers/lending/base.js +20 -0
  39. package/cjs/services/earning-service/handlers/lending/index.js +13 -0
  40. package/cjs/services/earning-service/handlers/lending/interlay.js +168 -0
  41. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +196 -0
  42. package/cjs/services/earning-service/handlers/liquid-staking/base.js +39 -0
  43. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +257 -0
  44. package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
  45. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +180 -0
  46. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +373 -0
  47. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +359 -0
  48. package/cjs/services/earning-service/handlers/native-staking/astar.js +426 -0
  49. package/cjs/services/earning-service/handlers/native-staking/base-para.js +137 -0
  50. package/cjs/services/earning-service/handlers/native-staking/base.js +109 -0
  51. package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
  52. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +361 -0
  53. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +512 -0
  54. package/cjs/services/earning-service/handlers/nomination-pool/index.js +501 -0
  55. package/cjs/services/earning-service/handlers/special.js +387 -0
  56. package/cjs/services/earning-service/service.js +327 -0
  57. package/cjs/services/earning-service/utils/index.js +111 -0
  58. package/cjs/services/event-service/index.js +4 -0
  59. package/cjs/services/keyring-service/index.js +14 -2
  60. package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
  61. package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
  62. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +17 -0
  63. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  64. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
  65. package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
  66. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  67. package/cjs/services/migration-service/scripts/index.js +4 -0
  68. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
  69. package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
  70. package/cjs/services/mint-campaign-service/constants.js +11 -0
  71. package/cjs/services/mint-campaign-service/index.js +18 -0
  72. package/cjs/services/notification-service/NotificationService.js +1 -1
  73. package/cjs/services/storage-service/DatabaseService.js +47 -0
  74. package/cjs/services/storage-service/databases/index.js +4 -0
  75. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  76. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
  77. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +65 -0
  78. package/cjs/services/storage-service/index.js +241 -0
  79. package/cjs/services/transaction-service/event-parser/index.js +58 -0
  80. package/cjs/services/transaction-service/helpers/index.js +3 -1
  81. package/cjs/services/transaction-service/index.js +180 -74
  82. package/cjs/services/transaction-service/utils.js +1 -0
  83. package/cjs/types/campaigns/index.js +16 -0
  84. package/cjs/types/campaigns/unlock-dot.js +1 -0
  85. package/cjs/types/index.js +44 -0
  86. package/cjs/types/ordinal.js +1 -0
  87. package/cjs/types/transaction.js +1 -0
  88. package/cjs/types/yield/actions/index.js +27 -0
  89. package/cjs/types/yield/actions/join/index.js +38 -0
  90. package/cjs/types/yield/actions/join/step.js +37 -0
  91. package/cjs/types/yield/actions/join/submit.js +1 -0
  92. package/cjs/types/yield/actions/join/validate.js +16 -0
  93. package/cjs/types/yield/actions/others.js +1 -0
  94. package/cjs/types/yield/index.js +27 -0
  95. package/cjs/types/yield/info/account/index.js +49 -0
  96. package/cjs/types/yield/info/account/info.js +1 -0
  97. package/cjs/types/yield/info/account/reward.js +1 -0
  98. package/cjs/types/yield/info/account/target.js +32 -0
  99. package/cjs/types/yield/info/account/unstake.js +27 -0
  100. package/cjs/types/yield/info/base.js +34 -0
  101. package/cjs/types/yield/info/chain/index.js +27 -0
  102. package/cjs/types/yield/info/chain/info.js +1 -0
  103. package/cjs/types/yield/info/chain/target.js +1 -0
  104. package/cjs/types/yield/info/index.js +49 -0
  105. package/cjs/types/yield/info/pallet.js +15 -0
  106. package/cjs/types.js +1 -0
  107. package/cjs/utils/address.js +34 -0
  108. package/cjs/utils/fetchStaticData.js +2 -1
  109. package/cjs/utils/index.js +89 -1
  110. package/cjs/utils/keyring.js +57 -0
  111. package/cjs/utils/object.js +12 -0
  112. package/constants/index.d.ts +2 -0
  113. package/constants/index.js +2 -0
  114. package/koni/api/nft/config.js +33 -23
  115. package/koni/api/nft/index.js +15 -1
  116. package/koni/api/nft/nft.js +2 -23
  117. package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
  118. package/koni/api/nft/ordinal_nft/constants.js +12 -0
  119. package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
  120. package/koni/api/nft/ordinal_nft/index.js +114 -0
  121. package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
  122. package/koni/api/nft/ordinal_nft/utils.js +33 -0
  123. package/koni/api/staking/bonding/amplitude.js +11 -9
  124. package/koni/api/staking/bonding/astar.js +9 -8
  125. package/koni/api/staking/bonding/index.d.ts +1 -1
  126. package/koni/api/staking/bonding/index.js +5 -1
  127. package/koni/api/staking/bonding/paraChain.js +12 -10
  128. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  129. package/koni/api/staking/bonding/relayChain.js +33 -30
  130. package/koni/api/staking/bonding/utils.d.ts +15 -38
  131. package/koni/api/staking/bonding/utils.js +85 -69
  132. package/koni/api/staking/index.js +2 -1
  133. package/koni/api/staking/paraChain.js +7 -6
  134. package/koni/api/staking/relayChain.js +4 -3
  135. package/koni/api/yield/helper/utils.d.ts +10 -0
  136. package/koni/api/yield/helper/utils.js +32 -0
  137. package/koni/background/cron.js +2 -0
  138. package/koni/background/handlers/Extension.d.ts +14 -1
  139. package/koni/background/handlers/Extension.js +282 -30
  140. package/koni/background/handlers/State.d.ts +18 -2
  141. package/koni/background/handlers/State.js +56 -4
  142. package/koni/background/handlers/index.js +4 -2
  143. package/koni/background/subscription.d.ts +5 -1
  144. package/koni/background/subscription.js +91 -21
  145. package/package.json +311 -8
  146. package/packageInfo.js +1 -1
  147. package/services/campaign-service/index.js +9 -6
  148. package/services/chain-service/constants.d.ts +0 -11
  149. package/services/chain-service/constants.js +1 -14
  150. package/services/chain-service/utils.d.ts +1 -0
  151. package/services/chain-service/utils.js +5 -1
  152. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
  153. package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
  154. package/services/earning-service/constants/chains.d.ts +14 -0
  155. package/services/earning-service/constants/chains.js +21 -0
  156. package/services/earning-service/constants/index.d.ts +2 -0
  157. package/services/earning-service/constants/index.js +5 -0
  158. package/services/earning-service/constants/step.d.ts +3 -0
  159. package/services/earning-service/constants/step.js +10 -0
  160. package/services/earning-service/handlers/base.d.ts +105 -0
  161. package/services/earning-service/handlers/base.js +195 -0
  162. package/services/earning-service/handlers/index.d.ts +5 -0
  163. package/services/earning-service/handlers/index.js +8 -0
  164. package/services/earning-service/handlers/lending/base.d.ts +6 -0
  165. package/services/earning-service/handlers/lending/base.js +12 -0
  166. package/services/earning-service/handlers/lending/index.d.ts +1 -0
  167. package/services/earning-service/handlers/lending/index.js +4 -0
  168. package/services/earning-service/handlers/lending/interlay.d.ts +22 -0
  169. package/services/earning-service/handlers/lending/interlay.js +160 -0
  170. package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
  171. package/services/earning-service/handlers/liquid-staking/acala.js +188 -0
  172. package/services/earning-service/handlers/liquid-staking/base.d.ts +8 -0
  173. package/services/earning-service/handlers/liquid-staking/base.js +31 -0
  174. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +44 -0
  175. package/services/earning-service/handlers/liquid-staking/bifrost.js +246 -0
  176. package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
  177. package/services/earning-service/handlers/liquid-staking/index.js +7 -0
  178. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +27 -0
  179. package/services/earning-service/handlers/liquid-staking/parallel.js +172 -0
  180. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +36 -0
  181. package/services/earning-service/handlers/liquid-staking/stella-swap.js +363 -0
  182. package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
  183. package/services/earning-service/handlers/native-staking/amplitude.js +350 -0
  184. package/services/earning-service/handlers/native-staking/astar.d.ts +18 -0
  185. package/services/earning-service/handlers/native-staking/astar.js +416 -0
  186. package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
  187. package/services/earning-service/handlers/native-staking/base-para.js +129 -0
  188. package/services/earning-service/handlers/native-staking/base.d.ts +19 -0
  189. package/services/earning-service/handlers/native-staking/base.js +101 -0
  190. package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
  191. package/services/earning-service/handlers/native-staking/index.js +7 -0
  192. package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
  193. package/services/earning-service/handlers/native-staking/para-chain.js +353 -0
  194. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
  195. package/services/earning-service/handlers/native-staking/relay-chain.js +503 -0
  196. package/services/earning-service/handlers/nomination-pool/index.d.ts +33 -0
  197. package/services/earning-service/handlers/nomination-pool/index.js +492 -0
  198. package/services/earning-service/handlers/special.d.ts +56 -0
  199. package/services/earning-service/handlers/special.js +379 -0
  200. package/services/earning-service/service.d.ts +36 -0
  201. package/services/earning-service/service.js +320 -0
  202. package/services/earning-service/utils/index.d.ts +14 -0
  203. package/services/earning-service/utils/index.js +100 -0
  204. package/services/event-service/index.d.ts +1 -0
  205. package/services/event-service/index.js +4 -0
  206. package/services/event-service/types.d.ts +8 -0
  207. package/services/keyring-service/index.d.ts +2 -1
  208. package/services/keyring-service/index.js +14 -2
  209. package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
  210. package/services/migration-service/scripts/DeleteEarningData.js +13 -0
  211. package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
  212. package/services/migration-service/scripts/EnableEarningChains.js +13 -0
  213. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  214. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  215. package/services/migration-service/scripts/index.js +4 -0
  216. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
  217. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
  218. package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
  219. package/services/mint-campaign-service/campaigns/index.js +4 -0
  220. package/services/mint-campaign-service/constants.d.ts +1 -0
  221. package/services/mint-campaign-service/constants.js +4 -0
  222. package/services/mint-campaign-service/index.d.ts +7 -0
  223. package/services/mint-campaign-service/index.js +11 -0
  224. package/services/notification-service/NotificationService.js +1 -1
  225. package/services/storage-service/DatabaseService.d.ts +17 -1
  226. package/services/storage-service/DatabaseService.js +47 -0
  227. package/services/storage-service/databases/index.d.ts +3 -1
  228. package/services/storage-service/databases/index.js +4 -0
  229. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  230. package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
  231. package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
  232. package/services/storage-service/db-stores/YieldPositionStore.d.ts +9 -0
  233. package/services/storage-service/db-stores/YieldPositionStore.js +57 -0
  234. package/services/subscan-service/index.d.ts +2 -2
  235. package/services/transaction-service/event-parser/index.d.ts +3 -1
  236. package/services/transaction-service/event-parser/index.js +57 -1
  237. package/services/transaction-service/helpers/index.js +3 -1
  238. package/services/transaction-service/index.d.ts +4 -15
  239. package/services/transaction-service/index.js +178 -72
  240. package/services/transaction-service/types.d.ts +2 -0
  241. package/services/transaction-service/utils.js +1 -0
  242. package/types/campaigns/index.d.ts +1 -0
  243. package/types/campaigns/index.js +4 -0
  244. package/types/campaigns/unlock-dot.d.ts +71 -0
  245. package/types/campaigns/unlock-dot.js +1 -0
  246. package/types/index.d.ts +5 -0
  247. package/types/index.js +5 -1
  248. package/types/ordinal.d.ts +69 -0
  249. package/types/ordinal.js +1 -0
  250. package/types/transaction.d.ts +3 -0
  251. package/types/transaction.js +1 -0
  252. package/types/yield/actions/index.d.ts +2 -0
  253. package/types/yield/actions/index.js +5 -0
  254. package/types/yield/actions/join/index.d.ts +3 -0
  255. package/types/yield/actions/join/index.js +6 -0
  256. package/types/yield/actions/join/step.d.ts +75 -0
  257. package/types/yield/actions/join/step.js +34 -0
  258. package/types/yield/actions/join/submit.d.ts +53 -0
  259. package/types/yield/actions/join/submit.js +1 -0
  260. package/types/yield/actions/join/validate.d.ts +18 -0
  261. package/types/yield/actions/join/validate.js +10 -0
  262. package/types/yield/actions/others.d.ts +60 -0
  263. package/types/yield/actions/others.js +1 -0
  264. package/types/yield/index.d.ts +2 -0
  265. package/types/yield/index.js +5 -0
  266. package/types/yield/info/account/index.d.ts +4 -0
  267. package/types/yield/info/account/index.js +7 -0
  268. package/types/yield/info/account/info.d.ts +112 -0
  269. package/types/yield/info/account/info.js +1 -0
  270. package/types/yield/info/account/reward.d.ts +41 -0
  271. package/types/yield/info/account/reward.js +1 -0
  272. package/types/yield/info/account/target.d.ts +43 -0
  273. package/types/yield/info/account/target.js +27 -0
  274. package/types/yield/info/account/unstake.d.ts +31 -0
  275. package/types/yield/info/account/unstake.js +22 -0
  276. package/types/yield/info/base.d.ts +28 -0
  277. package/types/yield/info/base.js +28 -0
  278. package/types/yield/info/chain/index.d.ts +2 -0
  279. package/types/yield/info/chain/index.js +5 -0
  280. package/types/yield/info/chain/info.d.ts +190 -0
  281. package/types/yield/info/chain/info.js +1 -0
  282. package/types/yield/info/chain/target.d.ts +33 -0
  283. package/types/yield/info/chain/target.js +1 -0
  284. package/types/yield/info/index.d.ts +4 -0
  285. package/types/yield/info/index.js +7 -0
  286. package/types/yield/info/pallet.d.ts +143 -0
  287. package/types/yield/info/pallet.js +9 -0
  288. package/utils/fetchStaticData.js +2 -1
  289. package/utils/index.d.ts +5 -0
  290. package/utils/index.js +53 -1
  291. package/utils/object.d.ts +1 -0
  292. package/utils/object.js +6 -0
@@ -1,16 +1,18 @@
1
1
  /// <reference types="chrome" />
2
2
  import { _AssetRef, _AssetType, _ChainAsset, _ChainInfo, _MultiChainAsset } from '@subwallet/chain-list/types';
3
- import { AddTokenRequestExternal, AmountData, ApiMap, AuthRequestV2, ChainStakingMetadata, ConfirmationsQueue, CrowdloanItem, CrowdloanJson, CurrentAccountInfo, EvmSendTransactionParams, ExternalRequestPromise, MantaPayConfig, MantaPaySyncState, NftCollection, NftItem, NftJson, NominatorMetadata, RequestAccountExportPrivateKey, RequestCheckPublicAndSecretKey, RequestConfirmationComplete, RequestSettingsType, ResponseAccountExportPrivateKey, ResponseCheckPublicAndSecretKey, ServiceInfo, SingleModeJson, StakingItem, StakingJson, StakingRewardItem, StakingRewardJson, StakingType, UiSettings } from '@subwallet/extension-base/background/KoniTypes';
3
+ import { AddTokenRequestExternal, AmountData, ApiMap, AuthRequestV2, ChainStakingMetadata, ConfirmationsQueue, CrowdloanItem, CrowdloanJson, CurrentAccountInfo, EvmSendTransactionParams, ExternalRequestPromise, MantaPayConfig, MantaPaySyncState, NftCollection, NftItem, NftJson, NominatorMetadata, RequestAccountExportPrivateKey, RequestCheckPublicAndSecretKey, RequestConfirmationComplete, RequestCrowdloanContributions, RequestSettingsType, ResponseAccountExportPrivateKey, ResponseCheckPublicAndSecretKey, ServiceInfo, SingleModeJson, StakingItem, StakingJson, StakingRewardItem, StakingRewardJson, StakingType, UiSettings } from '@subwallet/extension-base/background/KoniTypes';
4
4
  import { AccountJson, RequestAuthorizeTab, RequestRpcSend, RequestRpcSubscribe, RequestRpcUnsubscribe, RequestSign, ResponseRpcListProviders, ResponseSigning } from '@subwallet/extension-base/background/types';
5
5
  import { BalanceService } from '@subwallet/extension-base/services/balance-service';
6
6
  import BuyService from '@subwallet/extension-base/services/buy-service';
7
7
  import CampaignService from '@subwallet/extension-base/services/campaign-service';
8
8
  import { ChainService } from '@subwallet/extension-base/services/chain-service';
9
9
  import { _ChainState, _NetworkUpsertParams, _ValidateCustomAssetRequest } from '@subwallet/extension-base/services/chain-service/types';
10
+ import EarningService from '@subwallet/extension-base/services/earning-service/service';
10
11
  import { EventService } from '@subwallet/extension-base/services/event-service';
11
12
  import { HistoryService } from '@subwallet/extension-base/services/history-service';
12
13
  import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
13
14
  import MigrationService from '@subwallet/extension-base/services/migration-service';
15
+ import MintCampaignService from '@subwallet/extension-base/services/mint-campaign-service';
14
16
  import NotificationService from '@subwallet/extension-base/services/notification-service/NotificationService';
15
17
  import { PriceService } from '@subwallet/extension-base/services/price-service';
16
18
  import RequestService from '@subwallet/extension-base/services/request-service';
@@ -20,7 +22,7 @@ import DatabaseService from '@subwallet/extension-base/services/storage-service/
20
22
  import { SubscanService } from '@subwallet/extension-base/services/subscan-service';
21
23
  import TransactionService from '@subwallet/extension-base/services/transaction-service';
22
24
  import WalletConnectService from '@subwallet/extension-base/services/wallet-connect-service';
23
- import { BalanceItem, BalanceJson, BalanceMap } from '@subwallet/extension-base/types';
25
+ import { BalanceItem, BalanceJson, BalanceMap, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
24
26
  import { MetadataDef, ProviderMeta } from '@subwallet/extension-inject/types';
25
27
  import SimpleKeyring from 'eth-simple-keyring';
26
28
  import { BehaviorSubject, Subject } from 'rxjs';
@@ -46,6 +48,8 @@ export default class KoniState {
46
48
  private stakingNominatorMetadataSubject;
47
49
  private stakingRewardSubject;
48
50
  private stakingRewardState;
51
+ private yieldPoolInfoSubject;
52
+ private yieldPositionSubject;
49
53
  private lazyMap;
50
54
  readonly notificationService: NotificationService;
51
55
  readonly eventService: EventService;
@@ -64,8 +68,10 @@ export default class KoniState {
64
68
  readonly migrationService: MigrationService;
65
69
  readonly subscanService: SubscanService;
66
70
  readonly walletConnectService: WalletConnectService;
71
+ readonly mintCampaignService: MintCampaignService;
67
72
  readonly campaignService: CampaignService;
68
73
  readonly buyService: BuyService;
74
+ readonly earningService: EarningService;
69
75
  private generalStatus;
70
76
  private waitSleeping;
71
77
  private waitStarting;
@@ -108,6 +114,11 @@ export default class KoniState {
108
114
  getStaking(): Promise<StakingJson>;
109
115
  getStakingOwnersByChains(chains: string[]): Promise<string[]>;
110
116
  getPooledStakingRecordsByAddress(addresses: string[]): Promise<StakingItem[]>;
117
+ getPooledPositionByAddress(addresses: string[]): Promise<YieldPositionInfo[]>;
118
+ subscribeYieldPoolInfo(): Subject<YieldPoolInfo[]>;
119
+ subscribeYieldPosition(): Subject<YieldPositionInfo[]>;
120
+ getYieldPoolInfo(): Promise<YieldPoolInfo[]>;
121
+ getYieldPositionInfo(): Promise<YieldPositionInfo[]>;
111
122
  subscribeMantaPayConfig(): Subject<MantaPayConfig[]>;
112
123
  subscribeStaking(): Subject<StakingJson>;
113
124
  subscribeChainStakingMetadata(): Subject<ChainStakingMetadata[]>;
@@ -251,5 +262,10 @@ export default class KoniState {
251
262
  metadata: string;
252
263
  specVersion: number;
253
264
  }>;
265
+ updateYieldPoolInfo(data: YieldPoolInfo): void;
266
+ resetYieldPoolInfo(chains: string[]): void;
267
+ updateYieldPosition(data: YieldPositionInfo): void;
268
+ getYieldPoolStakingInfo(chain: string, poolType: YieldPoolType): Promise<YieldPoolInfo | undefined>;
269
+ getCrowdloanContributions({ address, page, relayChain }: RequestCrowdloanContributions): Promise<import("../../../services/subscan-service/types").CrowdloanContributionsResponse>;
254
270
  }
255
271
  export {};
@@ -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
  }
@@ -691,9 +716,14 @@ export default class KoniState {
691
716
  }
692
717
  isFirstLoad = true;
693
718
  async handleResetBalance(newAddress, forceRefresh) {
694
- if (this.isFirstLoad || forceRefresh) {
719
+ if (this.isFirstLoad) {
695
720
  const backupBalanceData = await this.dbService.getStoredBalance();
696
721
  this.balanceMap.updateBalanceItems(backupBalanceData, isAccountAll(newAddress));
722
+ this.isFirstLoad = false;
723
+ }
724
+ if (forceRefresh) {
725
+ this.balanceMap.setData({});
726
+ await this.dbService.stores.balance.clear();
697
727
  }
698
728
  await Promise.all([this.removeInactiveChainBalances()]);
699
729
  }
@@ -1736,4 +1766,26 @@ export default class KoniState {
1736
1766
  specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
1737
1767
  };
1738
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
+ }
1739
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;
@@ -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.getActiveChainInfoMap()));
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,7 +289,7 @@ export class KoniSubscription {
222
289
  if (!addresses.length) {
223
290
  return;
224
291
  }
225
- const pooledStakingItems = await this.state.getPooledStakingRecordsByAddress(addresses);
292
+ const pooledStakingItems = await this.state.getPooledPositionByAddress(addresses);
226
293
  const pooledAddresses = [];
227
294
  pooledStakingItems.forEach(pooledItem => {
228
295
  if (!pooledAddresses.includes(pooledItem.address)) {
@@ -242,26 +309,29 @@ export class KoniSubscription {
242
309
  activeNetworks.push(key);
243
310
  });
244
311
  const updateState = result => {
245
- this.state.updateStakingReward(result);
312
+ this.state.earningService.updateEarningReward(result);
246
313
  };
247
- await Promise.all([getPoolingStakingRewardData(pooledAddresses, targetChainMap, this.state.getSubstrateApiMap(), updateState), getAmplitudeUnclaimedStakingReward(this.state.getSubstrateApiMap(), addresses, chainInfoMap, activeNetworks, updateState)]);
314
+ await Promise.all([this.state.earningService.getPoolReward(addresses, updateState) // TODO
315
+ ]);
248
316
  }
317
+
249
318
  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());
319
+ // const currentAddress = this.state.keyringService.currentAccount?.address;
320
+
321
+ // this.subscribeYieldPools(this.state.getSubstrateApiMap());
322
+
253
323
  await waitTimeout(1800);
254
324
  }
255
325
  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;
326
+ var _this$state$keyringSe2;
327
+ const currentAddress = (_this$state$keyringSe2 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe2 === void 0 ? void 0 : _this$state$keyringSe2.address;
328
+ await this.state.handleResetBalance(currentAddress, true);
258
329
  this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
259
330
  await waitTimeout(1800);
260
331
  }
261
332
  async reloadCrowdloan() {
262
- var _this$state$keyringSe4;
263
- const currentAddress = (_this$state$keyringSe4 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe4 === void 0 ? void 0 : _this$state$keyringSe4.address;
264
- await this.state.handleResetBalance(currentAddress, true);
333
+ var _this$state$keyringSe3;
334
+ const currentAddress = (_this$state$keyringSe3 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe3 === void 0 ? void 0 : _this$state$keyringSe3.address;
265
335
  this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
266
336
  await waitTimeout(1800);
267
337
  }