@subwallet/extension-base 1.1.35-0 → 1.1.35-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 (317) hide show
  1. package/background/KoniTypes.d.ts +111 -69
  2. package/background/KoniTypes.js +19 -13
  3. package/background/errors/TransactionError.js +9 -0
  4. package/cjs/background/KoniTypes.js +20 -16
  5. package/cjs/background/errors/TransactionError.js +9 -0
  6. package/cjs/constants/index.js +19 -4
  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 +19 -16
  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 +3 -21
  25. package/cjs/koni/background/handlers/Extension.js +368 -69
  26. package/cjs/koni/background/handlers/State.js +18 -12
  27. package/cjs/koni/background/handlers/index.js +4 -2
  28. package/cjs/koni/background/subscription.js +7 -104
  29. package/cjs/services/campaign-service/index.js +9 -6
  30. package/cjs/services/chain-service/constants.js +1 -16
  31. package/cjs/services/chain-service/index.js +6 -2
  32. package/cjs/services/chain-service/utils.js +7 -1
  33. package/cjs/services/earning-service/constants/chains.js +30 -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 +262 -0
  37. package/cjs/services/earning-service/handlers/index.js +60 -0
  38. package/cjs/services/earning-service/handlers/lending/base.js +81 -0
  39. package/cjs/services/earning-service/handlers/lending/index.js +13 -0
  40. package/cjs/services/earning-service/handlers/lending/interlay.js +192 -0
  41. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +240 -0
  42. package/cjs/services/earning-service/handlers/liquid-staking/base.js +97 -0
  43. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +140 -0
  44. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +298 -0
  45. package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
  46. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +227 -0
  47. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +404 -0
  48. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +434 -0
  49. package/cjs/services/earning-service/handlers/native-staking/astar.js +466 -0
  50. package/cjs/services/earning-service/handlers/native-staking/base-para.js +146 -0
  51. package/cjs/services/earning-service/handlers/native-staking/base.js +161 -0
  52. package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
  53. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +390 -0
  54. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +567 -0
  55. package/cjs/services/earning-service/handlers/nomination-pool/index.js +566 -0
  56. package/cjs/services/earning-service/handlers/special.js +493 -0
  57. package/cjs/services/earning-service/service.js +733 -0
  58. package/cjs/services/earning-service/utils/index.js +128 -0
  59. package/cjs/services/event-service/index.js +5 -0
  60. package/cjs/services/keyring-service/index.js +14 -2
  61. package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
  62. package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
  63. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +17 -0
  64. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  65. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
  66. package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
  67. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  68. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +21 -0
  69. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +21 -0
  70. package/cjs/services/migration-service/scripts/index.js +6 -1
  71. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
  72. package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
  73. package/cjs/services/mint-campaign-service/constants.js +11 -0
  74. package/cjs/services/mint-campaign-service/index.js +18 -0
  75. package/cjs/services/notification-service/NotificationService.js +3 -2
  76. package/cjs/services/request-service/handler/PopupHandler.js +2 -3
  77. package/cjs/services/storage-service/DatabaseService.js +63 -0
  78. package/cjs/services/storage-service/databases/index.js +4 -0
  79. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  80. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
  81. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +71 -0
  82. package/cjs/services/storage-service/index.js +241 -0
  83. package/cjs/services/subscan-service/index.js +16 -0
  84. package/cjs/services/transaction-service/event-parser/index.js +58 -0
  85. package/cjs/services/transaction-service/helpers/index.js +3 -1
  86. package/cjs/services/transaction-service/index.js +249 -75
  87. package/cjs/services/transaction-service/utils.js +1 -0
  88. package/cjs/types/campaigns/index.js +16 -0
  89. package/cjs/types/campaigns/unlock-dot.js +1 -0
  90. package/cjs/types/index.js +44 -0
  91. package/cjs/types/ordinal.js +1 -0
  92. package/cjs/types/transaction.js +1 -0
  93. package/cjs/types/yield/actions/index.js +27 -0
  94. package/cjs/types/yield/actions/join/index.js +38 -0
  95. package/cjs/types/yield/actions/join/step.js +47 -0
  96. package/cjs/types/yield/actions/join/submit.js +1 -0
  97. package/cjs/types/yield/actions/join/validate.js +16 -0
  98. package/cjs/types/yield/actions/others.js +1 -0
  99. package/cjs/types/yield/index.js +27 -0
  100. package/cjs/types/yield/info/account/index.js +49 -0
  101. package/cjs/types/yield/info/account/info.js +1 -0
  102. package/cjs/types/yield/info/account/reward.js +1 -0
  103. package/cjs/types/yield/info/account/target.js +32 -0
  104. package/cjs/types/yield/info/account/unstake.js +27 -0
  105. package/cjs/types/yield/info/base.js +41 -0
  106. package/cjs/types/yield/info/chain/index.js +27 -0
  107. package/cjs/types/yield/info/chain/info.js +1 -0
  108. package/cjs/types/yield/info/chain/target.js +1 -0
  109. package/cjs/types/yield/info/index.js +49 -0
  110. package/cjs/types/yield/info/pallet.js +15 -0
  111. package/cjs/types.js +1 -0
  112. package/cjs/utils/address.js +34 -0
  113. package/cjs/utils/environment.js +23 -28
  114. package/cjs/utils/fetchStaticCache.js +22 -0
  115. package/cjs/utils/fetchStaticData.js +2 -1
  116. package/cjs/utils/index.js +94 -10
  117. package/cjs/utils/keyring.js +57 -0
  118. package/cjs/utils/mv3.js +21 -0
  119. package/cjs/utils/number.js +6 -2
  120. package/cjs/utils/object.js +12 -0
  121. package/constants/index.d.ts +6 -1
  122. package/constants/index.js +6 -1
  123. package/koni/api/nft/config.js +33 -23
  124. package/koni/api/nft/index.js +15 -1
  125. package/koni/api/nft/nft.js +2 -23
  126. package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
  127. package/koni/api/nft/ordinal_nft/constants.js +12 -0
  128. package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
  129. package/koni/api/nft/ordinal_nft/index.js +114 -0
  130. package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
  131. package/koni/api/nft/ordinal_nft/utils.js +33 -0
  132. package/koni/api/staking/bonding/amplitude.js +13 -10
  133. package/koni/api/staking/bonding/astar.js +9 -8
  134. package/koni/api/staking/bonding/index.d.ts +1 -1
  135. package/koni/api/staking/bonding/index.js +5 -1
  136. package/koni/api/staking/bonding/paraChain.js +12 -10
  137. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  138. package/koni/api/staking/bonding/relayChain.js +33 -30
  139. package/koni/api/staking/bonding/utils.d.ts +15 -38
  140. package/koni/api/staking/bonding/utils.js +85 -69
  141. package/koni/api/staking/index.js +2 -1
  142. package/koni/api/staking/paraChain.js +7 -6
  143. package/koni/api/staking/relayChain.js +4 -3
  144. package/koni/api/yield/helper/utils.d.ts +10 -0
  145. package/koni/api/yield/helper/utils.js +32 -0
  146. package/koni/background/cron.d.ts +0 -4
  147. package/koni/background/cron.js +4 -22
  148. package/koni/background/handlers/Extension.d.ts +17 -1
  149. package/koni/background/handlers/Extension.js +327 -30
  150. package/koni/background/handlers/State.d.ts +6 -1
  151. package/koni/background/handlers/State.js +17 -12
  152. package/koni/background/handlers/index.js +4 -2
  153. package/koni/background/subscription.d.ts +1 -6
  154. package/koni/background/subscription.js +8 -104
  155. package/package.json +326 -3
  156. package/services/campaign-service/index.js +9 -6
  157. package/services/chain-service/constants.d.ts +0 -12
  158. package/services/chain-service/constants.js +0 -14
  159. package/services/chain-service/index.js +6 -2
  160. package/services/chain-service/utils.d.ts +1 -0
  161. package/services/chain-service/utils.js +5 -1
  162. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
  163. package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
  164. package/services/earning-service/constants/chains.d.ts +15 -0
  165. package/services/earning-service/constants/chains.js +22 -0
  166. package/services/earning-service/constants/index.d.ts +2 -0
  167. package/services/earning-service/constants/index.js +5 -0
  168. package/services/earning-service/constants/step.d.ts +3 -0
  169. package/services/earning-service/constants/step.js +10 -0
  170. package/services/earning-service/handlers/base.d.ts +113 -0
  171. package/services/earning-service/handlers/base.js +256 -0
  172. package/services/earning-service/handlers/index.d.ts +5 -0
  173. package/services/earning-service/handlers/index.js +8 -0
  174. package/services/earning-service/handlers/lending/base.d.ts +8 -0
  175. package/services/earning-service/handlers/lending/base.js +73 -0
  176. package/services/earning-service/handlers/lending/index.d.ts +1 -0
  177. package/services/earning-service/handlers/lending/index.js +4 -0
  178. package/services/earning-service/handlers/lending/interlay.d.ts +24 -0
  179. package/services/earning-service/handlers/lending/interlay.js +184 -0
  180. package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
  181. package/services/earning-service/handlers/liquid-staking/acala.js +232 -0
  182. package/services/earning-service/handlers/liquid-staking/base.d.ts +11 -0
  183. package/services/earning-service/handlers/liquid-staking/base.js +89 -0
  184. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +46 -0
  185. package/services/earning-service/handlers/liquid-staking/bifrost.js +287 -0
  186. package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
  187. package/services/earning-service/handlers/liquid-staking/index.js +7 -0
  188. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +26 -0
  189. package/services/earning-service/handlers/liquid-staking/parallel.js +219 -0
  190. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +34 -0
  191. package/services/earning-service/handlers/liquid-staking/stella-swap.js +394 -0
  192. package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
  193. package/services/earning-service/handlers/native-staking/amplitude.js +425 -0
  194. package/services/earning-service/handlers/native-staking/astar.d.ts +19 -0
  195. package/services/earning-service/handlers/native-staking/astar.js +456 -0
  196. package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
  197. package/services/earning-service/handlers/native-staking/base-para.js +138 -0
  198. package/services/earning-service/handlers/native-staking/base.d.ts +21 -0
  199. package/services/earning-service/handlers/native-staking/base.js +152 -0
  200. package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
  201. package/services/earning-service/handlers/native-staking/index.js +7 -0
  202. package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
  203. package/services/earning-service/handlers/native-staking/para-chain.js +382 -0
  204. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
  205. package/services/earning-service/handlers/native-staking/relay-chain.js +558 -0
  206. package/services/earning-service/handlers/nomination-pool/index.d.ts +36 -0
  207. package/services/earning-service/handlers/nomination-pool/index.js +556 -0
  208. package/services/earning-service/handlers/special.d.ts +64 -0
  209. package/services/earning-service/handlers/special.js +485 -0
  210. package/services/earning-service/service.d.ts +94 -0
  211. package/services/earning-service/service.js +722 -0
  212. package/services/earning-service/utils/index.d.ts +18 -0
  213. package/services/earning-service/utils/index.js +112 -0
  214. package/services/event-service/index.d.ts +2 -0
  215. package/services/event-service/index.js +5 -0
  216. package/services/event-service/types.d.ts +9 -0
  217. package/services/keyring-service/index.d.ts +2 -1
  218. package/services/keyring-service/index.js +14 -2
  219. package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
  220. package/services/migration-service/scripts/DeleteEarningData.js +13 -0
  221. package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
  222. package/services/migration-service/scripts/EnableEarningChains.js +13 -0
  223. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  224. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  225. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +4 -0
  226. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +13 -0
  227. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +4 -0
  228. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +13 -0
  229. package/services/migration-service/scripts/index.js +6 -1
  230. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
  231. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
  232. package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
  233. package/services/mint-campaign-service/campaigns/index.js +4 -0
  234. package/services/mint-campaign-service/constants.d.ts +1 -0
  235. package/services/mint-campaign-service/constants.js +4 -0
  236. package/services/mint-campaign-service/index.d.ts +7 -0
  237. package/services/mint-campaign-service/index.js +11 -0
  238. package/services/notification-service/NotificationService.js +3 -2
  239. package/services/request-service/handler/PopupHandler.js +3 -4
  240. package/services/storage-service/DatabaseService.d.ts +22 -1
  241. package/services/storage-service/DatabaseService.js +63 -0
  242. package/services/storage-service/databases/index.d.ts +3 -1
  243. package/services/storage-service/databases/index.js +4 -0
  244. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  245. package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
  246. package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
  247. package/services/storage-service/db-stores/YieldPositionStore.d.ts +11 -0
  248. package/services/storage-service/db-stores/YieldPositionStore.js +63 -0
  249. package/services/subscan-service/index.d.ts +3 -2
  250. package/services/subscan-service/index.js +15 -0
  251. package/services/subscan-service/types.d.ts +20 -0
  252. package/services/transaction-service/event-parser/index.d.ts +3 -1
  253. package/services/transaction-service/event-parser/index.js +57 -1
  254. package/services/transaction-service/helpers/index.js +3 -1
  255. package/services/transaction-service/index.d.ts +6 -13
  256. package/services/transaction-service/index.js +247 -73
  257. package/services/transaction-service/types.d.ts +2 -0
  258. package/services/transaction-service/utils.js +1 -0
  259. package/types/campaigns/index.d.ts +1 -0
  260. package/types/campaigns/index.js +4 -0
  261. package/types/campaigns/unlock-dot.d.ts +71 -0
  262. package/types/campaigns/unlock-dot.js +1 -0
  263. package/types/index.d.ts +5 -0
  264. package/types/index.js +5 -1
  265. package/types/ordinal.d.ts +69 -0
  266. package/types/ordinal.js +1 -0
  267. package/types/transaction.d.ts +3 -0
  268. package/types/transaction.js +1 -0
  269. package/types/yield/actions/index.d.ts +2 -0
  270. package/types/yield/actions/index.js +5 -0
  271. package/types/yield/actions/join/index.d.ts +3 -0
  272. package/types/yield/actions/join/index.js +6 -0
  273. package/types/yield/actions/join/step.d.ts +95 -0
  274. package/types/yield/actions/join/step.js +46 -0
  275. package/types/yield/actions/join/submit.d.ts +58 -0
  276. package/types/yield/actions/join/submit.js +1 -0
  277. package/types/yield/actions/join/validate.d.ts +18 -0
  278. package/types/yield/actions/join/validate.js +10 -0
  279. package/types/yield/actions/others.d.ts +85 -0
  280. package/types/yield/actions/others.js +1 -0
  281. package/types/yield/index.d.ts +2 -0
  282. package/types/yield/index.js +5 -0
  283. package/types/yield/info/account/index.d.ts +4 -0
  284. package/types/yield/info/account/index.js +7 -0
  285. package/types/yield/info/account/info.d.ts +92 -0
  286. package/types/yield/info/account/info.js +1 -0
  287. package/types/yield/info/account/reward.d.ts +47 -0
  288. package/types/yield/info/account/reward.js +1 -0
  289. package/types/yield/info/account/target.d.ts +43 -0
  290. package/types/yield/info/account/target.js +27 -0
  291. package/types/yield/info/account/unstake.d.ts +31 -0
  292. package/types/yield/info/account/unstake.js +22 -0
  293. package/types/yield/info/base.d.ts +45 -0
  294. package/types/yield/info/base.js +36 -0
  295. package/types/yield/info/chain/index.d.ts +2 -0
  296. package/types/yield/info/chain/index.js +5 -0
  297. package/types/yield/info/chain/info.d.ts +252 -0
  298. package/types/yield/info/chain/info.js +1 -0
  299. package/types/yield/info/chain/target.d.ts +37 -0
  300. package/types/yield/info/chain/target.js +1 -0
  301. package/types/yield/info/index.d.ts +4 -0
  302. package/types/yield/info/index.js +7 -0
  303. package/types/yield/info/pallet.d.ts +143 -0
  304. package/types/yield/info/pallet.js +9 -0
  305. package/utils/environment.d.ts +9 -2
  306. package/utils/environment.js +14 -26
  307. package/utils/fetchStaticCache.d.ts +1 -0
  308. package/utils/fetchStaticCache.js +14 -0
  309. package/utils/fetchStaticData.js +2 -1
  310. package/utils/index.d.ts +5 -1
  311. package/utils/index.js +53 -3
  312. package/utils/mv3.d.ts +2 -0
  313. package/utils/mv3.js +13 -0
  314. package/utils/number.d.ts +2 -1
  315. package/utils/number.js +2 -1
  316. package/utils/object.d.ts +1 -0
  317. package/utils/object.js +6 -0
@@ -15,12 +15,13 @@ import { resolveAzeroAddressToDomain, resolveAzeroDomainToAddress } from '@subwa
15
15
  import { parseSubstrateTransaction } from '@subwallet/extension-base/koni/api/dotsama/parseTransaction';
16
16
  import { checkReferenceCount, checkSupportTransfer, createTransferExtrinsic } from '@subwallet/extension-base/koni/api/dotsama/transfer';
17
17
  import { getNftTransferExtrinsic, isRecipientSelf } from '@subwallet/extension-base/koni/api/nft/transfer';
18
- import { getBondingExtrinsic, getCancelWithdrawalExtrinsic, getClaimRewardExtrinsic, getNominationPoolsInfo, getUnbondingExtrinsic, getValidatorsInfo, getWithdrawalExtrinsic, validateBondingCondition, validateUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding';
18
+ import { getBondingExtrinsic, getCancelWithdrawalExtrinsic, getClaimRewardExtrinsic, getNominationPoolsInfo, getUnbondingExtrinsic, getValidatorsInfo, validateBondingCondition, validateUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding';
19
19
  import { getTuringCancelCompoundingExtrinsic, getTuringCompoundExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/paraChain';
20
20
  import { getPoolingBondingExtrinsic, getPoolingUnbondingExtrinsic, validatePoolBondingCondition, validateRelayUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding/relayChain';
21
21
  import { getERC20TransactionObject, getERC721Transaction, getEVMTransactionObject } from '@subwallet/extension-base/koni/api/tokens/evm/transfer';
22
22
  import { getPSP34TransferExtrinsic } from '@subwallet/extension-base/koni/api/tokens/wasm';
23
23
  import { createXcmExtrinsic } from '@subwallet/extension-base/koni/api/xcm';
24
+ import { YIELD_EXTRINSIC_TYPES } from '@subwallet/extension-base/koni/api/yield/helper/utils';
24
25
  import { _API_OPTIONS_CHAIN_GROUP, _DEFAULT_MANTA_ZK_CHAIN, _MANTA_ZK_CHAIN_GROUP, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
25
26
  import { _ChainConnectionStatus } from '@subwallet/extension-base/services/chain-service/types';
26
27
  import { _getChainNativeTokenBasicInfo, _getContractAddressOfToken, _getEvmChainId, _getSubstrateGenesisHash, _getTokenMinAmount, _isAssetSmartContractNft, _isChainEvmCompatible, _isCustomAsset, _isLocalToken, _isMantaZkAsset, _isNativeToken, _isTokenEvmSmartContract, _isTokenTransferredByEvm } from '@subwallet/extension-base/services/chain-service/utils';
@@ -28,6 +29,7 @@ import { EXTENSION_REQUEST_URL } from '@subwallet/extension-base/services/reques
28
29
  import { DEFAULT_AUTO_LOCK_TIME } from '@subwallet/extension-base/services/setting-service/constants';
29
30
  import { WALLET_CONNECT_EIP155_NAMESPACE } from '@subwallet/extension-base/services/wallet-connect-service/constants';
30
31
  import { isProposalExpired, isSupportWalletConnectChain, isSupportWalletConnectNamespace } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
32
+ import { YieldPoolType } from '@subwallet/extension-base/types';
31
33
  import { convertSubjectInfoToAddresses, isSameAddress, reformatAddress, uniqueStringArray } from '@subwallet/extension-base/utils';
32
34
  import { createTransactionFromRLP, recalculateGasPrice, signatureToHex } from '@subwallet/extension-base/utils/eth';
33
35
  import { parseContractInput, parseEvmRlp } from '@subwallet/extension-base/utils/eth/parseTransaction';
@@ -468,6 +470,7 @@ export default class KoniExtension {
468
470
  const cb = createSubscription(id, port);
469
471
  const keyringService = this.#koniState.keyringService;
470
472
  await this.#koniState.eventService.waitAccountReady;
473
+ await this.#koniState.eventService.waitInjectReady;
471
474
  const currentAccount = keyringService.currentAccount;
472
475
  const transformedAccounts = transformAccounts(keyringService.accounts);
473
476
  const responseData = {
@@ -1022,6 +1025,9 @@ export default class KoniExtension {
1022
1025
  getCrowdloan(reset) {
1023
1026
  return this.#koniState.getCrowdloan(reset);
1024
1027
  }
1028
+ getCrowdloanContributions(request) {
1029
+ return this.#koniState.getCrowdloanContributions(request);
1030
+ }
1025
1031
  subscribeCrowdloan(id, port) {
1026
1032
  const cb = createSubscription(id, port);
1027
1033
  const crowdloanSubscription = this.#koniState.subscribeCrowdloan().subscribe({
@@ -1910,12 +1916,22 @@ export default class KoniExtension {
1910
1916
  token
1911
1917
  }, id, port) {
1912
1918
  const cb = createSubscription(id, port);
1913
- const [unsub, currentFreeBalance] = await this.#koniState.balanceService.subscribeTokenFreeBalance(address, networkKey, token, cb);
1919
+ const convertData = data => {
1920
+ return {
1921
+ ...data,
1922
+ id
1923
+ };
1924
+ };
1925
+ const _cb = data => {
1926
+ // eslint-disable-next-line node/no-callback-literal
1927
+ cb(convertData(data));
1928
+ };
1929
+ const [unsub, currentFreeBalance] = await this.#koniState.balanceService.subscribeTokenFreeBalance(address, networkKey, token, _cb);
1914
1930
  this.createUnsubscriptionHandle(id, unsub);
1915
1931
  port.onDisconnect.addListener(() => {
1916
1932
  this.cancelSubscription(id);
1917
1933
  });
1918
- return currentFreeBalance;
1934
+ return convertData(currentFreeBalance);
1919
1935
  }
1920
1936
  async transferCheckReferenceCount({
1921
1937
  address,
@@ -2530,36 +2546,18 @@ export default class KoniExtension {
2530
2546
  chainType: ChainType.SUBSTRATE
2531
2547
  });
2532
2548
  }
2533
- async submitStakeWithdrawal(inputData) {
2534
- const {
2535
- chain,
2536
- nominatorMetadata,
2537
- validatorAddress
2538
- } = inputData;
2539
- if (!nominatorMetadata) {
2540
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
2541
- }
2542
- const dotSamaApi = this.#koniState.getSubstrateApi(chain);
2543
- const extrinsic = await getWithdrawalExtrinsic(dotSamaApi, chain, nominatorMetadata, validatorAddress);
2544
- return await this.#koniState.transactionService.handleTransaction({
2545
- address: nominatorMetadata.address,
2546
- chain: chain,
2547
- transaction: extrinsic,
2548
- data: inputData,
2549
- extrinsicType: ExtrinsicType.STAKING_WITHDRAW,
2550
- chainType: ChainType.SUBSTRATE
2551
- });
2552
- }
2553
2549
  async submitStakeClaimReward(inputData) {
2554
2550
  const {
2555
2551
  address,
2556
2552
  bondReward,
2557
- chain,
2558
- stakingType
2553
+ slug
2559
2554
  } = inputData;
2560
- if (!address) {
2555
+ const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
2556
+ if (!address || !poolHandler) {
2561
2557
  return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
2562
2558
  }
2559
+ const chain = poolHandler.chain;
2560
+ const stakingType = poolHandler.type === YieldPoolType.NOMINATION_POOL ? StakingType.POOLED : StakingType.NOMINATED;
2563
2561
  const substrateApi = this.#koniState.getSubstrateApi(chain);
2564
2562
  const extrinsic = await getClaimRewardExtrinsic(substrateApi, chain, address, stakingType, bondReward);
2565
2563
  return await this.#koniState.transactionService.handleTransaction({
@@ -2572,15 +2570,18 @@ export default class KoniExtension {
2572
2570
  });
2573
2571
  }
2574
2572
  async submitCancelStakeWithdrawal(inputData) {
2573
+ var _this$koniState$earni;
2575
2574
  const {
2576
2575
  address,
2577
- chain,
2578
- selectedUnstaking
2576
+ selectedUnstaking,
2577
+ slug
2579
2578
  } = inputData;
2579
+ const chain = (_this$koniState$earni = this.#koniState.earningService.getPoolHandler(slug)) === null || _this$koniState$earni === void 0 ? void 0 : _this$koniState$earni.chain;
2580
2580
  if (!chain || !selectedUnstaking) {
2581
2581
  return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
2582
2582
  }
2583
2583
  const substrateApi = this.#koniState.getSubstrateApi(chain);
2584
+ // @ts-ignore
2584
2585
  const extrinsic = await getCancelWithdrawalExtrinsic(substrateApi, chain, selectedUnstaking);
2585
2586
  return await this.#koniState.transactionService.handleTransaction({
2586
2587
  address,
@@ -3553,9 +3554,243 @@ export default class KoniExtension {
3553
3554
  this.#koniState.keyringService.removeInjectAccounts(request.addresses);
3554
3555
  return true;
3555
3556
  }
3557
+ async subscribeYieldPoolInfo(id, port) {
3558
+ const cb = createSubscription(id, port);
3559
+ await this.#koniState.earningService.waitForStarted();
3560
+ const yieldPoolSubscription = this.#koniState.earningService.subscribeYieldPoolInfo().subscribe({
3561
+ next: rs => {
3562
+ cb(Object.values(rs));
3563
+ }
3564
+ });
3565
+ this.createUnsubscriptionHandle(id, yieldPoolSubscription.unsubscribe);
3566
+ port.onDisconnect.addListener(() => {
3567
+ this.cancelSubscription(id);
3568
+ });
3569
+ return this.#koniState.earningService.getYieldPoolInfo();
3570
+ }
3571
+ async earlyValidateJoin(request) {
3572
+ return await this.#koniState.earningService.earlyValidateJoin(request);
3573
+ }
3574
+ async getOptimalYieldPath(request) {
3575
+ return await this.#koniState.earningService.generateOptimalSteps(request);
3576
+ }
3577
+ async handleYieldStep(inputData) {
3578
+ const {
3579
+ data,
3580
+ path
3581
+ } = inputData;
3582
+ const {
3583
+ address
3584
+ } = data;
3585
+ if (!data) {
3586
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INTERNAL_ERROR)]);
3587
+ }
3588
+ const isLastStep = inputData.currentStep + 1 === path.steps.length;
3589
+ const yieldValidation = await this.#koniState.earningService.validateYieldJoin({
3590
+ data,
3591
+ path
3592
+ }); // TODO: validate, set to fail upon submission
3593
+
3594
+ if (yieldValidation.length > 0) {
3595
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors(yieldValidation);
3596
+ }
3597
+
3598
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
3599
+ const {
3600
+ chainType,
3601
+ extrinsic,
3602
+ extrinsicType,
3603
+ transferNativeAmount,
3604
+ txChain,
3605
+ txData
3606
+ } = await this.#koniState.earningService.handleYieldJoin(inputData);
3607
+ const isPoolSupportAlternativeFee = this.#koniState.earningService.isPoolSupportAlternativeFee(inputData.data.slug);
3608
+ const isMintingStep = YIELD_EXTRINSIC_TYPES.includes(extrinsicType);
3609
+ return await this.#koniState.transactionService.handleTransaction({
3610
+ address,
3611
+ chain: txChain,
3612
+ transaction: extrinsic,
3613
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
3614
+ data: txData,
3615
+ extrinsicType,
3616
+ // change this depends on step
3617
+ chainType,
3618
+ resolveOnDone: !isLastStep,
3619
+ transferNativeAmount,
3620
+ skipFeeValidation: isMintingStep && isPoolSupportAlternativeFee
3621
+ });
3622
+ }
3623
+ async handleYieldLeave(params) {
3624
+ const {
3625
+ address,
3626
+ slug
3627
+ } = params;
3628
+ const leaveValidation = await this.#koniState.earningService.validateYieldLeave(params);
3629
+ if (leaveValidation.length > 0) {
3630
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors(leaveValidation);
3631
+ }
3632
+ const [extrinsicType, extrinsic] = await this.#koniState.earningService.handleYieldLeave(params);
3633
+ const handler = this.#koniState.earningService.getPoolHandler(slug);
3634
+ return await this.#koniState.transactionService.handleTransaction({
3635
+ address,
3636
+ chain: (handler === null || handler === void 0 ? void 0 : handler.chain) || '',
3637
+ transaction: extrinsic,
3638
+ data: params,
3639
+ // TODO
3640
+ extrinsicType,
3641
+ chainType: (handler === null || handler === void 0 ? void 0 : handler.transactionChainType) || ChainType.SUBSTRATE
3642
+ });
3643
+ }
3644
+ async getYieldPoolTargets(request) {
3645
+ const {
3646
+ slug
3647
+ } = request;
3648
+ await this.#koniState.earningService.waitForStarted();
3649
+ const targets = await this.#koniState.earningService.getPoolTargets(slug);
3650
+ return {
3651
+ slug,
3652
+ targets
3653
+ };
3654
+ }
3655
+ async subscribeYieldPosition(id, port) {
3656
+ const cb = createSubscription(id, port);
3657
+ await this.#koniState.earningService.waitForStarted();
3658
+ const yieldPositionSubscription = this.#koniState.earningService.subscribeYieldPosition().subscribe({
3659
+ next: rs => {
3660
+ cb(rs);
3661
+ }
3662
+ });
3663
+ this.createUnsubscriptionHandle(id, yieldPositionSubscription.unsubscribe);
3664
+ port.onDisconnect.addListener(() => {
3665
+ this.cancelSubscription(id);
3666
+ });
3667
+ return await this.#koniState.earningService.getYieldPositionInfo();
3668
+ }
3669
+ async subscribeYieldReward(id, port) {
3670
+ const cb = createSubscription(id, port);
3671
+ await this.#koniState.earningService.waitForStarted();
3672
+ const stakingRewardSubscription = this.#koniState.earningService.subscribeEarningReward().subscribe({
3673
+ next: rs => {
3674
+ cb(rs);
3675
+ }
3676
+ });
3677
+ this.createUnsubscriptionHandle(id, stakingRewardSubscription.unsubscribe);
3678
+ port.onDisconnect.addListener(() => {
3679
+ this.cancelSubscription(id);
3680
+ });
3681
+ return this.#koniState.earningService.getEarningRewards();
3682
+ }
3683
+ async subscribeYieldRewardHistory(id, port) {
3684
+ const cb = createSubscription(id, port);
3685
+ await this.#koniState.earningService.waitForStarted();
3686
+ const rewardHistorySubscription = this.#koniState.earningService.subscribeEarningRewardHistory().subscribe({
3687
+ next: rs => {
3688
+ cb(rs);
3689
+ }
3690
+ });
3691
+ this.createUnsubscriptionHandle(id, rewardHistorySubscription.unsubscribe);
3692
+ port.onDisconnect.addListener(() => {
3693
+ this.cancelSubscription(id);
3694
+ });
3695
+ return this.#koniState.earningService.getEarningRewardHistory();
3696
+ }
3697
+ async subscribeEarningMinAmountPercent(id, port) {
3698
+ const cb = createSubscription(id, port);
3699
+ await this.#koniState.earningService.waitForStarted();
3700
+ const earningMinAmountPercentSubscription = this.#koniState.earningService.subscribeMinAmountPercent().subscribe({
3701
+ next: rs => {
3702
+ cb(rs);
3703
+ }
3704
+ });
3705
+ this.createUnsubscriptionHandle(id, earningMinAmountPercentSubscription.unsubscribe);
3706
+ port.onDisconnect.addListener(() => {
3707
+ this.cancelSubscription(id);
3708
+ });
3709
+ return this.#koniState.earningService.getMinAmountPercent();
3710
+ }
3711
+ handleValidateYieldProcess(inputData) {
3712
+ return this.#koniState.earningService.validateYieldJoin(inputData);
3713
+ }
3714
+ async yieldSubmitWithdrawal(params) {
3715
+ const {
3716
+ address,
3717
+ slug
3718
+ } = params;
3719
+ const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3720
+ if (!poolHandler) {
3721
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
3722
+ }
3723
+ const extrinsic = await this.#koniState.earningService.handleYieldWithdraw(params);
3724
+ return await this.#koniState.transactionService.handleTransaction({
3725
+ address: address,
3726
+ chain: poolHandler.chain,
3727
+ transaction: extrinsic,
3728
+ data: params,
3729
+ extrinsicType: ExtrinsicType.STAKING_WITHDRAW,
3730
+ chainType: (poolHandler === null || poolHandler === void 0 ? void 0 : poolHandler.transactionChainType) || ChainType.SUBSTRATE
3731
+ });
3732
+ }
3733
+ async yieldSubmitCancelWithdrawal(params) {
3734
+ const {
3735
+ address,
3736
+ selectedUnstaking,
3737
+ slug
3738
+ } = params;
3739
+ const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3740
+ if (!poolHandler || !selectedUnstaking) {
3741
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
3742
+ }
3743
+ const chain = poolHandler.chain;
3744
+ const extrinsic = await this.#koniState.earningService.handleYieldCancelUnstake(params);
3745
+ return await this.#koniState.transactionService.handleTransaction({
3746
+ address,
3747
+ chain,
3748
+ transaction: extrinsic,
3749
+ data: params,
3750
+ extrinsicType: ExtrinsicType.STAKING_CANCEL_UNSTAKE,
3751
+ chainType: (poolHandler === null || poolHandler === void 0 ? void 0 : poolHandler.transactionChainType) || ChainType.SUBSTRATE
3752
+ });
3753
+ }
3754
+ async yieldSubmitClaimReward(params) {
3755
+ const {
3756
+ address,
3757
+ slug
3758
+ } = params;
3759
+ const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3760
+ if (!address || !poolHandler) {
3761
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
3762
+ }
3763
+ const extrinsic = await this.#koniState.earningService.handleYieldClaimReward(params);
3764
+ return await this.#koniState.transactionService.handleTransaction({
3765
+ address,
3766
+ chain: poolHandler.chain,
3767
+ transaction: extrinsic,
3768
+ data: params,
3769
+ extrinsicType: ExtrinsicType.STAKING_CLAIM_REWARD,
3770
+ chainType: (poolHandler === null || poolHandler === void 0 ? void 0 : poolHandler.transactionChainType) || ChainType.SUBSTRATE
3771
+ });
3772
+ }
3556
3773
 
3557
3774
  /* Campaign */
3558
3775
 
3776
+ unlockDotCheckCanMint({
3777
+ address,
3778
+ network,
3779
+ slug
3780
+ }) {
3781
+ return this.#koniState.mintCampaignService.unlockDotCampaign.canMint(address, slug, network);
3782
+ }
3783
+ unlockDotSubscribeMintedData(id, port, {
3784
+ transactionId
3785
+ }) {
3786
+ const cb = createSubscription(id, port);
3787
+ const subscription = this.#koniState.mintCampaignService.unlockDotCampaign.subscribeMintedNft(transactionId, cb);
3788
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
3789
+ port.onDisconnect.addListener(() => {
3790
+ this.cancelSubscription(id);
3791
+ });
3792
+ return this.#koniState.mintCampaignService.unlockDotCampaign.getMintedNft(transactionId);
3793
+ }
3559
3794
  async subscribeProcessingBanner(id, port) {
3560
3795
  const cb = createSubscription(id, port);
3561
3796
  const filterBanner = data => {
@@ -3758,6 +3993,8 @@ export default class KoniExtension {
3758
3993
  return await this.subscribeBalance(id, port);
3759
3994
  case 'pri(crowdloan.getCrowdloan)':
3760
3995
  return this.getCrowdloan();
3996
+ case 'pri(crowdloan.getCrowdloanContributions)':
3997
+ return this.getCrowdloanContributions(request);
3761
3998
  case 'pri(crowdloan.getSubscription)':
3762
3999
  return this.subscribeCrowdloan(id, port);
3763
4000
  case 'pri(derivation.createV2)':
@@ -3787,6 +4024,57 @@ export default class KoniExtension {
3787
4024
  case 'pri(transaction.history.subscribe)':
3788
4025
  return this.subscribeHistoryByChainAndAddress(request, id, port);
3789
4026
 
4027
+ /* Earning */
4028
+
4029
+ /* Info */
4030
+
4031
+ case 'pri(yield.subscribePoolInfo)':
4032
+ return this.subscribeYieldPoolInfo(id, port);
4033
+ case 'pri(yield.getTargets)':
4034
+ return this.getYieldPoolTargets(request);
4035
+ case 'pri(yield.subscribeYieldPosition)':
4036
+ return this.subscribeYieldPosition(id, port);
4037
+ case 'pri(yield.subscribeYieldReward)':
4038
+ return this.subscribeYieldReward(id, port);
4039
+ case 'pri(yield.subscribeRewardHistory)':
4040
+ return this.subscribeYieldRewardHistory(id, port);
4041
+ case 'pri(yield.minAmountPercent)':
4042
+ return this.subscribeEarningMinAmountPercent(id, port);
4043
+
4044
+ /* Info */
4045
+
4046
+ /* Actions */
4047
+
4048
+ /* Join */
4049
+
4050
+ case 'pri(yield.join.earlyValidate)':
4051
+ return await this.earlyValidateJoin(request);
4052
+ case 'pri(yield.join.getOptimalPath)':
4053
+ return await this.getOptimalYieldPath(request);
4054
+ case 'pri(yield.join.handleStep)':
4055
+ return await this.handleYieldStep(request);
4056
+ case 'pri(yield.join.validateProcess)':
4057
+ return await this.handleValidateYieldProcess(request);
4058
+
4059
+ /* Join */
4060
+
4061
+ /* Others */
4062
+
4063
+ case 'pri(yield.leave.submit)':
4064
+ return await this.handleYieldLeave(request);
4065
+ case 'pri(yield.withdraw.submit)':
4066
+ return await this.yieldSubmitWithdrawal(request);
4067
+ case 'pri(yield.cancelWithdrawal.submit)':
4068
+ return await this.yieldSubmitCancelWithdrawal(request);
4069
+ case 'pri(yield.claimReward.submit)':
4070
+ return await this.yieldSubmitClaimReward(request);
4071
+
4072
+ /* Others */
4073
+
4074
+ /* Actions */
4075
+
4076
+ /* Earning */
4077
+
3790
4078
  /* Account management */
3791
4079
  // Add account
3792
4080
  case 'pri(accounts.create.suriV2)':
@@ -3905,6 +4193,8 @@ export default class KoniExtension {
3905
4193
  return this.transferGetExistentialDeposit(request);
3906
4194
  case 'pri(transfer.getMaxTransferable)':
3907
4195
  return this.transferGetMaxTransferable(request);
4196
+ case 'pri(transfer.subscribeMaxTransferable)':
4197
+ return this.transferGetMaxTransferable(request);
3908
4198
  case 'pri(freeBalance.get)':
3909
4199
  return this.getAddressFreeBalance(request);
3910
4200
  case 'pri(freeBalance.subscribe)':
@@ -3963,8 +4253,6 @@ export default class KoniExtension {
3963
4253
  return await this.submitBonding(request);
3964
4254
  case 'pri(unbonding.submitTransaction)':
3965
4255
  return await this.submitUnbonding(request);
3966
- case 'pri(unbonding.submitWithdrawal)':
3967
- return await this.submitStakeWithdrawal(request);
3968
4256
  case 'pri(staking.submitClaimReward)':
3969
4257
  return await this.submitStakeClaimReward(request);
3970
4258
  case 'pri(staking.submitCancelWithdrawal)':
@@ -4068,6 +4356,15 @@ export default class KoniExtension {
4068
4356
  case 'pri(mantaPay.subscribeSyncingState)':
4069
4357
  return this.subscribeMantaPaySyncState(id, port);
4070
4358
 
4359
+ /* Campaign */
4360
+
4361
+ case 'pri(campaign.unlockDot.canMint)':
4362
+ return this.unlockDotCheckCanMint(request);
4363
+ case 'pri(campaign.unlockDot.subscribe)':
4364
+ return this.unlockDotSubscribeMintedData(id, port, request);
4365
+
4366
+ /* Campaign */
4367
+
4071
4368
  // Metadata
4072
4369
  case 'pri(metadata.find)':
4073
4370
  return this.findRawMetadata(request);
@@ -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';
@@ -64,8 +66,10 @@ export default class KoniState {
64
66
  readonly migrationService: MigrationService;
65
67
  readonly subscanService: SubscanService;
66
68
  readonly walletConnectService: WalletConnectService;
69
+ readonly mintCampaignService: MintCampaignService;
67
70
  readonly campaignService: CampaignService;
68
71
  readonly buyService: BuyService;
72
+ readonly earningService: EarningService;
69
73
  private generalStatus;
70
74
  private waitSleeping;
71
75
  private waitStarting;
@@ -251,5 +255,6 @@ export default class KoniState {
251
255
  metadata: string;
252
256
  specVersion: number;
253
257
  }>;
258
+ getCrowdloanContributions({ address, page, relayChain }: RequestCrowdloanContributions): Promise<import("../../../services/subscan-service/types").CrowdloanContributionsResponse>;
254
259
  }
255
260
  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';
@@ -93,11 +95,13 @@ export default class KoniState {
93
95
  this.priceService = new PriceService(this.dbService, this.eventService, this.chainService);
94
96
  this.balanceService = new BalanceService(this);
95
97
  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);
98
+ this.mintCampaignService = new MintCampaignService(this);
97
99
  this.walletConnectService = new WalletConnectService(this, this.requestService);
98
100
  this.migrationService = new MigrationService(this, this.eventService);
99
101
  this.campaignService = new CampaignService(this);
100
102
  this.buyService = new BuyService(this);
103
+ this.transactionService = new TransactionService(this);
104
+ this.earningService = new EarningService(this);
101
105
  this.subscription = new KoniSubscription(this, this.dbService);
102
106
  this.cron = new KoniCron(this, this.subscription, this.dbService);
103
107
  this.logger = createLogger('State');
@@ -218,6 +222,7 @@ export default class KoniState {
218
222
  await this.migrationService.run();
219
223
  this.campaignService.init();
220
224
  this.eventService.emit('chain.ready', true);
225
+ await this.earningService.init();
221
226
  this.onReady();
222
227
  this.onAccountAdd();
223
228
  this.onAccountRemove();
@@ -240,20 +245,13 @@ export default class KoniState {
240
245
  }
241
246
  async startSubscription() {
242
247
  await this.eventService.waitKeyringReady;
248
+ await this.eventService.waitAssetReady;
243
249
  this.dbService.subscribeChainStakingMetadata([], data => {
244
250
  this.chainStakingMetadataSubject.next(data);
245
251
  });
246
252
  this.dbService.subscribeMantaPayConfig(_DEFAULT_MANTA_ZK_CHAIN, data => {
247
253
  this.mantaPayConfigSubject.next(data);
248
254
  });
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
- });
257
255
  }
258
256
  onReady() {
259
257
  // Todo: Need optimize in the future to, only run important services onetime to save resources
@@ -1409,7 +1407,7 @@ export default class KoniState {
1409
1407
  // Stopping services
1410
1408
  await Promise.all([this.cron.stop(), this.subscription.stop()]);
1411
1409
  await this.pauseAllNetworks(undefined, 'IDLE mode');
1412
- await Promise.all([this.historyService.stop(), this.priceService.stop()]);
1410
+ await Promise.all([this.historyService.stop(), this.priceService.stop(), this.earningService.stop()]);
1413
1411
 
1414
1412
  // Complete sleeping
1415
1413
  sleeping.resolve();
@@ -1441,7 +1439,7 @@ export default class KoniState {
1441
1439
  }
1442
1440
 
1443
1441
  // Start services
1444
- await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start()]);
1442
+ await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.earningService.start()]);
1445
1443
 
1446
1444
  // Complete starting
1447
1445
  starting.resolve();
@@ -1542,7 +1540,7 @@ export default class KoniState {
1542
1540
  return await this.cron.reloadNft();
1543
1541
  }
1544
1542
  async reloadStaking() {
1545
- await this.subscription.reloadStaking();
1543
+ await this.earningService.reloadEarning(true);
1546
1544
  return true;
1547
1545
  }
1548
1546
  async reloadBalance() {
@@ -1741,4 +1739,11 @@ export default class KoniState {
1741
1739
  specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
1742
1740
  };
1743
1741
  }
1742
+ getCrowdloanContributions({
1743
+ address,
1744
+ page,
1745
+ relayChain
1746
+ }) {
1747
+ return this.subscanService.getCrowdloanContributions(relayChain, address, page);
1748
+ }
1744
1749
  }
@@ -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
  });
@@ -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' | 'stakingOnChain' | 'essentialChainStakingMetadata';
5
+ declare type SubscriptionName = 'balance' | 'crowdloan' | 'yieldPoolStats' | 'yieldPosition';
6
6
  export declare class KoniSubscription {
7
7
  private eventHandler?;
8
8
  private subscriptionMap;
@@ -18,16 +18,11 @@ 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;
24
21
  initBalanceSubscription(addresses: string[], chainInfoMap: Record<string, _ChainInfo>, chainStateMap: Record<string, _ChainState>, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
25
22
  initCrowdloanSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
26
23
  subscribeNft(address: string, substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>): void;
27
24
  initNftSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>): void;
28
25
  subscribeStakingReward(address: string): Promise<void>;
29
- subscribeStakingRewardFastInterval(address: string): Promise<void>;
30
- reloadStaking(): Promise<void>;
31
26
  reloadBalance(): Promise<void>;
32
27
  reloadCrowdloan(): Promise<void>;
33
28
  }