@subwallet/extension-base 1.1.33-beta.3 → 1.1.35-0

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