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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/background/KoniTypes.d.ts +92 -68
  2. package/background/KoniTypes.js +16 -13
  3. package/background/errors/TransactionError.js +9 -0
  4. package/cjs/background/KoniTypes.js +17 -16
  5. package/cjs/background/errors/TransactionError.js +9 -0
  6. package/cjs/constants/index.js +9 -3
  7. package/cjs/koni/api/dotsama/balance.js +464 -0
  8. package/cjs/koni/api/nft/config.js +33 -23
  9. package/cjs/koni/api/nft/index.js +14 -0
  10. package/cjs/koni/api/nft/nft.js +1 -22
  11. package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
  12. package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
  13. package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
  14. package/cjs/koni/api/staking/bonding/amplitude.js +17 -15
  15. package/cjs/koni/api/staking/bonding/astar.js +11 -10
  16. package/cjs/koni/api/staking/bonding/index.js +4 -1
  17. package/cjs/koni/api/staking/bonding/paraChain.js +25 -23
  18. package/cjs/koni/api/staking/bonding/relayChain.js +48 -45
  19. package/cjs/koni/api/staking/bonding/utils.js +104 -86
  20. package/cjs/koni/api/staking/index.js +6 -5
  21. package/cjs/koni/api/staking/paraChain.js +6 -5
  22. package/cjs/koni/api/staking/relayChain.js +3 -2
  23. package/cjs/koni/api/yield/helper/utils.js +46 -0
  24. package/cjs/koni/background/cron.js +2 -0
  25. package/cjs/koni/background/handlers/Extension.js +323 -69
  26. package/cjs/koni/background/handlers/State.js +57 -4
  27. package/cjs/koni/background/handlers/index.js +4 -2
  28. package/cjs/koni/background/subscription.js +89 -19
  29. package/cjs/packageInfo.js +1 -1
  30. package/cjs/services/campaign-service/index.js +9 -6
  31. package/cjs/services/chain-service/constants.js +2 -16
  32. package/cjs/services/chain-service/utils.js +7 -1
  33. package/cjs/services/earning-service/constants/chains.js +29 -0
  34. package/cjs/services/earning-service/constants/index.js +27 -0
  35. package/cjs/services/earning-service/constants/step.js +18 -0
  36. package/cjs/services/earning-service/handlers/base.js +202 -0
  37. package/cjs/services/earning-service/handlers/index.js +60 -0
  38. package/cjs/services/earning-service/handlers/lending/base.js +20 -0
  39. package/cjs/services/earning-service/handlers/lending/index.js +13 -0
  40. package/cjs/services/earning-service/handlers/lending/interlay.js +168 -0
  41. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +196 -0
  42. package/cjs/services/earning-service/handlers/liquid-staking/base.js +39 -0
  43. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +257 -0
  44. package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
  45. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +180 -0
  46. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +373 -0
  47. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +359 -0
  48. package/cjs/services/earning-service/handlers/native-staking/astar.js +426 -0
  49. package/cjs/services/earning-service/handlers/native-staking/base-para.js +137 -0
  50. package/cjs/services/earning-service/handlers/native-staking/base.js +109 -0
  51. package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
  52. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +361 -0
  53. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +512 -0
  54. package/cjs/services/earning-service/handlers/nomination-pool/index.js +501 -0
  55. package/cjs/services/earning-service/handlers/special.js +387 -0
  56. package/cjs/services/earning-service/service.js +327 -0
  57. package/cjs/services/earning-service/utils/index.js +111 -0
  58. package/cjs/services/event-service/index.js +4 -0
  59. package/cjs/services/keyring-service/index.js +14 -2
  60. package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
  61. package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
  62. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +17 -0
  63. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  64. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
  65. package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
  66. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  67. package/cjs/services/migration-service/scripts/index.js +4 -0
  68. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
  69. package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
  70. package/cjs/services/mint-campaign-service/constants.js +11 -0
  71. package/cjs/services/mint-campaign-service/index.js +18 -0
  72. package/cjs/services/notification-service/NotificationService.js +1 -1
  73. package/cjs/services/storage-service/DatabaseService.js +47 -0
  74. package/cjs/services/storage-service/databases/index.js +4 -0
  75. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  76. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
  77. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +65 -0
  78. package/cjs/services/storage-service/index.js +241 -0
  79. package/cjs/services/transaction-service/event-parser/index.js +58 -0
  80. package/cjs/services/transaction-service/helpers/index.js +3 -1
  81. package/cjs/services/transaction-service/index.js +180 -74
  82. package/cjs/services/transaction-service/utils.js +1 -0
  83. package/cjs/types/campaigns/index.js +16 -0
  84. package/cjs/types/campaigns/unlock-dot.js +1 -0
  85. package/cjs/types/index.js +44 -0
  86. package/cjs/types/ordinal.js +1 -0
  87. package/cjs/types/transaction.js +1 -0
  88. package/cjs/types/yield/actions/index.js +27 -0
  89. package/cjs/types/yield/actions/join/index.js +38 -0
  90. package/cjs/types/yield/actions/join/step.js +37 -0
  91. package/cjs/types/yield/actions/join/submit.js +1 -0
  92. package/cjs/types/yield/actions/join/validate.js +16 -0
  93. package/cjs/types/yield/actions/others.js +1 -0
  94. package/cjs/types/yield/index.js +27 -0
  95. package/cjs/types/yield/info/account/index.js +49 -0
  96. package/cjs/types/yield/info/account/info.js +1 -0
  97. package/cjs/types/yield/info/account/reward.js +1 -0
  98. package/cjs/types/yield/info/account/target.js +32 -0
  99. package/cjs/types/yield/info/account/unstake.js +27 -0
  100. package/cjs/types/yield/info/base.js +34 -0
  101. package/cjs/types/yield/info/chain/index.js +27 -0
  102. package/cjs/types/yield/info/chain/info.js +1 -0
  103. package/cjs/types/yield/info/chain/target.js +1 -0
  104. package/cjs/types/yield/info/index.js +49 -0
  105. package/cjs/types/yield/info/pallet.js +15 -0
  106. package/cjs/types.js +1 -0
  107. package/cjs/utils/address.js +34 -0
  108. package/cjs/utils/fetchStaticData.js +2 -1
  109. package/cjs/utils/index.js +89 -1
  110. package/cjs/utils/keyring.js +57 -0
  111. package/cjs/utils/object.js +12 -0
  112. package/constants/index.d.ts +2 -0
  113. package/constants/index.js +2 -0
  114. package/koni/api/nft/config.js +33 -23
  115. package/koni/api/nft/index.js +15 -1
  116. package/koni/api/nft/nft.js +2 -23
  117. package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
  118. package/koni/api/nft/ordinal_nft/constants.js +12 -0
  119. package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
  120. package/koni/api/nft/ordinal_nft/index.js +114 -0
  121. package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
  122. package/koni/api/nft/ordinal_nft/utils.js +33 -0
  123. package/koni/api/staking/bonding/amplitude.js +11 -9
  124. package/koni/api/staking/bonding/astar.js +9 -8
  125. package/koni/api/staking/bonding/index.d.ts +1 -1
  126. package/koni/api/staking/bonding/index.js +5 -1
  127. package/koni/api/staking/bonding/paraChain.js +12 -10
  128. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  129. package/koni/api/staking/bonding/relayChain.js +33 -30
  130. package/koni/api/staking/bonding/utils.d.ts +15 -38
  131. package/koni/api/staking/bonding/utils.js +85 -69
  132. package/koni/api/staking/index.js +2 -1
  133. package/koni/api/staking/paraChain.js +7 -6
  134. package/koni/api/staking/relayChain.js +4 -3
  135. package/koni/api/yield/helper/utils.d.ts +10 -0
  136. package/koni/api/yield/helper/utils.js +32 -0
  137. package/koni/background/cron.js +2 -0
  138. package/koni/background/handlers/Extension.d.ts +14 -1
  139. package/koni/background/handlers/Extension.js +282 -30
  140. package/koni/background/handlers/State.d.ts +18 -2
  141. package/koni/background/handlers/State.js +56 -4
  142. package/koni/background/handlers/index.js +4 -2
  143. package/koni/background/subscription.d.ts +5 -1
  144. package/koni/background/subscription.js +91 -21
  145. package/package.json +311 -8
  146. package/packageInfo.js +1 -1
  147. package/services/campaign-service/index.js +9 -6
  148. package/services/chain-service/constants.d.ts +0 -11
  149. package/services/chain-service/constants.js +1 -14
  150. package/services/chain-service/utils.d.ts +1 -0
  151. package/services/chain-service/utils.js +5 -1
  152. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
  153. package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
  154. package/services/earning-service/constants/chains.d.ts +14 -0
  155. package/services/earning-service/constants/chains.js +21 -0
  156. package/services/earning-service/constants/index.d.ts +2 -0
  157. package/services/earning-service/constants/index.js +5 -0
  158. package/services/earning-service/constants/step.d.ts +3 -0
  159. package/services/earning-service/constants/step.js +10 -0
  160. package/services/earning-service/handlers/base.d.ts +105 -0
  161. package/services/earning-service/handlers/base.js +195 -0
  162. package/services/earning-service/handlers/index.d.ts +5 -0
  163. package/services/earning-service/handlers/index.js +8 -0
  164. package/services/earning-service/handlers/lending/base.d.ts +6 -0
  165. package/services/earning-service/handlers/lending/base.js +12 -0
  166. package/services/earning-service/handlers/lending/index.d.ts +1 -0
  167. package/services/earning-service/handlers/lending/index.js +4 -0
  168. package/services/earning-service/handlers/lending/interlay.d.ts +22 -0
  169. package/services/earning-service/handlers/lending/interlay.js +160 -0
  170. package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
  171. package/services/earning-service/handlers/liquid-staking/acala.js +188 -0
  172. package/services/earning-service/handlers/liquid-staking/base.d.ts +8 -0
  173. package/services/earning-service/handlers/liquid-staking/base.js +31 -0
  174. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +44 -0
  175. package/services/earning-service/handlers/liquid-staking/bifrost.js +246 -0
  176. package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
  177. package/services/earning-service/handlers/liquid-staking/index.js +7 -0
  178. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +27 -0
  179. package/services/earning-service/handlers/liquid-staking/parallel.js +172 -0
  180. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +36 -0
  181. package/services/earning-service/handlers/liquid-staking/stella-swap.js +363 -0
  182. package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
  183. package/services/earning-service/handlers/native-staking/amplitude.js +350 -0
  184. package/services/earning-service/handlers/native-staking/astar.d.ts +18 -0
  185. package/services/earning-service/handlers/native-staking/astar.js +416 -0
  186. package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
  187. package/services/earning-service/handlers/native-staking/base-para.js +129 -0
  188. package/services/earning-service/handlers/native-staking/base.d.ts +19 -0
  189. package/services/earning-service/handlers/native-staking/base.js +101 -0
  190. package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
  191. package/services/earning-service/handlers/native-staking/index.js +7 -0
  192. package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
  193. package/services/earning-service/handlers/native-staking/para-chain.js +353 -0
  194. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
  195. package/services/earning-service/handlers/native-staking/relay-chain.js +503 -0
  196. package/services/earning-service/handlers/nomination-pool/index.d.ts +33 -0
  197. package/services/earning-service/handlers/nomination-pool/index.js +492 -0
  198. package/services/earning-service/handlers/special.d.ts +56 -0
  199. package/services/earning-service/handlers/special.js +379 -0
  200. package/services/earning-service/service.d.ts +36 -0
  201. package/services/earning-service/service.js +320 -0
  202. package/services/earning-service/utils/index.d.ts +14 -0
  203. package/services/earning-service/utils/index.js +100 -0
  204. package/services/event-service/index.d.ts +1 -0
  205. package/services/event-service/index.js +4 -0
  206. package/services/event-service/types.d.ts +8 -0
  207. package/services/keyring-service/index.d.ts +2 -1
  208. package/services/keyring-service/index.js +14 -2
  209. package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
  210. package/services/migration-service/scripts/DeleteEarningData.js +13 -0
  211. package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
  212. package/services/migration-service/scripts/EnableEarningChains.js +13 -0
  213. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  214. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  215. package/services/migration-service/scripts/index.js +4 -0
  216. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
  217. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
  218. package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
  219. package/services/mint-campaign-service/campaigns/index.js +4 -0
  220. package/services/mint-campaign-service/constants.d.ts +1 -0
  221. package/services/mint-campaign-service/constants.js +4 -0
  222. package/services/mint-campaign-service/index.d.ts +7 -0
  223. package/services/mint-campaign-service/index.js +11 -0
  224. package/services/notification-service/NotificationService.js +1 -1
  225. package/services/storage-service/DatabaseService.d.ts +17 -1
  226. package/services/storage-service/DatabaseService.js +47 -0
  227. package/services/storage-service/databases/index.d.ts +3 -1
  228. package/services/storage-service/databases/index.js +4 -0
  229. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  230. package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
  231. package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
  232. package/services/storage-service/db-stores/YieldPositionStore.d.ts +9 -0
  233. package/services/storage-service/db-stores/YieldPositionStore.js +57 -0
  234. package/services/subscan-service/index.d.ts +2 -2
  235. package/services/transaction-service/event-parser/index.d.ts +3 -1
  236. package/services/transaction-service/event-parser/index.js +57 -1
  237. package/services/transaction-service/helpers/index.js +3 -1
  238. package/services/transaction-service/index.d.ts +4 -15
  239. package/services/transaction-service/index.js +178 -72
  240. package/services/transaction-service/types.d.ts +2 -0
  241. package/services/transaction-service/utils.js +1 -0
  242. package/types/campaigns/index.d.ts +1 -0
  243. package/types/campaigns/index.js +4 -0
  244. package/types/campaigns/unlock-dot.d.ts +71 -0
  245. package/types/campaigns/unlock-dot.js +1 -0
  246. package/types/index.d.ts +5 -0
  247. package/types/index.js +5 -1
  248. package/types/ordinal.d.ts +69 -0
  249. package/types/ordinal.js +1 -0
  250. package/types/transaction.d.ts +3 -0
  251. package/types/transaction.js +1 -0
  252. package/types/yield/actions/index.d.ts +2 -0
  253. package/types/yield/actions/index.js +5 -0
  254. package/types/yield/actions/join/index.d.ts +3 -0
  255. package/types/yield/actions/join/index.js +6 -0
  256. package/types/yield/actions/join/step.d.ts +75 -0
  257. package/types/yield/actions/join/step.js +34 -0
  258. package/types/yield/actions/join/submit.d.ts +53 -0
  259. package/types/yield/actions/join/submit.js +1 -0
  260. package/types/yield/actions/join/validate.d.ts +18 -0
  261. package/types/yield/actions/join/validate.js +10 -0
  262. package/types/yield/actions/others.d.ts +60 -0
  263. package/types/yield/actions/others.js +1 -0
  264. package/types/yield/index.d.ts +2 -0
  265. package/types/yield/index.js +5 -0
  266. package/types/yield/info/account/index.d.ts +4 -0
  267. package/types/yield/info/account/index.js +7 -0
  268. package/types/yield/info/account/info.d.ts +112 -0
  269. package/types/yield/info/account/info.js +1 -0
  270. package/types/yield/info/account/reward.d.ts +41 -0
  271. package/types/yield/info/account/reward.js +1 -0
  272. package/types/yield/info/account/target.d.ts +43 -0
  273. package/types/yield/info/account/target.js +27 -0
  274. package/types/yield/info/account/unstake.d.ts +31 -0
  275. package/types/yield/info/account/unstake.js +22 -0
  276. package/types/yield/info/base.d.ts +28 -0
  277. package/types/yield/info/base.js +28 -0
  278. package/types/yield/info/chain/index.d.ts +2 -0
  279. package/types/yield/info/chain/index.js +5 -0
  280. package/types/yield/info/chain/info.d.ts +190 -0
  281. package/types/yield/info/chain/info.js +1 -0
  282. package/types/yield/info/chain/target.d.ts +33 -0
  283. package/types/yield/info/chain/target.js +1 -0
  284. package/types/yield/info/index.d.ts +4 -0
  285. package/types/yield/info/index.js +7 -0
  286. package/types/yield/info/pallet.d.ts +143 -0
  287. package/types/yield/info/pallet.js +9 -0
  288. package/utils/fetchStaticData.js +2 -1
  289. package/utils/index.d.ts +5 -0
  290. package/utils/index.js +53 -1
  291. package/utils/object.d.ts +1 -0
  292. package/utils/object.js +6 -0
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getStellaswapLiquidStakingContract = exports.default = void 0;
8
+ var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
9
+ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
10
+ var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
11
+ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
12
+ var _types = require("@subwallet/extension-base/types");
13
+ var _bn = require("bn.js");
14
+ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
15
+ var _util = require("@polkadot/util");
16
+ var _constants = require("../../constants");
17
+ var _base = _interopRequireDefault(require("./base"));
18
+ // Copyright 2019-2022 @subwallet/extension-base
19
+ // SPDX-License-Identifier: Apache-2.0
20
+
21
+ const getStellaswapLiquidStakingContract = function (networkKey, assetAddress, evmApi) {
22
+ let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
23
+ // @ts-ignore
24
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-member-access
25
+ return new evmApi.api.eth.Contract(_constants.ST_LIQUID_TOKEN_ABI, assetAddress, options);
26
+ };
27
+ exports.getStellaswapLiquidStakingContract = getStellaswapLiquidStakingContract;
28
+ const APR_STATS_URL = 'https://apr-api.stellaswap.com/api/v1/stdot';
29
+ const MAX_INT = '115792089237316195423570985008687907853269984665640564039457584007913129639935';
30
+ class StellaSwapLiquidStakingPoolHandler extends _base.default {
31
+ inputAsset = 'moonbeam-LOCAL-xcDOT';
32
+ altInputAsset = '';
33
+ derivativeAssets = ['moonbeam-ERC20-stDOT-0xbc7E02c4178a7dF7d3E564323a5c359dc96C4db4'];
34
+ rewardAssets = ['moonbeam-LOCAL-xcDOT'];
35
+ feeAssets = ['moonbeam-NATIVE-GLMR'];
36
+ /** @inner */
37
+ allowDefaultUnstake = true;
38
+ /** @inner */
39
+ allowFastUnstake = false;
40
+ transactionChainType = _KoniTypes.ChainType.EVM;
41
+ constructor(state, chain) {
42
+ super(state, chain);
43
+ this.slug = 'xcDOT___liquid_staking___stellaswap';
44
+ this.name = 'Stellaswap Liquid Staking';
45
+ this.description = 'Earn rewards by staking xcDOT for stDOT';
46
+ this._logo = 'stellaswap';
47
+ this.shortName = 'Stellaswap';
48
+ }
49
+
50
+ /* Subscribe pool info */
51
+
52
+ async getPoolStat() {
53
+ const evmApi = this.evmApi;
54
+ const derivativeTokenSlug = this.derivativeAssets[0];
55
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
56
+ const stakingContract = getStellaswapLiquidStakingContract(this.chain, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo), evmApi);
57
+ const aprPromise = new Promise(function (resolve) {
58
+ (0, _crossFetch.default)(APR_STATS_URL, {
59
+ method: 'GET'
60
+ }).then(res => {
61
+ resolve(res.json());
62
+ }).catch(console.error);
63
+ });
64
+ const sampleTokenShare = 10 ** (0, _utils._getAssetDecimals)(derivativeTokenInfo);
65
+
66
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
67
+ const tvlCall = stakingContract.methods.fundRaisedBalance();
68
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
69
+ const exchangeRateCall = stakingContract.methods.getPooledTokenByShares(sampleTokenShare);
70
+
71
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
72
+ const [aprObject, tvl, equivalentTokenShare] = await Promise.all([aprPromise,
73
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
74
+ tvlCall.call(),
75
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
76
+ exchangeRateCall.call()]);
77
+ const exchangeRate = equivalentTokenShare / 10 ** (0, _utils._getAssetDecimals)(derivativeTokenInfo);
78
+ return {
79
+ ...this.defaultInfo,
80
+ description: this.description,
81
+ type: this.type,
82
+ metadata: {
83
+ ...this.baseMetadata,
84
+ isAvailable: true,
85
+ allowCancelUnstaking: false,
86
+ assetEarning: [{
87
+ slug: this.rewardAssets[0],
88
+ apr: aprObject.result,
89
+ exchangeRate: exchangeRate
90
+ }],
91
+ maxCandidatePerFarmer: 1,
92
+ maxWithdrawalRequestPerFarmer: 1,
93
+ minJoinPool: '0',
94
+ minWithdrawal: '0',
95
+ totalApr: aprObject.result,
96
+ tvl: tvl.toString()
97
+ }
98
+ };
99
+ }
100
+
101
+ /* Subscribe pool info */
102
+
103
+ /* Subscribe pool position */
104
+
105
+ // eslint-disable-next-line @typescript-eslint/require-await
106
+ async subscribePoolPosition(useAddresses, resultCallback) {
107
+ var _this$derivativeAsset;
108
+ let cancel = false;
109
+ const evmApi = this.evmApi;
110
+ const derivativeTokenSlug = ((_this$derivativeAsset = this.derivativeAssets) === null || _this$derivativeAsset === void 0 ? void 0 : _this$derivativeAsset[0]) || '';
111
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
112
+ const contract = getStellaswapLiquidStakingContract(this.chain, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo), evmApi);
113
+ const getTokenBalance = () => {
114
+ if (!cancel) {
115
+ useAddresses.map(async address => {
116
+ if (!cancel) {
117
+ return;
118
+ }
119
+
120
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
121
+ const balance = await contract.methods.balanceOf(address).call();
122
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
123
+ const unbondedObject = await contract.methods.getUnbonded(address).call();
124
+ const unstakings = [];
125
+ let unlockBalance = _util.BN_ZERO;
126
+ if (parseInt(unbondedObject.unbonded) > 0) {
127
+ unlockBalance = unlockBalance.add(new _bn.BN(unbondedObject.unbonded));
128
+ unstakings.push({
129
+ chain: this.chain,
130
+ claimable: unbondedObject.unbonded,
131
+ status: _types.UnstakingStatus.CLAIMABLE,
132
+ waitingTime: 0
133
+ });
134
+ }
135
+ if (parseInt(unbondedObject.waiting) > 0) {
136
+ unlockBalance = unlockBalance.add(new _bn.BN(unbondedObject.waiting));
137
+ unstakings.push({
138
+ chain: this.chain,
139
+ claimable: unbondedObject.waiting,
140
+ status: _types.UnstakingStatus.UNLOCKING,
141
+ waitingTime: 20 // TODO: Recheck
142
+ });
143
+ }
144
+
145
+ const totalBalance = new _bn.BN(balance).add(unlockBalance);
146
+ const result = {
147
+ ...this.defaultInfo,
148
+ type: this.type,
149
+ address,
150
+ balanceToken: this.inputAsset,
151
+ totalStake: totalBalance.toString(),
152
+ activeStake: balance.toString(),
153
+ unstakeBalance: unlockBalance.toString(),
154
+ isBondedBefore: totalBalance.gt(_util.BN_ZERO),
155
+ derivativeToken: derivativeTokenSlug,
156
+ status: _types.EarningStatus.EARNING_REWARD,
157
+ nominations: [],
158
+ unstakings
159
+ };
160
+ resultCallback(result);
161
+ });
162
+ }
163
+ };
164
+ getTokenBalance();
165
+ const interval = setInterval(getTokenBalance, 30000);
166
+ return () => {
167
+ cancel = true;
168
+ clearInterval(interval);
169
+ };
170
+ }
171
+
172
+ /* Subscribe pool position */
173
+
174
+ /* Join pool action */
175
+
176
+ get submitJoinStepInfo() {
177
+ return {
178
+ name: 'Mint stDOT',
179
+ type: _types.YieldStepType.MINT_STDOT
180
+ };
181
+ }
182
+ async getTokenApproveStep(params) {
183
+ const evmApi = this.evmApi;
184
+ const derivativeTokenSlug = this.derivativeAssets[0];
185
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
186
+ const inputTokenSlug = this.inputAsset;
187
+ const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
188
+ const inputTokenContract = (0, _web.getERC20Contract)(this.chain, (0, _utils._getContractAddressOfToken)(inputTokenInfo), this.state.getEvmApiMap());
189
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
190
+ const allowanceCall = inputTokenContract.methods.allowance(params.address, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo)); // TODO
191
+
192
+ const [allowance, gasPrice] = await Promise.all([
193
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
194
+ await allowanceCall.call(), evmApi.api.eth.getGasPrice()]);
195
+ if (!allowance || parseInt(allowance) <= 0) {
196
+ const step = {
197
+ name: 'Authorize token approval',
198
+ type: _types.YieldStepType.TOKEN_APPROVAL
199
+ };
200
+
201
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
202
+ const estimatedGas = await allowanceCall.estimateGas();
203
+ const fee = {
204
+ slug: this.feeAssets[0],
205
+ amount: (estimatedGas * parseInt(gasPrice)).toString()
206
+ };
207
+ return [step, fee];
208
+ }
209
+ return undefined;
210
+ }
211
+ async getSubmitStepFee(params) {
212
+ const evmApi = this.evmApi;
213
+ const derivativeTokenSlug = this.derivativeAssets[0];
214
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
215
+ const stakingContract = getStellaswapLiquidStakingContract(this.chain, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo), evmApi);
216
+
217
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
218
+ const depositCall = stakingContract.methods.deposit(params.amount);
219
+
220
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
221
+ const estimatedDepositGas = await depositCall.estimateGas();
222
+ const gasPrice = await evmApi.api.eth.getGasPrice();
223
+ return {
224
+ slug: this.feeAssets[0],
225
+ amount: (estimatedDepositGas * parseInt(gasPrice)).toString()
226
+ };
227
+ }
228
+ async generateOptimalPath(params) {
229
+ const result = {
230
+ totalFee: [{
231
+ slug: ''
232
+ }],
233
+ steps: [_constants.DEFAULT_YIELD_FIRST_STEP]
234
+ };
235
+ try {
236
+ /* Token approve step */
237
+
238
+ const approveStep = await this.getTokenApproveStep(params);
239
+ if (approveStep) {
240
+ const [step, fee] = approveStep;
241
+ result.steps.push({
242
+ id: result.steps.length,
243
+ ...step
244
+ });
245
+ result.totalFee.push(fee);
246
+ }
247
+
248
+ /* Token approve step */
249
+
250
+ /* Submit step */
251
+
252
+ const submitFee = await this.getSubmitStepFee(params);
253
+ result.steps.push({
254
+ id: result.steps.length,
255
+ ...this.submitJoinStepInfo
256
+ });
257
+ result.totalFee.push(submitFee);
258
+
259
+ /* Submit step */
260
+
261
+ return result;
262
+ } catch (e) {
263
+ const errorMessage = e.message;
264
+ if (errorMessage.includes('network')) {
265
+ result.connectionError = errorMessage.split(' ')[0];
266
+ }
267
+
268
+ /* Submit step */
269
+
270
+ result.steps.push({
271
+ id: result.steps.length,
272
+ ...this.submitJoinStepInfo
273
+ });
274
+ result.totalFee.push({
275
+ slug: this.feeAssets[0],
276
+ amount: '0'
277
+ });
278
+
279
+ /* Submit step */
280
+
281
+ return result;
282
+ }
283
+ }
284
+ async validateTokenApproveStep(params, path) {
285
+ return Promise.resolve([]);
286
+ }
287
+ async handleTokenApproveStep(data, path) {
288
+ const {
289
+ address
290
+ } = data;
291
+ const inputTokenSlug = this.inputAsset;
292
+ const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
293
+ const inputTokenContract = (0, _web.getERC20Contract)(this.chain, (0, _utils._getContractAddressOfToken)(inputTokenInfo), this.state.getEvmApiMap());
294
+
295
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
296
+ const approveCall = inputTokenContract.methods.approve(address, MAX_INT);
297
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
298
+ const approveEncodedCall = approveCall.encodeABI();
299
+ const transactionObject = {
300
+ from: address,
301
+ to: (0, _utils._getContractAddressOfToken)(inputTokenInfo),
302
+ data: approveEncodedCall
303
+ };
304
+ return Promise.resolve({
305
+ txChain: this.chain,
306
+ extrinsicType: _KoniTypes.ExtrinsicType.EVM_EXECUTE,
307
+ extrinsic: transactionObject,
308
+ txData: transactionObject,
309
+ transferNativeAmount: '0'
310
+ });
311
+ }
312
+
313
+ // eslint-disable-next-line @typescript-eslint/require-await
314
+ async handleSubmitStep(data, path) {
315
+ const {
316
+ address,
317
+ amount
318
+ } = data;
319
+ const evmApi = this.evmApi;
320
+ const derivativeTokenSlug = this.derivativeAssets[0];
321
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
322
+ const stakingContract = getStellaswapLiquidStakingContract(this.chain, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo), evmApi);
323
+
324
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
325
+ const depositCall = stakingContract.methods.deposit(amount); // TODO: referral
326
+
327
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
328
+ const depositEncodedCall = depositCall.encodeABI();
329
+ const transactionObject = {
330
+ from: address,
331
+ to: (0, _utils._getContractAddressOfToken)(derivativeTokenInfo),
332
+ data: depositEncodedCall
333
+ };
334
+ return {
335
+ txChain: this.chain,
336
+ extrinsicType: _KoniTypes.ExtrinsicType.MINT_STDOT,
337
+ extrinsic: transactionObject,
338
+ txData: data,
339
+ transferNativeAmount: '0'
340
+ };
341
+ }
342
+
343
+ /* Join pool action */
344
+
345
+ /* Leave pool action */
346
+
347
+ async handleYieldRedeem(amount, address, selectedTarget) {
348
+ return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED));
349
+ }
350
+
351
+ // eslint-disable-next-line @typescript-eslint/require-await
352
+ async handleYieldUnstake(amount, address, selectedTarget) {
353
+ const evmApi = this.evmApi;
354
+ const derivativeTokenSlug = this.derivativeAssets[0];
355
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
356
+ const stakingContract = getStellaswapLiquidStakingContract(this.chain, (0, _utils._getContractAddressOfToken)(derivativeTokenInfo), evmApi);
357
+
358
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
359
+ const redeemCall = stakingContract.methods.redeem(amount);
360
+
361
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
362
+ const redeemEncodedCall = redeemCall.encodeABI();
363
+ const transaction = {
364
+ from: address,
365
+ to: (0, _utils._getContractAddressOfToken)(derivativeTokenInfo),
366
+ data: redeemEncodedCall
367
+ };
368
+ return [_KoniTypes.ExtrinsicType.STAKING_UNBOND, transaction];
369
+ }
370
+
371
+ /* Leave pool action */
372
+ }
373
+ exports.default = StellaSwapLiquidStakingPoolHandler;