@subwallet/extension-base 1.1.33-beta.1 → 1.1.34-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/background/KoniTypes.d.ts +69 -120
  2. package/background/KoniTypes.js +13 -22
  3. package/background/errors/TransactionError.js +0 -9
  4. package/cjs/background/KoniTypes.js +16 -23
  5. package/cjs/background/errors/TransactionError.js +0 -9
  6. package/cjs/constants/index.js +4 -19
  7. package/cjs/koni/api/nft/config.js +23 -33
  8. package/cjs/koni/api/nft/index.js +0 -14
  9. package/cjs/koni/api/nft/nft.js +22 -1
  10. package/cjs/koni/api/staking/bonding/amplitude.js +16 -19
  11. package/cjs/koni/api/staking/bonding/astar.js +10 -11
  12. package/cjs/koni/api/staking/bonding/index.js +1 -4
  13. package/cjs/koni/api/staking/bonding/paraChain.js +23 -25
  14. package/cjs/koni/api/staking/bonding/relayChain.js +45 -48
  15. package/cjs/koni/api/staking/bonding/utils.js +86 -104
  16. package/cjs/koni/api/staking/index.js +5 -6
  17. package/cjs/koni/api/staking/paraChain.js +17 -10
  18. package/cjs/koni/api/staking/relayChain.js +2 -3
  19. package/cjs/koni/background/cron.js +21 -3
  20. package/cjs/koni/background/handlers/Extension.js +69 -368
  21. package/cjs/koni/background/handlers/State.js +12 -18
  22. package/cjs/koni/background/handlers/index.js +2 -4
  23. package/cjs/koni/background/subscription.js +104 -7
  24. package/cjs/packageInfo.js +1 -1
  25. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +1 -3
  26. package/cjs/services/campaign-service/index.js +6 -9
  27. package/cjs/services/chain-service/constants.js +17 -2
  28. package/cjs/services/chain-service/index.js +3 -25
  29. package/cjs/services/chain-service/utils.js +1 -7
  30. package/cjs/services/event-service/index.js +0 -5
  31. package/cjs/services/keyring-service/index.js +2 -14
  32. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  33. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  34. package/cjs/services/migration-service/scripts/index.js +1 -6
  35. package/cjs/services/notification-service/NotificationService.js +1 -1
  36. package/cjs/services/storage-service/DatabaseService.js +1 -92
  37. package/cjs/services/storage-service/databases/index.js +0 -7
  38. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  39. package/cjs/services/subscan-service/index.js +0 -16
  40. package/cjs/services/transaction-service/event-parser/index.js +0 -58
  41. package/cjs/services/transaction-service/helpers/index.js +1 -3
  42. package/cjs/services/transaction-service/index.js +75 -252
  43. package/cjs/services/transaction-service/utils.js +0 -1
  44. package/cjs/types/index.js +0 -44
  45. package/cjs/utils/fetchStaticData.js +1 -2
  46. package/cjs/utils/index.js +1 -89
  47. package/cjs/utils/number.js +2 -6
  48. package/constants/index.d.ts +1 -6
  49. package/constants/index.js +1 -6
  50. package/koni/api/nft/config.js +23 -33
  51. package/koni/api/nft/index.js +1 -15
  52. package/koni/api/nft/nft.js +23 -2
  53. package/koni/api/staking/bonding/amplitude.js +10 -13
  54. package/koni/api/staking/bonding/astar.js +8 -9
  55. package/koni/api/staking/bonding/index.d.ts +1 -1
  56. package/koni/api/staking/bonding/index.js +1 -5
  57. package/koni/api/staking/bonding/paraChain.js +10 -12
  58. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  59. package/koni/api/staking/bonding/relayChain.js +30 -33
  60. package/koni/api/staking/bonding/utils.d.ts +38 -15
  61. package/koni/api/staking/bonding/utils.js +69 -85
  62. package/koni/api/staking/index.js +1 -2
  63. package/koni/api/staking/paraChain.js +18 -11
  64. package/koni/api/staking/relayChain.js +3 -4
  65. package/koni/background/cron.d.ts +4 -0
  66. package/koni/background/cron.js +22 -4
  67. package/koni/background/handlers/Extension.d.ts +1 -17
  68. package/koni/background/handlers/Extension.js +30 -327
  69. package/koni/background/handlers/State.d.ts +1 -6
  70. package/koni/background/handlers/State.js +12 -17
  71. package/koni/background/handlers/index.js +2 -4
  72. package/koni/background/subscription.d.ts +6 -1
  73. package/koni/background/subscription.js +104 -8
  74. package/package.json +8 -331
  75. package/packageInfo.js +1 -1
  76. package/services/balance-service/helpers/subscribe/substrate/index.js +2 -4
  77. package/services/campaign-service/index.js +6 -9
  78. package/services/chain-service/constants.d.ts +13 -1
  79. package/services/chain-service/constants.js +15 -1
  80. package/services/chain-service/index.d.ts +0 -2
  81. package/services/chain-service/index.js +3 -25
  82. package/services/chain-service/utils.d.ts +0 -1
  83. package/services/chain-service/utils.js +1 -5
  84. package/services/event-service/index.d.ts +0 -2
  85. package/services/event-service/index.js +0 -5
  86. package/services/event-service/types.d.ts +0 -9
  87. package/services/keyring-service/index.d.ts +1 -2
  88. package/services/keyring-service/index.js +2 -14
  89. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  90. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  91. package/services/migration-service/scripts/index.js +1 -6
  92. package/services/notification-service/NotificationService.js +1 -1
  93. package/services/storage-service/DatabaseService.d.ts +3 -30
  94. package/services/storage-service/DatabaseService.js +1 -91
  95. package/services/storage-service/databases/index.d.ts +2 -8
  96. package/services/storage-service/databases/index.js +0 -7
  97. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  98. package/services/subscan-service/index.d.ts +2 -3
  99. package/services/subscan-service/index.js +0 -15
  100. package/services/subscan-service/types.d.ts +0 -20
  101. package/services/transaction-service/event-parser/index.d.ts +1 -3
  102. package/services/transaction-service/event-parser/index.js +1 -57
  103. package/services/transaction-service/helpers/index.js +1 -3
  104. package/services/transaction-service/index.d.ts +13 -6
  105. package/services/transaction-service/index.js +73 -250
  106. package/services/transaction-service/types.d.ts +0 -2
  107. package/services/transaction-service/utils.js +0 -1
  108. package/types/index.d.ts +0 -5
  109. package/types/index.js +1 -5
  110. package/utils/fetchStaticData.js +1 -2
  111. package/utils/index.d.ts +0 -5
  112. package/utils/index.js +0 -52
  113. package/utils/number.d.ts +1 -2
  114. package/utils/number.js +1 -2
  115. package/cjs/koni/api/dotsama/balance.js +0 -464
  116. package/cjs/koni/api/nft/ordinal_nft/constants.js +0 -21
  117. package/cjs/koni/api/nft/ordinal_nft/index.js +0 -121
  118. package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
  119. package/cjs/koni/api/yield/helper/utils.js +0 -49
  120. package/cjs/services/earning-service/constants/chains.js +0 -30
  121. package/cjs/services/earning-service/constants/index.js +0 -27
  122. package/cjs/services/earning-service/constants/step.js +0 -18
  123. package/cjs/services/earning-service/handlers/base.js +0 -262
  124. package/cjs/services/earning-service/handlers/index.js +0 -60
  125. package/cjs/services/earning-service/handlers/lending/base.js +0 -81
  126. package/cjs/services/earning-service/handlers/lending/index.js +0 -13
  127. package/cjs/services/earning-service/handlers/lending/interlay.js +0 -192
  128. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -240
  129. package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -98
  130. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +0 -140
  131. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -299
  132. package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -41
  133. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -227
  134. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -404
  135. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +0 -434
  136. package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -466
  137. package/cjs/services/earning-service/handlers/native-staking/base-para.js +0 -146
  138. package/cjs/services/earning-service/handlers/native-staking/base.js +0 -161
  139. package/cjs/services/earning-service/handlers/native-staking/index.js +0 -34
  140. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -390
  141. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +0 -567
  142. package/cjs/services/earning-service/handlers/nomination-pool/index.js +0 -566
  143. package/cjs/services/earning-service/handlers/special.js +0 -497
  144. package/cjs/services/earning-service/service.js +0 -741
  145. package/cjs/services/earning-service/utils/index.js +0 -128
  146. package/cjs/services/migration-service/scripts/DeleteEarningData.js +0 -21
  147. package/cjs/services/migration-service/scripts/EnableEarningChains.js +0 -21
  148. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
  149. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
  150. package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
  151. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -21
  152. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -21
  153. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -149
  154. package/cjs/services/mint-campaign-service/campaigns/index.js +0 -13
  155. package/cjs/services/mint-campaign-service/constants.js +0 -11
  156. package/cjs/services/mint-campaign-service/index.js +0 -18
  157. package/cjs/services/storage-service/db-stores/AssetRef.js +0 -24
  158. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +0 -36
  159. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +0 -71
  160. package/cjs/services/storage-service/index.js +0 -241
  161. package/cjs/types/campaigns/index.js +0 -16
  162. package/cjs/types/campaigns/unlock-dot.js +0 -1
  163. package/cjs/types/ordinal.js +0 -1
  164. package/cjs/types/transaction.js +0 -1
  165. package/cjs/types/yield/actions/index.js +0 -27
  166. package/cjs/types/yield/actions/join/index.js +0 -38
  167. package/cjs/types/yield/actions/join/step.js +0 -48
  168. package/cjs/types/yield/actions/join/submit.js +0 -1
  169. package/cjs/types/yield/actions/join/validate.js +0 -16
  170. package/cjs/types/yield/actions/others.js +0 -1
  171. package/cjs/types/yield/index.js +0 -27
  172. package/cjs/types/yield/info/account/index.js +0 -49
  173. package/cjs/types/yield/info/account/info.js +0 -1
  174. package/cjs/types/yield/info/account/reward.js +0 -1
  175. package/cjs/types/yield/info/account/target.js +0 -32
  176. package/cjs/types/yield/info/account/unstake.js +0 -27
  177. package/cjs/types/yield/info/base.js +0 -41
  178. package/cjs/types/yield/info/chain/index.js +0 -27
  179. package/cjs/types/yield/info/chain/info.js +0 -1
  180. package/cjs/types/yield/info/chain/target.js +0 -1
  181. package/cjs/types/yield/info/index.js +0 -49
  182. package/cjs/types/yield/info/pallet.js +0 -15
  183. package/cjs/types.js +0 -1
  184. package/cjs/utils/address.js +0 -34
  185. package/cjs/utils/keyring.js +0 -57
  186. package/cjs/utils/object.js +0 -12
  187. package/koni/api/nft/ordinal_nft/constants.d.ts +0 -9
  188. package/koni/api/nft/ordinal_nft/constants.js +0 -12
  189. package/koni/api/nft/ordinal_nft/index.d.ts +0 -8
  190. package/koni/api/nft/ordinal_nft/index.js +0 -114
  191. package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
  192. package/koni/api/nft/ordinal_nft/utils.js +0 -33
  193. package/koni/api/yield/helper/utils.d.ts +0 -10
  194. package/koni/api/yield/helper/utils.js +0 -34
  195. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +0 -1235
  196. package/services/earning-service/constants/abis/st_liquid_token_abi.json +0 -1355
  197. package/services/earning-service/constants/chains.d.ts +0 -15
  198. package/services/earning-service/constants/chains.js +0 -22
  199. package/services/earning-service/constants/index.d.ts +0 -2
  200. package/services/earning-service/constants/index.js +0 -5
  201. package/services/earning-service/constants/step.d.ts +0 -3
  202. package/services/earning-service/constants/step.js +0 -10
  203. package/services/earning-service/handlers/base.d.ts +0 -113
  204. package/services/earning-service/handlers/base.js +0 -256
  205. package/services/earning-service/handlers/index.d.ts +0 -5
  206. package/services/earning-service/handlers/index.js +0 -8
  207. package/services/earning-service/handlers/lending/base.d.ts +0 -8
  208. package/services/earning-service/handlers/lending/base.js +0 -73
  209. package/services/earning-service/handlers/lending/index.d.ts +0 -1
  210. package/services/earning-service/handlers/lending/index.js +0 -4
  211. package/services/earning-service/handlers/lending/interlay.d.ts +0 -24
  212. package/services/earning-service/handlers/lending/interlay.js +0 -184
  213. package/services/earning-service/handlers/liquid-staking/acala.d.ts +0 -27
  214. package/services/earning-service/handlers/liquid-staking/acala.js +0 -232
  215. package/services/earning-service/handlers/liquid-staking/base.d.ts +0 -11
  216. package/services/earning-service/handlers/liquid-staking/base.js +0 -90
  217. package/services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts +0 -37
  218. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +0 -132
  219. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +0 -46
  220. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -288
  221. package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -5
  222. package/services/earning-service/handlers/liquid-staking/index.js +0 -8
  223. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +0 -26
  224. package/services/earning-service/handlers/liquid-staking/parallel.js +0 -219
  225. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +0 -34
  226. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -394
  227. package/services/earning-service/handlers/native-staking/amplitude.d.ts +0 -22
  228. package/services/earning-service/handlers/native-staking/amplitude.js +0 -425
  229. package/services/earning-service/handlers/native-staking/astar.d.ts +0 -19
  230. package/services/earning-service/handlers/native-staking/astar.js +0 -456
  231. package/services/earning-service/handlers/native-staking/base-para.d.ts +0 -11
  232. package/services/earning-service/handlers/native-staking/base-para.js +0 -138
  233. package/services/earning-service/handlers/native-staking/base.d.ts +0 -21
  234. package/services/earning-service/handlers/native-staking/base.js +0 -152
  235. package/services/earning-service/handlers/native-staking/index.d.ts +0 -4
  236. package/services/earning-service/handlers/native-staking/index.js +0 -7
  237. package/services/earning-service/handlers/native-staking/para-chain.d.ts +0 -15
  238. package/services/earning-service/handlers/native-staking/para-chain.js +0 -382
  239. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -21
  240. package/services/earning-service/handlers/native-staking/relay-chain.js +0 -558
  241. package/services/earning-service/handlers/nomination-pool/index.d.ts +0 -36
  242. package/services/earning-service/handlers/nomination-pool/index.js +0 -556
  243. package/services/earning-service/handlers/special.d.ts +0 -64
  244. package/services/earning-service/handlers/special.js +0 -489
  245. package/services/earning-service/service.d.ts +0 -94
  246. package/services/earning-service/service.js +0 -730
  247. package/services/earning-service/utils/index.d.ts +0 -18
  248. package/services/earning-service/utils/index.js +0 -112
  249. package/services/migration-service/scripts/DeleteEarningData.d.ts +0 -4
  250. package/services/migration-service/scripts/DeleteEarningData.js +0 -13
  251. package/services/migration-service/scripts/EnableEarningChains.d.ts +0 -4
  252. package/services/migration-service/scripts/EnableEarningChains.js +0 -13
  253. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +0 -4
  254. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -13
  255. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +0 -4
  256. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -13
  257. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +0 -13
  258. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -139
  259. package/services/mint-campaign-service/campaigns/index.d.ts +0 -1
  260. package/services/mint-campaign-service/campaigns/index.js +0 -4
  261. package/services/mint-campaign-service/constants.d.ts +0 -1
  262. package/services/mint-campaign-service/constants.js +0 -4
  263. package/services/mint-campaign-service/index.d.ts +0 -7
  264. package/services/mint-campaign-service/index.js +0 -11
  265. package/services/storage-service/db-stores/AssetRef.d.ts +0 -7
  266. package/services/storage-service/db-stores/AssetRef.js +0 -16
  267. package/services/storage-service/db-stores/YieldPoolStore.d.ts +0 -10
  268. package/services/storage-service/db-stores/YieldPoolStore.js +0 -28
  269. package/services/storage-service/db-stores/YieldPositionStore.d.ts +0 -11
  270. package/services/storage-service/db-stores/YieldPositionStore.js +0 -63
  271. package/types/campaigns/index.d.ts +0 -1
  272. package/types/campaigns/index.js +0 -4
  273. package/types/campaigns/unlock-dot.d.ts +0 -71
  274. package/types/campaigns/unlock-dot.js +0 -1
  275. package/types/ordinal.d.ts +0 -69
  276. package/types/ordinal.js +0 -1
  277. package/types/transaction.d.ts +0 -3
  278. package/types/transaction.js +0 -1
  279. package/types/yield/actions/index.d.ts +0 -2
  280. package/types/yield/actions/index.js +0 -5
  281. package/types/yield/actions/join/index.d.ts +0 -3
  282. package/types/yield/actions/join/index.js +0 -6
  283. package/types/yield/actions/join/step.d.ts +0 -96
  284. package/types/yield/actions/join/step.js +0 -47
  285. package/types/yield/actions/join/submit.d.ts +0 -58
  286. package/types/yield/actions/join/submit.js +0 -1
  287. package/types/yield/actions/join/validate.d.ts +0 -18
  288. package/types/yield/actions/join/validate.js +0 -10
  289. package/types/yield/actions/others.d.ts +0 -85
  290. package/types/yield/actions/others.js +0 -1
  291. package/types/yield/index.d.ts +0 -2
  292. package/types/yield/index.js +0 -5
  293. package/types/yield/info/account/index.d.ts +0 -4
  294. package/types/yield/info/account/index.js +0 -7
  295. package/types/yield/info/account/info.d.ts +0 -92
  296. package/types/yield/info/account/info.js +0 -1
  297. package/types/yield/info/account/reward.d.ts +0 -47
  298. package/types/yield/info/account/reward.js +0 -1
  299. package/types/yield/info/account/target.d.ts +0 -43
  300. package/types/yield/info/account/target.js +0 -27
  301. package/types/yield/info/account/unstake.d.ts +0 -31
  302. package/types/yield/info/account/unstake.js +0 -22
  303. package/types/yield/info/base.d.ts +0 -45
  304. package/types/yield/info/base.js +0 -36
  305. package/types/yield/info/chain/index.d.ts +0 -2
  306. package/types/yield/info/chain/index.js +0 -5
  307. package/types/yield/info/chain/info.d.ts +0 -252
  308. package/types/yield/info/chain/info.js +0 -1
  309. package/types/yield/info/chain/target.d.ts +0 -37
  310. package/types/yield/info/chain/target.js +0 -1
  311. package/types/yield/info/index.d.ts +0 -4
  312. package/types/yield/info/index.js +0 -7
  313. package/types/yield/info/pallet.d.ts +0 -143
  314. package/types/yield/info/pallet.js +0 -9
  315. package/utils/object.d.ts +0 -1
  316. package/utils/object.js +0 -6
@@ -1,730 +0,0 @@
1
- // Copyright 2019-2022 @subwallet/extension-base
2
- // SPDX-License-Identifier: Apache-2.0
3
-
4
- import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
5
- import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
6
- import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL } from '@subwallet/extension-base/constants';
7
- import { ServiceStatus } from '@subwallet/extension-base/services/base/types';
8
- import { _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
9
- import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
10
- import BaseLiquidStakingPoolHandler from '@subwallet/extension-base/services/earning-service/handlers/liquid-staking/base';
11
- import { YieldPoolType } from '@subwallet/extension-base/types';
12
- import { addLazy, categoryAddresses, createPromiseHandler } from '@subwallet/extension-base/utils';
13
- import fetch from 'cross-fetch';
14
- import { BehaviorSubject } from 'rxjs';
15
- import { AcalaLiquidStakingPoolHandler, AmplitudeNativeStakingPoolHandler, AstarNativeStakingPoolHandler, BifrostLiquidStakingPoolHandler, BifrostMantaLiquidStakingPoolHandler, InterlayLendingPoolHandler, NominationPoolHandler, ParallelLiquidStakingPoolHandler, ParaNativeStakingPoolHandler, RelayNativeStakingPoolHandler, StellaSwapLiquidStakingPoolHandler } from "./handlers/index.js";
16
- const POOLS_DATA_URLS = 'https://sw-static-cache.pages.dev/earning/yield-pools.json';
17
- const fetchPoolsData = async () => {
18
- const res = await fetch(POOLS_DATA_URLS);
19
- if (res.status !== 200) {
20
- return {};
21
- }
22
- const fetchData = await res.json();
23
- return fetchData.data;
24
- };
25
- export default class EarningService {
26
- handlers = {};
27
- earningRewardSubject = new BehaviorSubject({
28
- ready: false,
29
- data: {}
30
- });
31
- earningRewardHistorySubject = new BehaviorSubject({});
32
- minAmountPercentSubject = new BehaviorSubject({});
33
-
34
- // earning
35
- yieldPoolInfoSubject = new BehaviorSubject({});
36
- yieldPositionSubject = new BehaviorSubject({});
37
- yieldPositionListSubject = new BehaviorSubject([]); // virtual list of yieldPositionSubject with filter values
38
-
39
- constructor(state) {
40
- this.state = state;
41
- this.dbService = state.dbService;
42
- this.eventService = state.eventService;
43
- }
44
- async initHandlers() {
45
- await this.eventService.waitChainReady;
46
- const chains = [];
47
- for (const chain of Object.values(this.state.getChainInfoMap())) {
48
- if (chain.chainStatus === 'ACTIVE') {
49
- chains.push(chain.slug);
50
- }
51
- }
52
- const minAmountPercent = {};
53
- for (const chain of chains) {
54
- const handlers = [];
55
- if (_STAKING_CHAIN_GROUP.relay.includes(chain)) {
56
- handlers.push(new RelayNativeStakingPoolHandler(this.state, chain));
57
- }
58
- if (_STAKING_CHAIN_GROUP.para.includes(chain)) {
59
- handlers.push(new ParaNativeStakingPoolHandler(this.state, chain));
60
- }
61
- if (_STAKING_CHAIN_GROUP.astar.includes(chain)) {
62
- handlers.push(new AstarNativeStakingPoolHandler(this.state, chain));
63
- }
64
- if (_STAKING_CHAIN_GROUP.amplitude.includes(chain)) {
65
- handlers.push(new AmplitudeNativeStakingPoolHandler(this.state, chain));
66
- }
67
- if (_STAKING_CHAIN_GROUP.nominationPool.includes(chain)) {
68
- handlers.push(new NominationPoolHandler(this.state, chain));
69
- }
70
- if (_STAKING_CHAIN_GROUP.liquidStaking.includes(chain)) {
71
- if (chain === 'bifrost_dot') {
72
- handlers.push(new BifrostLiquidStakingPoolHandler(this.state, chain));
73
- handlers.push(new BifrostMantaLiquidStakingPoolHandler(this.state, chain));
74
- }
75
- if (chain === 'acala') {
76
- handlers.push(new AcalaLiquidStakingPoolHandler(this.state, chain));
77
- }
78
- if (chain === 'parallel') {
79
- handlers.push(new ParallelLiquidStakingPoolHandler(this.state, chain));
80
- }
81
- if (chain === 'moonbeam') {
82
- handlers.push(new StellaSwapLiquidStakingPoolHandler(this.state, chain));
83
- }
84
- }
85
- if (_STAKING_CHAIN_GROUP.lending.includes(chain)) {
86
- if (chain === 'interlay') {
87
- handlers.push(new InterlayLendingPoolHandler(this.state, chain));
88
- }
89
- }
90
- for (const handler of handlers) {
91
- this.handlers[handler.slug] = handler;
92
- }
93
- }
94
- for (const handler of Object.values(this.handlers)) {
95
- if (handler.type === YieldPoolType.LIQUID_STAKING) {
96
- minAmountPercent[handler.slug] = handler.minAmountPercent;
97
- }
98
- }
99
- minAmountPercent.default = BaseLiquidStakingPoolHandler.defaultMinAmountPercent;
100
- this.minAmountPercentSubject.next(minAmountPercent);
101
-
102
- // Emit earning ready
103
- this.eventService.emit('earning.ready', true);
104
- }
105
- startPromiseHandler = createPromiseHandler();
106
- stopPromiseHandler = createPromiseHandler();
107
- status = ServiceStatus.NOT_INITIALIZED;
108
- async init() {
109
- this.status = ServiceStatus.INITIALIZING;
110
- await this.initHandlers();
111
-
112
- // Load data from db
113
- await this.loadData();
114
-
115
- // Pin list with value from map
116
- this.yieldPositionSubject.subscribe({
117
- next: data => {
118
- const activeMap = this.state.getActiveChainInfoMap();
119
- const activePositions = Object.values(data).filter(item => {
120
- return !!activeMap[item.chain];
121
- });
122
- this.yieldPositionListSubject.next(Object.values(activePositions));
123
- }
124
- });
125
- this.status = ServiceStatus.INITIALIZED;
126
- await this.start();
127
- this.handleActions();
128
- }
129
- handleActions() {
130
- this.eventService.onLazy((events, eventTypes) => {
131
- (async () => {
132
- const removedAddresses = [];
133
- events.forEach(event => {
134
- if (event.type === 'account.remove') {
135
- removedAddresses.push(event.data[0]);
136
- }
137
- });
138
- if (removedAddresses.length > 0) {
139
- await this.removeYieldPositions(undefined, removedAddresses);
140
- }
141
-
142
- // Account changed or chain changed (active or inactive)
143
- // Chain changed (active or inactive)
144
- // Todo: Optimize performance of chain active or inactive in the future
145
- if (eventTypes.includes('account.updateCurrent') || eventTypes.includes('account.remove') || eventTypes.includes('chain.updateState')) {
146
- await this.reloadEarning();
147
- }
148
- })().catch(console.error);
149
- });
150
- }
151
- async loadData() {
152
- await this.getYieldPoolInfoFromDB();
153
- await this.getYieldPositionFromDB();
154
- }
155
- persistData() {
156
- // Data is auto persisted with lazy queue
157
- return Promise.resolve(undefined);
158
- }
159
- async start() {
160
- if (this.status === ServiceStatus.STOPPING) {
161
- await this.waitForStopped();
162
- }
163
- if (this.status === ServiceStatus.STARTED || this.status === ServiceStatus.STARTING) {
164
- return this.waitForStarted();
165
- }
166
- this.status = ServiceStatus.STARTING;
167
-
168
- // Start subscribe pools' info
169
- await this.runSubscribePoolsInfo();
170
-
171
- // Start subscribe pools' position
172
- await this.runSubscribePoolsPosition();
173
-
174
- // Start subscribe pools' reward
175
- this.runSubscribeStakingRewardInterval();
176
-
177
- // Start subscribe pools' reward history
178
- this.runSubscribeEarningRewardHistoryInterval();
179
-
180
- // Update promise handler
181
- this.startPromiseHandler.resolve();
182
- this.stopPromiseHandler = createPromiseHandler();
183
- this.status = ServiceStatus.STARTED;
184
- }
185
- async stop() {
186
- if (this.status === ServiceStatus.STARTING) {
187
- await this.waitForStarted();
188
- }
189
- if (this.status === ServiceStatus.STOPPED || this.status === ServiceStatus.STOPPING) {
190
- return this.waitForStopped();
191
- }
192
- this.status = ServiceStatus.STOPPING;
193
- await this.persistData();
194
-
195
- // Stop subscribe pools' info
196
- this.runUnsubscribePoolsInfo();
197
-
198
- // Stop subscribe pools' position
199
- this.runUnsubscribePoolsPosition();
200
-
201
- // Stop subscribe pools' reward
202
- this.runUnsubscribeStakingRewardInterval();
203
-
204
- // Stop subscribe pools' reward history
205
- this.runUnsubscribeEarningRewardHistoryInterval();
206
-
207
- // Update promise handler
208
- this.stopPromiseHandler.resolve();
209
- this.startPromiseHandler = createPromiseHandler();
210
- this.status = ServiceStatus.STOPPED;
211
- }
212
- waitForStarted() {
213
- return this.startPromiseHandler.promise;
214
- }
215
- waitForStopped() {
216
- return this.stopPromiseHandler.promise;
217
- }
218
-
219
- /* Pools' info methods */
220
-
221
- getPoolHandler(slug) {
222
- return this.handlers[slug];
223
- }
224
- isPoolSupportAlternativeFee(slug) {
225
- const handler = this.getPoolHandler(slug);
226
- if (handler) {
227
- return handler.isPoolSupportAlternativeFee;
228
- } else {
229
- throw new TransactionError(BasicTxErrorType.INTERNAL_ERROR);
230
- }
231
- }
232
- subscribeMinAmountPercent() {
233
- return this.minAmountPercentSubject;
234
- }
235
- getMinAmountPercent() {
236
- return this.minAmountPercentSubject.getValue();
237
- }
238
- async getYieldPool(slug) {
239
- await this.eventService.waitEarningReady;
240
- return this.yieldPoolInfoSubject.getValue()[slug];
241
- }
242
- async subscribePoolsInfo(callback) {
243
- let cancel = false;
244
- await this.eventService.waitChainReady;
245
- const unsubList = [];
246
- for (const handler of Object.values(this.handlers)) {
247
- handler.subscribePoolInfo(callback).then(unsub => {
248
- if (!cancel) {
249
- unsubList.push(unsub);
250
- } else {
251
- unsub();
252
- }
253
- }).catch(console.error);
254
- }
255
- return () => {
256
- cancel = true;
257
- unsubList.forEach(unsub => {
258
- unsub === null || unsub === void 0 ? void 0 : unsub();
259
- });
260
- };
261
- }
262
- async getYieldPoolInfoFromDB() {
263
- // Get online pool data
264
- const yieldPoolInfo = {};
265
- const existedYieldPoolInfo = await this.dbService.getYieldPools();
266
- existedYieldPoolInfo.forEach(info => {
267
- yieldPoolInfo[info.slug] = info;
268
- });
269
- this.yieldPoolInfoSubject.next(yieldPoolInfo);
270
- }
271
- subscribeYieldPoolInfo() {
272
- return this.yieldPoolInfoSubject;
273
- }
274
- async getYieldPoolInfo() {
275
- await this.eventService.waitEarningReady;
276
- return Object.values(this.yieldPoolInfoSubject.getValue());
277
- }
278
- yieldPoolPersistQueue = [];
279
- updateYieldPoolInfo(data) {
280
- this.yieldPoolPersistQueue.push(data);
281
- addLazy('persistYieldPoolInfo', () => {
282
- const yieldPoolInfo = this.yieldPoolInfoSubject.getValue();
283
- const queue = [...this.yieldPoolPersistQueue];
284
- this.yieldPoolPersistQueue = [];
285
-
286
- // Update yield pool info
287
- queue.forEach(item => {
288
- const existed = yieldPoolInfo[item.slug];
289
- if (item.statistic && (!(existed !== null && existed !== void 0 && existed.lastUpdated) || existed.lastUpdated < ((item === null || item === void 0 ? void 0 : item.lastUpdated) || 0))) {
290
- // Only update item has statistic information
291
- yieldPoolInfo[item.slug] = item;
292
- }
293
- });
294
- this.yieldPoolInfoSubject.next(yieldPoolInfo);
295
-
296
- // Persist data
297
- this.dbService.updateYieldPoolsStore(queue).catch(console.warn);
298
- }, 300, 900);
299
- }
300
- async fetchingPoolsInfoOnline() {
301
- const onlineData = await Promise.race([fetchPoolsData(), new Promise(resolve => {
302
- setTimeout(() => {
303
- resolve({});
304
- }, 1800);
305
- })]);
306
- Object.values(onlineData).forEach(item => {
307
- this.updateYieldPoolInfo(item);
308
- });
309
- }
310
- async runSubscribePoolsInfo() {
311
- await this.eventService.waitChainReady;
312
- this.runUnsubscribePoolsInfo();
313
-
314
- // Fetching online data
315
- await this.fetchingPoolsInfoOnline();
316
- const interval = setInterval(() => {
317
- this.fetchingPoolsInfoOnline().catch(console.error);
318
- }, CRON_REFRESH_CHAIN_STAKING_METADATA);
319
-
320
- // Fetching from chains
321
- this.subscribePoolsInfo(data => {
322
- data.lastUpdated = Date.now();
323
- this.updateYieldPoolInfo(data);
324
- }).then(rs => {
325
- this.yieldPoolsInfoUnsub = () => {
326
- rs();
327
- clearInterval(interval);
328
- };
329
- }).catch(console.error);
330
- }
331
- runUnsubscribePoolsInfo() {
332
- var _this$yieldPoolsInfoU;
333
- (_this$yieldPoolsInfoU = this.yieldPoolsInfoUnsub) === null || _this$yieldPoolsInfoU === void 0 ? void 0 : _this$yieldPoolsInfoU.call(this);
334
- }
335
-
336
- /* Pools' info methods */
337
-
338
- /* Pools' position methods */
339
-
340
- async getYieldPosition(address, slug) {
341
- await this.eventService.waitEarningReady;
342
- return this.yieldPositionSubject.getValue()[`${slug}---${address}`];
343
- }
344
- async subscribePoolPositions(addresses, callback) {
345
- let cancel = false;
346
- await this.eventService.waitChainReady;
347
- const [substrateAddresses, evmAddresses] = categoryAddresses(addresses);
348
- const activeChains = this.state.activeChainSlugs;
349
- const unsubList = [];
350
- for (const handler of Object.values(this.handlers)) {
351
- if (activeChains.includes(handler.chain)) {
352
- const chainInfo = handler.chainInfo;
353
- const useAddresses = _isChainEvmCompatible(chainInfo) ? evmAddresses : substrateAddresses;
354
- handler.subscribePoolPosition(useAddresses, callback).then(unsub => {
355
- if (cancel) {
356
- unsub();
357
- } else {
358
- unsubList.push(unsub);
359
- }
360
- }).catch(console.error);
361
- }
362
- }
363
- return () => {
364
- cancel = true;
365
- unsubList.forEach(unsub => {
366
- unsub === null || unsub === void 0 ? void 0 : unsub();
367
- });
368
- };
369
- }
370
- async removeYieldPositions(chains, addresses) {
371
- const removeKeys = [];
372
- chains && chains.length > 0 && Object.entries(this.yieldPositionSubject.getValue()).forEach(([key, value]) => {
373
- console.log('removeYieldPositions', key, value.chain, chains.indexOf(value.chain) > -1);
374
- if (chains.indexOf(value.chain) > -1 && !removeKeys.includes(key)) {
375
- removeKeys.push(key);
376
- }
377
- });
378
- addresses && addresses.length > 0 && Object.entries(this.yieldPositionSubject.getValue()).forEach(([key, value]) => {
379
- if (addresses.indexOf(value.address) > -1 && !removeKeys.includes(key)) {
380
- removeKeys.push(key);
381
- }
382
- });
383
-
384
- // Remove by keys
385
- const yieldPositionInfo = this.yieldPositionSubject.getValue();
386
- for (const key of removeKeys) {
387
- delete yieldPositionInfo[key];
388
- }
389
- this.yieldPositionSubject.next(yieldPositionInfo);
390
- addresses && addresses.length > 0 && (await this.dbService.removeYieldPositionByAddresses(addresses));
391
- chains && chains.length > 0 && (await this.dbService.removeYieldPositionByChains(chains));
392
- }
393
- async getYieldPositionFromDB() {
394
- await this.eventService.waitChainReady;
395
- await this.eventService.waitKeyringReady;
396
- const addresses = this.state.getDecodedAddresses();
397
- const existedYieldPosition = await this.dbService.getYieldNominationPoolPosition(addresses, this.state.activeChainSlugs);
398
- const yieldPositionInfo = this.yieldPositionSubject.getValue();
399
- existedYieldPosition.forEach(item => {
400
- yieldPositionInfo[this._getYieldPositionKey(item.slug, item.address)] = item;
401
- });
402
- this.yieldPositionSubject.next(yieldPositionInfo);
403
- }
404
- subscribeYieldPosition() {
405
- return this.yieldPositionListSubject;
406
- }
407
- async getYieldPositionInfo() {
408
- await this.eventService.waitEarningReady;
409
- return Promise.resolve(this.yieldPositionListSubject.getValue());
410
- }
411
- yieldPositionPersistQueue = [];
412
- resetYieldPositionQueue() {
413
- this.yieldPositionPersistQueue = [];
414
- }
415
- resetYieldPosition() {
416
- this.yieldPositionSubject.next({});
417
- this.yieldPositionPersistQueue = [];
418
- }
419
- _getYieldPositionKey(slug, address) {
420
- return `${slug}---${address}`;
421
- }
422
- updateYieldPosition(data) {
423
- this.yieldPositionPersistQueue.push(data);
424
- addLazy('persistYieldPositionInfo', () => {
425
- const yieldPositionInfo = this.yieldPositionSubject.getValue();
426
- const queue = [...this.yieldPositionPersistQueue];
427
- this.yieldPositionPersistQueue = [];
428
-
429
- // Update yield position info
430
- queue.forEach(item => {
431
- yieldPositionInfo[this._getYieldPositionKey(item.slug, item.address)] = item;
432
- });
433
- this.yieldPositionSubject.next(yieldPositionInfo);
434
-
435
- // Persist data
436
- this.dbService.updateYieldPositions(queue).catch(console.warn);
437
- }, 300, 900);
438
- }
439
- async reloadEarning(reset = false) {
440
- await this.waitForStarted();
441
- this.runUnsubscribePoolsPosition();
442
- this.runUnsubscribeStakingRewardInterval();
443
- this.runUnsubscribeEarningRewardHistoryInterval();
444
- reset && this.resetYieldPosition();
445
- await this.runSubscribePoolsPosition();
446
- this.runSubscribeStakingRewardInterval();
447
- this.runSubscribeEarningRewardHistoryInterval();
448
- }
449
- async runSubscribePoolsPosition() {
450
- await this.eventService.waitKeyringReady;
451
- this.runUnsubscribePoolsPosition();
452
- const addresses = this.state.getDecodedAddresses();
453
- this.subscribePoolPositions(addresses, data => {
454
- this.updateYieldPosition(data);
455
- }).then(rs => {
456
- this.yieldPositionUnsub = rs;
457
- }).catch(console.error);
458
- }
459
- runUnsubscribePoolsPosition() {
460
- var _this$yieldPositionUn;
461
- (_this$yieldPositionUn = this.yieldPositionUnsub) === null || _this$yieldPositionUn === void 0 ? void 0 : _this$yieldPositionUn.call(this);
462
- this.yieldPositionPersistQueue = [];
463
- }
464
-
465
- /* Pools' position methods */
466
-
467
- /* Get pools' reward */
468
-
469
- updateEarningReward(stakingRewardData) {
470
- const stakingRewardState = this.earningRewardSubject.getValue();
471
- stakingRewardState.ready = true;
472
- const key = `${stakingRewardData.slug}---${stakingRewardData.address}`;
473
- stakingRewardState.data[key] = stakingRewardData;
474
- this.earningRewardSubject.next(stakingRewardState);
475
- }
476
- async getPoolReward(addresses, callback) {
477
- let cancel = false;
478
- await this.eventService.waitChainReady;
479
- const [substrateAddresses, evmAddresses] = categoryAddresses(addresses);
480
- const activeChains = this.state.activeChainSlugs;
481
- const unsubList = [];
482
- for (const handler of Object.values(this.handlers)) {
483
- if (activeChains.includes(handler.chain)) {
484
- const chainInfo = handler.chainInfo;
485
- const useAddresses = _isChainEvmCompatible(chainInfo) ? evmAddresses : substrateAddresses;
486
- handler.getPoolReward(useAddresses, callback).then(unsub => {
487
- if (cancel) {
488
- unsub();
489
- } else {
490
- unsubList.push(unsub);
491
- }
492
- }).catch(console.error);
493
- }
494
- }
495
- return () => {
496
- cancel = true;
497
- unsubList.forEach(unsub => {
498
- unsub === null || unsub === void 0 ? void 0 : unsub();
499
- });
500
- };
501
- }
502
- subscribeEarningReward() {
503
- return this.earningRewardSubject;
504
- }
505
- getEarningRewards() {
506
- return this.earningRewardSubject.getValue();
507
- }
508
- runSubscribeStakingRewardInterval() {
509
- const addresses = this.state.getDecodedAddresses();
510
- if (!addresses.length) {
511
- return;
512
- }
513
- this.getPoolReward(addresses, result => {
514
- this.updateEarningReward(result);
515
- }).catch(console.error);
516
- this.earningsRewardInterval = setInterval(() => {
517
- this.getPoolReward(addresses, result => {
518
- this.updateEarningReward(result);
519
- }).catch(console.error);
520
- }, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
521
- }
522
- runUnsubscribeStakingRewardInterval() {
523
- this.earningsRewardInterval && clearInterval(this.earningsRewardInterval);
524
- }
525
- async fetchPoolRewardHistory(addresses, callback) {
526
- let cancel = false;
527
- await this.eventService.waitChainReady;
528
- const [substrateAddresses, evmAddresses] = categoryAddresses(addresses);
529
- const activeChains = this.state.activeChainSlugs;
530
- const unsubList = [];
531
- for (const handler of Object.values(this.handlers)) {
532
- if (activeChains.includes(handler.chain)) {
533
- const chainInfo = handler.chainInfo;
534
- const useAddresses = _isChainEvmCompatible(chainInfo) ? evmAddresses : substrateAddresses;
535
- handler.getPoolRewardHistory(useAddresses, callback).then(unsub => {
536
- if (cancel) {
537
- unsub();
538
- } else {
539
- unsubList.push(unsub);
540
- }
541
- }).catch(console.error);
542
- }
543
- }
544
- return () => {
545
- cancel = true;
546
- unsubList.forEach(unsub => {
547
- unsub === null || unsub === void 0 ? void 0 : unsub();
548
- });
549
- };
550
- }
551
- updateEarningRewardHistory(earningRewardHistory) {
552
- const earningRewardHistoryState = this.earningRewardHistorySubject.getValue();
553
- const key = `${earningRewardHistory.slug}---${earningRewardHistory.address}---${earningRewardHistory.eventIndex}`;
554
- earningRewardHistoryState[key] = earningRewardHistory;
555
- this.earningRewardHistorySubject.next(earningRewardHistoryState);
556
- }
557
- subscribeEarningRewardHistory() {
558
- return this.earningRewardHistorySubject;
559
- }
560
- getEarningRewardHistory() {
561
- return this.earningRewardHistorySubject.getValue();
562
- }
563
- runSubscribeEarningRewardHistoryInterval() {
564
- this.runUnsubscribeEarningRewardHistoryInterval();
565
- const addresses = this.state.getDecodedAddresses();
566
- if (!addresses.length) {
567
- return;
568
- }
569
- this.fetchPoolRewardHistory(addresses, result => {
570
- this.updateEarningRewardHistory(result);
571
- }).catch(console.error);
572
- this.earningsRewardHistoryInterval = setInterval(() => {
573
- this.fetchPoolRewardHistory(addresses, result => {
574
- this.updateEarningRewardHistory(result);
575
- }).catch(console.error);
576
- }, CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL);
577
- }
578
- runUnsubscribeEarningRewardHistoryInterval() {
579
- this.earningsRewardHistoryInterval && clearInterval(this.earningsRewardHistoryInterval);
580
- }
581
-
582
- /* Get pools' reward */
583
-
584
- /* Get pool's targets */
585
-
586
- /**
587
- * @async
588
- * @function getPoolTargets
589
- * @param {string} slug - Pool's slug
590
- * @return {Promise<YieldPoolTarget[]>} List of pool's target
591
- * */
592
- async getPoolTargets(slug) {
593
- await this.eventService.waitChainReady;
594
- const handler = this.getPoolHandler(slug);
595
- if (handler) {
596
- return await handler.getPoolTargets();
597
- } else {
598
- return [];
599
- }
600
- }
601
-
602
- /* Get pool's targets */
603
-
604
- /* Handle actions */
605
-
606
- /* Join */
607
-
608
- async earlyValidateJoin(request) {
609
- await this.eventService.waitChainReady;
610
- const {
611
- slug
612
- } = request;
613
- const handler = this.getPoolHandler(slug);
614
- if (handler) {
615
- return handler.earlyValidate(request);
616
- } else {
617
- throw new TransactionError(BasicTxErrorType.INTERNAL_ERROR);
618
- }
619
- }
620
- async generateOptimalSteps(params) {
621
- await this.eventService.waitChainReady;
622
- const {
623
- slug
624
- } = params;
625
- const handler = this.getPoolHandler(slug);
626
- if (handler) {
627
- return handler.generateOptimalPath(params);
628
- } else {
629
- throw new TransactionError(BasicTxErrorType.INTERNAL_ERROR);
630
- }
631
- }
632
- async validateYieldJoin(params) {
633
- await this.eventService.waitChainReady;
634
- const {
635
- slug
636
- } = params.data;
637
- const handler = this.getPoolHandler(slug);
638
- if (handler) {
639
- return handler.validateYieldJoin(params.data, params.path);
640
- } else {
641
- return [new TransactionError(BasicTxErrorType.INTERNAL_ERROR)];
642
- }
643
- }
644
- async handleYieldJoin(params) {
645
- await this.eventService.waitChainReady;
646
- const {
647
- slug
648
- } = params.data;
649
- const handler = this.getPoolHandler(slug);
650
- if (handler) {
651
- return handler.handleYieldJoin(params.data, params.path, params.currentStep);
652
- } else {
653
- return Promise.reject(new TransactionError(BasicTxErrorType.INTERNAL_ERROR));
654
- }
655
- }
656
-
657
- /* Join */
658
-
659
- /* Leave */
660
-
661
- async validateYieldLeave(params) {
662
- await this.eventService.waitChainReady;
663
- const {
664
- slug
665
- } = params;
666
- const handler = this.getPoolHandler(slug);
667
- if (handler) {
668
- return handler.validateYieldLeave(params.amount, params.address, params.fastLeave, params.selectedTarget);
669
- } else {
670
- return Promise.reject(new TransactionError(BasicTxErrorType.INTERNAL_ERROR));
671
- }
672
- }
673
- async handleYieldLeave(params) {
674
- await this.eventService.waitChainReady;
675
- const {
676
- slug
677
- } = params;
678
- const handler = this.getPoolHandler(slug);
679
- if (handler) {
680
- return handler.handleYieldLeave(params.fastLeave, params.amount, params.address, params.selectedTarget);
681
- } else {
682
- return Promise.reject(new TransactionError(BasicTxErrorType.INTERNAL_ERROR));
683
- }
684
- }
685
-
686
- /* Leave */
687
-
688
- /* Other */
689
-
690
- async handleYieldWithdraw(params) {
691
- await this.eventService.waitChainReady;
692
- const {
693
- slug
694
- } = params;
695
- const handler = this.getPoolHandler(slug);
696
- if (handler) {
697
- return handler.handleYieldWithdraw(params.address, params.unstakingInfo);
698
- } else {
699
- return Promise.reject(new TransactionError(BasicTxErrorType.INTERNAL_ERROR));
700
- }
701
- }
702
- async handleYieldCancelUnstake(params) {
703
- await this.eventService.waitChainReady;
704
- const {
705
- slug
706
- } = params;
707
- const handler = this.getPoolHandler(slug);
708
- if (handler) {
709
- return handler.handleYieldCancelUnstake(params);
710
- } else {
711
- return Promise.reject(new TransactionError(BasicTxErrorType.INTERNAL_ERROR));
712
- }
713
- }
714
- async handleYieldClaimReward(params) {
715
- await this.eventService.waitChainReady;
716
- const {
717
- slug
718
- } = params;
719
- const handler = this.getPoolHandler(slug);
720
- if (handler) {
721
- return handler.handleYieldClaimReward(params.address, params.bondReward);
722
- } else {
723
- return Promise.reject(new TransactionError(BasicTxErrorType.INTERNAL_ERROR));
724
- }
725
- }
726
-
727
- /* Other */
728
-
729
- /* Handle actions */
730
- }