@subwallet/extension-base 1.1.31-1 → 1.1.31-beta.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 (305) hide show
  1. package/background/KoniTypes.d.ts +111 -69
  2. package/background/KoniTypes.js +19 -13
  3. package/background/errors/TransactionError.js +9 -0
  4. package/cjs/background/KoniTypes.js +20 -16
  5. package/cjs/background/errors/TransactionError.js +9 -0
  6. package/cjs/constants/index.js +19 -4
  7. package/cjs/koni/api/dotsama/balance.js +464 -0
  8. package/cjs/koni/api/nft/config.js +33 -23
  9. package/cjs/koni/api/nft/index.js +14 -0
  10. package/cjs/koni/api/nft/nft.js +1 -22
  11. package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
  12. package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
  13. package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
  14. package/cjs/koni/api/staking/bonding/amplitude.js +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 +11 -1
  25. package/cjs/koni/background/handlers/Extension.js +362 -69
  26. package/cjs/koni/background/handlers/State.js +51 -3
  27. package/cjs/koni/background/handlers/index.js +4 -2
  28. package/cjs/koni/background/subscription.js +95 -37
  29. package/cjs/services/campaign-service/index.js +9 -6
  30. package/cjs/services/chain-service/constants.js +2 -16
  31. package/cjs/services/chain-service/index.js +3 -2
  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 +259 -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 +191 -0
  41. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +239 -0
  42. package/cjs/services/earning-service/handlers/liquid-staking/base.js +43 -0
  43. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +297 -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 +226 -0
  46. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +395 -0
  47. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +384 -0
  48. package/cjs/services/earning-service/handlers/native-staking/astar.js +461 -0
  49. package/cjs/services/earning-service/handlers/native-staking/base-para.js +146 -0
  50. package/cjs/services/earning-service/handlers/native-staking/base.js +159 -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 +385 -0
  53. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +558 -0
  54. package/cjs/services/earning-service/handlers/nomination-pool/index.js +560 -0
  55. package/cjs/services/earning-service/handlers/special.js +503 -0
  56. package/cjs/services/earning-service/service.js +387 -0
  57. package/cjs/services/earning-service/utils/index.js +128 -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/databases/MigrateEarningHistory.js +21 -0
  68. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +21 -0
  69. package/cjs/services/migration-service/scripts/index.js +7 -1
  70. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
  71. package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
  72. package/cjs/services/mint-campaign-service/constants.js +11 -0
  73. package/cjs/services/mint-campaign-service/index.js +18 -0
  74. package/cjs/services/notification-service/NotificationService.js +1 -1
  75. package/cjs/services/storage-service/DatabaseService.js +51 -0
  76. package/cjs/services/storage-service/databases/index.js +4 -0
  77. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  78. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
  79. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +65 -0
  80. package/cjs/services/storage-service/index.js +241 -0
  81. package/cjs/services/subscan-service/index.js +16 -0
  82. package/cjs/services/transaction-service/event-parser/index.js +58 -0
  83. package/cjs/services/transaction-service/helpers/index.js +3 -1
  84. package/cjs/services/transaction-service/index.js +231 -75
  85. package/cjs/services/transaction-service/utils.js +1 -0
  86. package/cjs/types/campaigns/index.js +16 -0
  87. package/cjs/types/campaigns/unlock-dot.js +1 -0
  88. package/cjs/types/index.js +44 -0
  89. package/cjs/types/ordinal.js +1 -0
  90. package/cjs/types/transaction.js +1 -0
  91. package/cjs/types/yield/actions/index.js +27 -0
  92. package/cjs/types/yield/actions/join/index.js +38 -0
  93. package/cjs/types/yield/actions/join/step.js +47 -0
  94. package/cjs/types/yield/actions/join/submit.js +1 -0
  95. package/cjs/types/yield/actions/join/validate.js +16 -0
  96. package/cjs/types/yield/actions/others.js +1 -0
  97. package/cjs/types/yield/index.js +27 -0
  98. package/cjs/types/yield/info/account/index.js +49 -0
  99. package/cjs/types/yield/info/account/info.js +1 -0
  100. package/cjs/types/yield/info/account/reward.js +1 -0
  101. package/cjs/types/yield/info/account/target.js +32 -0
  102. package/cjs/types/yield/info/account/unstake.js +27 -0
  103. package/cjs/types/yield/info/base.js +41 -0
  104. package/cjs/types/yield/info/chain/index.js +27 -0
  105. package/cjs/types/yield/info/chain/info.js +1 -0
  106. package/cjs/types/yield/info/chain/target.js +1 -0
  107. package/cjs/types/yield/info/index.js +49 -0
  108. package/cjs/types/yield/info/pallet.js +15 -0
  109. package/cjs/types.js +1 -0
  110. package/cjs/utils/address.js +34 -0
  111. package/cjs/utils/fetchStaticData.js +2 -1
  112. package/cjs/utils/index.js +89 -1
  113. package/cjs/utils/keyring.js +57 -0
  114. package/cjs/utils/number.js +3 -1
  115. package/cjs/utils/object.js +12 -0
  116. package/constants/index.d.ts +6 -1
  117. package/constants/index.js +6 -1
  118. package/koni/api/nft/config.js +33 -23
  119. package/koni/api/nft/index.js +15 -1
  120. package/koni/api/nft/nft.js +2 -23
  121. package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
  122. package/koni/api/nft/ordinal_nft/constants.js +12 -0
  123. package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
  124. package/koni/api/nft/ordinal_nft/index.js +114 -0
  125. package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
  126. package/koni/api/nft/ordinal_nft/utils.js +33 -0
  127. package/koni/api/staking/bonding/amplitude.js +11 -9
  128. package/koni/api/staking/bonding/astar.js +9 -8
  129. package/koni/api/staking/bonding/index.d.ts +1 -1
  130. package/koni/api/staking/bonding/index.js +5 -1
  131. package/koni/api/staking/bonding/paraChain.js +12 -10
  132. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  133. package/koni/api/staking/bonding/relayChain.js +33 -30
  134. package/koni/api/staking/bonding/utils.d.ts +15 -38
  135. package/koni/api/staking/bonding/utils.js +85 -69
  136. package/koni/api/staking/index.js +2 -1
  137. package/koni/api/staking/paraChain.js +7 -6
  138. package/koni/api/staking/relayChain.js +4 -3
  139. package/koni/api/yield/helper/utils.d.ts +10 -0
  140. package/koni/api/yield/helper/utils.js +32 -0
  141. package/koni/background/cron.d.ts +1 -0
  142. package/koni/background/cron.js +12 -2
  143. package/koni/background/handlers/Extension.d.ts +17 -1
  144. package/koni/background/handlers/Extension.js +321 -30
  145. package/koni/background/handlers/State.d.ts +18 -2
  146. package/koni/background/handlers/State.js +50 -3
  147. package/koni/background/handlers/index.js +4 -2
  148. package/koni/background/subscription.d.ts +6 -1
  149. package/koni/background/subscription.js +97 -38
  150. package/package.json +316 -3
  151. package/services/campaign-service/index.js +9 -6
  152. package/services/chain-service/constants.d.ts +0 -11
  153. package/services/chain-service/constants.js +1 -14
  154. package/services/chain-service/index.js +3 -2
  155. package/services/chain-service/utils.d.ts +1 -0
  156. package/services/chain-service/utils.js +5 -1
  157. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
  158. package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
  159. package/services/earning-service/constants/chains.d.ts +14 -0
  160. package/services/earning-service/constants/chains.js +21 -0
  161. package/services/earning-service/constants/index.d.ts +2 -0
  162. package/services/earning-service/constants/index.js +5 -0
  163. package/services/earning-service/constants/step.d.ts +3 -0
  164. package/services/earning-service/constants/step.js +10 -0
  165. package/services/earning-service/handlers/base.d.ts +112 -0
  166. package/services/earning-service/handlers/base.js +253 -0
  167. package/services/earning-service/handlers/index.d.ts +5 -0
  168. package/services/earning-service/handlers/index.js +8 -0
  169. package/services/earning-service/handlers/lending/base.d.ts +6 -0
  170. package/services/earning-service/handlers/lending/base.js +12 -0
  171. package/services/earning-service/handlers/lending/index.d.ts +1 -0
  172. package/services/earning-service/handlers/lending/index.js +4 -0
  173. package/services/earning-service/handlers/lending/interlay.d.ts +24 -0
  174. package/services/earning-service/handlers/lending/interlay.js +183 -0
  175. package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
  176. package/services/earning-service/handlers/liquid-staking/acala.js +231 -0
  177. package/services/earning-service/handlers/liquid-staking/base.d.ts +9 -0
  178. package/services/earning-service/handlers/liquid-staking/base.js +35 -0
  179. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +46 -0
  180. package/services/earning-service/handlers/liquid-staking/bifrost.js +286 -0
  181. package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
  182. package/services/earning-service/handlers/liquid-staking/index.js +7 -0
  183. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +26 -0
  184. package/services/earning-service/handlers/liquid-staking/parallel.js +218 -0
  185. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +34 -0
  186. package/services/earning-service/handlers/liquid-staking/stella-swap.js +385 -0
  187. package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
  188. package/services/earning-service/handlers/native-staking/amplitude.js +375 -0
  189. package/services/earning-service/handlers/native-staking/astar.d.ts +19 -0
  190. package/services/earning-service/handlers/native-staking/astar.js +451 -0
  191. package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
  192. package/services/earning-service/handlers/native-staking/base-para.js +138 -0
  193. package/services/earning-service/handlers/native-staking/base.d.ts +21 -0
  194. package/services/earning-service/handlers/native-staking/base.js +150 -0
  195. package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
  196. package/services/earning-service/handlers/native-staking/index.js +7 -0
  197. package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
  198. package/services/earning-service/handlers/native-staking/para-chain.js +377 -0
  199. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
  200. package/services/earning-service/handlers/native-staking/relay-chain.js +549 -0
  201. package/services/earning-service/handlers/nomination-pool/index.d.ts +36 -0
  202. package/services/earning-service/handlers/nomination-pool/index.js +550 -0
  203. package/services/earning-service/handlers/special.d.ts +65 -0
  204. package/services/earning-service/handlers/special.js +495 -0
  205. package/services/earning-service/service.d.ts +45 -0
  206. package/services/earning-service/service.js +379 -0
  207. package/services/earning-service/utils/index.d.ts +18 -0
  208. package/services/earning-service/utils/index.js +112 -0
  209. package/services/event-service/index.d.ts +1 -0
  210. package/services/event-service/index.js +4 -0
  211. package/services/event-service/types.d.ts +8 -0
  212. package/services/keyring-service/index.d.ts +2 -1
  213. package/services/keyring-service/index.js +14 -2
  214. package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
  215. package/services/migration-service/scripts/DeleteEarningData.js +13 -0
  216. package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
  217. package/services/migration-service/scripts/EnableEarningChains.js +13 -0
  218. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  219. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  220. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +4 -0
  221. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +13 -0
  222. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +4 -0
  223. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +13 -0
  224. package/services/migration-service/scripts/index.js +7 -1
  225. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
  226. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
  227. package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
  228. package/services/mint-campaign-service/campaigns/index.js +4 -0
  229. package/services/mint-campaign-service/constants.d.ts +1 -0
  230. package/services/mint-campaign-service/constants.js +4 -0
  231. package/services/mint-campaign-service/index.d.ts +7 -0
  232. package/services/mint-campaign-service/index.js +11 -0
  233. package/services/notification-service/NotificationService.js +1 -1
  234. package/services/storage-service/DatabaseService.d.ts +18 -1
  235. package/services/storage-service/DatabaseService.js +51 -0
  236. package/services/storage-service/databases/index.d.ts +3 -1
  237. package/services/storage-service/databases/index.js +4 -0
  238. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  239. package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
  240. package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
  241. package/services/storage-service/db-stores/YieldPositionStore.d.ts +9 -0
  242. package/services/storage-service/db-stores/YieldPositionStore.js +57 -0
  243. package/services/subscan-service/index.d.ts +3 -2
  244. package/services/subscan-service/index.js +15 -0
  245. package/services/subscan-service/types.d.ts +20 -0
  246. package/services/transaction-service/event-parser/index.d.ts +3 -1
  247. package/services/transaction-service/event-parser/index.js +57 -1
  248. package/services/transaction-service/helpers/index.js +3 -1
  249. package/services/transaction-service/index.d.ts +4 -15
  250. package/services/transaction-service/index.js +229 -73
  251. package/services/transaction-service/types.d.ts +2 -0
  252. package/services/transaction-service/utils.js +1 -0
  253. package/types/campaigns/index.d.ts +1 -0
  254. package/types/campaigns/index.js +4 -0
  255. package/types/campaigns/unlock-dot.d.ts +71 -0
  256. package/types/campaigns/unlock-dot.js +1 -0
  257. package/types/index.d.ts +5 -0
  258. package/types/index.js +5 -1
  259. package/types/ordinal.d.ts +69 -0
  260. package/types/ordinal.js +1 -0
  261. package/types/transaction.d.ts +3 -0
  262. package/types/transaction.js +1 -0
  263. package/types/yield/actions/index.d.ts +2 -0
  264. package/types/yield/actions/index.js +5 -0
  265. package/types/yield/actions/join/index.d.ts +3 -0
  266. package/types/yield/actions/join/index.js +6 -0
  267. package/types/yield/actions/join/step.d.ts +95 -0
  268. package/types/yield/actions/join/step.js +46 -0
  269. package/types/yield/actions/join/submit.d.ts +57 -0
  270. package/types/yield/actions/join/submit.js +1 -0
  271. package/types/yield/actions/join/validate.d.ts +18 -0
  272. package/types/yield/actions/join/validate.js +10 -0
  273. package/types/yield/actions/others.d.ts +85 -0
  274. package/types/yield/actions/others.js +1 -0
  275. package/types/yield/index.d.ts +2 -0
  276. package/types/yield/index.js +5 -0
  277. package/types/yield/info/account/index.d.ts +4 -0
  278. package/types/yield/info/account/index.js +7 -0
  279. package/types/yield/info/account/info.d.ts +92 -0
  280. package/types/yield/info/account/info.js +1 -0
  281. package/types/yield/info/account/reward.d.ts +45 -0
  282. package/types/yield/info/account/reward.js +1 -0
  283. package/types/yield/info/account/target.d.ts +43 -0
  284. package/types/yield/info/account/target.js +27 -0
  285. package/types/yield/info/account/unstake.d.ts +31 -0
  286. package/types/yield/info/account/unstake.js +22 -0
  287. package/types/yield/info/base.d.ts +45 -0
  288. package/types/yield/info/base.js +36 -0
  289. package/types/yield/info/chain/index.d.ts +2 -0
  290. package/types/yield/info/chain/index.js +5 -0
  291. package/types/yield/info/chain/info.d.ts +251 -0
  292. package/types/yield/info/chain/info.js +1 -0
  293. package/types/yield/info/chain/target.d.ts +37 -0
  294. package/types/yield/info/chain/target.js +1 -0
  295. package/types/yield/info/index.d.ts +4 -0
  296. package/types/yield/info/index.js +7 -0
  297. package/types/yield/info/pallet.d.ts +143 -0
  298. package/types/yield/info/pallet.js +9 -0
  299. package/utils/fetchStaticData.js +2 -1
  300. package/utils/index.d.ts +5 -0
  301. package/utils/index.js +53 -1
  302. package/utils/number.d.ts +1 -1
  303. package/utils/number.js +1 -1
  304. package/utils/object.d.ts +1 -0
  305. package/utils/object.js +6 -0
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
8
+ var _constants = require("@subwallet/extension-base/constants");
9
+ var _constants2 = require("@subwallet/extension-base/services/earning-service/constants");
10
+ var _utils = require("@subwallet/extension-base/utils");
11
+ var _util = require("@polkadot/util");
12
+ // Copyright 2019-2022 @subwallet/extension-base
13
+ // SPDX-License-Identifier: Apache-2.0
14
+
15
+ /**
16
+ * @class BasePoolHandler
17
+ * @description Base pool handler
18
+ * */
19
+ class BasePoolHandler {
20
+ /** Koni state */
21
+
22
+ /** Pool's chain */
23
+
24
+ /** Pool's logo */
25
+
26
+ /** Pool's slug */
27
+
28
+ /** Pool's type */
29
+
30
+ /** Pool's name */
31
+
32
+ /** Pool's short name */
33
+
34
+ /** Pool's transaction type */
35
+ transactionChainType = _KoniTypes.ChainType.SUBSTRATE;
36
+
37
+ /** Pool's available method */
38
+
39
+ /**
40
+ * @constructor
41
+ * @param {KoniState} state - Koni state
42
+ * @param {string} chain - Pool's chain
43
+ * */
44
+ constructor(state, chain) {
45
+ this.state = state;
46
+ this.chain = chain;
47
+ this._logo = chain;
48
+ }
49
+ get logo() {
50
+ return this._logo;
51
+ }
52
+ get group() {
53
+ const groupSlug = this.nativeToken.multiChainAsset;
54
+ return groupSlug || this.nativeToken.slug;
55
+ }
56
+ get isActive() {
57
+ return this.state.activeChainSlugs.includes(this.chain);
58
+ }
59
+ get substrateApi() {
60
+ return this.state.getSubstrateApi(this.chain);
61
+ }
62
+ get evmApi() {
63
+ return this.state.getEvmApi(this.chain);
64
+ }
65
+ get chainInfo() {
66
+ return this.state.getChainInfo(this.chain);
67
+ }
68
+ get nativeToken() {
69
+ return this.state.getNativeTokenInfo(this.chain);
70
+ }
71
+ get baseInfo() {
72
+ return {
73
+ group: this.group,
74
+ chain: this.chain,
75
+ slug: this.slug
76
+ };
77
+ }
78
+ get maintainBalance() {
79
+ const decimals = this.nativeToken.decimals || 0;
80
+ const defaultMaintainBalance = new _util.BN(1).mul(_util.BN_TEN.pow(new _util.BN(decimals)));
81
+ const ed = new _util.BN(this.nativeToken.minAmount || '0');
82
+ const maintainBalance = ed.gte(defaultMaintainBalance) ? new _util.BN(15).mul(ed).div(_util.BN_TEN) : defaultMaintainBalance;
83
+ return maintainBalance.toString();
84
+ }
85
+ get metadataInfo() {
86
+ return {
87
+ name: this.name,
88
+ shortName: this.shortName,
89
+ logo: this.logo,
90
+ inputAsset: this.nativeToken.slug,
91
+ isAvailable: true,
92
+ maintainAsset: this.nativeToken.slug,
93
+ maintainBalance: this.maintainBalance,
94
+ availableMethod: this.availableMethod
95
+ };
96
+ }
97
+
98
+ /** Can mint when haven't enough native token (use input token for fee) */
99
+ get isPoolSupportAlternativeFee() {
100
+ return false;
101
+ }
102
+ async getPoolInfo() {
103
+ return this.state.dbService.getYieldPool(this.slug);
104
+ }
105
+ async getPoolPosition(address) {
106
+ return this.state.dbService.getYieldPositionByAddressAndSlug(address, this.slug);
107
+ }
108
+
109
+ /* Subscribe data */
110
+
111
+ /** Subscribe pool info */
112
+
113
+ /* Subscribe data */
114
+
115
+ /* Join action */
116
+
117
+ /* Early validate */
118
+
119
+ async earlyValidate(request) {
120
+ var _poolInfo$statistic, _poolInfo$statistic2, _poolInfo$statistic2$;
121
+ const poolInfo = await this.getPoolInfo();
122
+ if (!poolInfo || !((_poolInfo$statistic = poolInfo.statistic) !== null && _poolInfo$statistic !== void 0 && _poolInfo$statistic.earningThreshold.join)) {
123
+ return {
124
+ passed: false,
125
+ errorMessage: 'There\'s a trouble fetching data, please check your internet connection and try again'
126
+ };
127
+ }
128
+ if (request.address === _constants.ALL_ACCOUNT_KEY) {
129
+ return {
130
+ passed: true
131
+ };
132
+ }
133
+ const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(this.chain);
134
+ const nativeTokenBalance = await this.state.balanceService.getTokenFreeBalance(request.address, this.chain);
135
+ const bnNativeTokenBalance = new _util.BN(nativeTokenBalance.value);
136
+ if (bnNativeTokenBalance.lte(new _util.BN((_poolInfo$statistic2 = poolInfo.statistic) === null || _poolInfo$statistic2 === void 0 ? void 0 : (_poolInfo$statistic2$ = _poolInfo$statistic2.earningThreshold) === null || _poolInfo$statistic2$ === void 0 ? void 0 : _poolInfo$statistic2$.join))) {
137
+ var _poolInfo$statistic3, _poolInfo$statistic3$;
138
+ const minJoin = (0, _utils.formatNumber)(((_poolInfo$statistic3 = poolInfo.statistic) === null || _poolInfo$statistic3 === void 0 ? void 0 : (_poolInfo$statistic3$ = _poolInfo$statistic3.earningThreshold) === null || _poolInfo$statistic3$ === void 0 ? void 0 : _poolInfo$statistic3$.join) || '0', this.nativeToken.decimals || 0);
139
+ const originChain = this.state.getChainInfo(nativeTokenInfo.originChain);
140
+ return {
141
+ passed: false,
142
+ errorMessage: `You need at least ${minJoin} ${nativeTokenInfo.symbol} (${originChain.name}) to start earning`
143
+ };
144
+ }
145
+ return {
146
+ passed: true
147
+ };
148
+ }
149
+
150
+ /* Early validate */
151
+
152
+ /* Generate steps */
153
+
154
+ /**
155
+ * @function firstStepFee
156
+ * */
157
+ get firstStepFee() {
158
+ return {
159
+ slug: ''
160
+ };
161
+ }
162
+
163
+ /**
164
+ * @function defaultSubmitStep
165
+ * @description Default submit step data
166
+ * */
167
+
168
+ /**
169
+ * @async
170
+ * @function getTokenApproveStep
171
+ * @param {OptimalYieldPathParams} params - base param to join pool
172
+ * @description Generate token approve step data
173
+ * */
174
+ async getTokenApproveStep(params) {
175
+ return Promise.resolve(undefined);
176
+ }
177
+
178
+ /**
179
+ * @async
180
+ * @function getXcmStep
181
+ * @param {OptimalYieldPathParams} params - base param to join pool
182
+ * @description Generate token approve step data
183
+ * */
184
+ async getXcmStep(params) {
185
+ return Promise.resolve(undefined);
186
+ }
187
+
188
+ /**
189
+ * @async
190
+ * @function getSubmitStep
191
+ * @param {OptimalYieldPathParams} params - base param to join pool
192
+ * @description Generate token approve step data
193
+ * */
194
+
195
+ /** Generate the optimal steps to join pool */
196
+ async generateOptimalPath(params) {
197
+ const result = {
198
+ totalFee: [this.firstStepFee],
199
+ steps: [_constants2.DEFAULT_YIELD_FIRST_STEP]
200
+ };
201
+ try {
202
+ const stepFunctions = [this.getTokenApproveStep, this.getXcmStep, this.getSubmitStep];
203
+ for (const stepFunction of stepFunctions) {
204
+ const step = await stepFunction.bind(this, params)();
205
+ if (step) {
206
+ const [info, fee] = step;
207
+ result.steps.push({
208
+ id: result.steps.length,
209
+ ...info
210
+ });
211
+ result.totalFee.push(fee);
212
+ }
213
+ }
214
+ return result;
215
+ } catch (e) {
216
+ const errorMessage = e.message;
217
+ if (errorMessage.includes('network')) {
218
+ result.connectionError = errorMessage.split(' ')[0];
219
+ }
220
+
221
+ /* Submit step */
222
+
223
+ const [step, fee] = this.defaultSubmitStep;
224
+ result.steps.push({
225
+ id: result.steps.length,
226
+ ...step
227
+ });
228
+ result.totalFee.push(fee);
229
+
230
+ /* Submit step */
231
+
232
+ return result;
233
+ }
234
+ }
235
+
236
+ /* Generate steps */
237
+
238
+ /* Validate */
239
+
240
+ /** Validate param to join the pool */
241
+
242
+ /** Create `transaction` to leave the pool */
243
+ async handleYieldLeave(fastLeave, amount, address, selectedTarget) {
244
+ if (fastLeave) {
245
+ return this.handleYieldRedeem(amount, address, selectedTarget);
246
+ } else {
247
+ return this.handleYieldUnstake(amount, address, selectedTarget);
248
+ }
249
+ }
250
+
251
+ /* Leave action */
252
+
253
+ /* Other actions */
254
+
255
+ /** Create `transaction` to withdraw unstaked amount */
256
+
257
+ /* Other actions */
258
+ }
259
+ exports.default = BasePoolHandler;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ var _exportNames = {
8
+ BasePoolHandler: true,
9
+ NominationPoolHandler: true
10
+ };
11
+ Object.defineProperty(exports, "BasePoolHandler", {
12
+ enumerable: true,
13
+ get: function () {
14
+ return _base.default;
15
+ }
16
+ });
17
+ Object.defineProperty(exports, "NominationPoolHandler", {
18
+ enumerable: true,
19
+ get: function () {
20
+ return _nominationPool.default;
21
+ }
22
+ });
23
+ var _base = _interopRequireDefault(require("./base"));
24
+ var _nominationPool = _interopRequireDefault(require("./nomination-pool"));
25
+ var _lending = require("./lending");
26
+ Object.keys(_lending).forEach(function (key) {
27
+ if (key === "default" || key === "__esModule") return;
28
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
29
+ if (key in exports && exports[key] === _lending[key]) return;
30
+ Object.defineProperty(exports, key, {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _lending[key];
34
+ }
35
+ });
36
+ });
37
+ var _liquidStaking = require("./liquid-staking");
38
+ Object.keys(_liquidStaking).forEach(function (key) {
39
+ if (key === "default" || key === "__esModule") return;
40
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
41
+ if (key in exports && exports[key] === _liquidStaking[key]) return;
42
+ Object.defineProperty(exports, key, {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _liquidStaking[key];
46
+ }
47
+ });
48
+ });
49
+ var _nativeStaking = require("./native-staking");
50
+ Object.keys(_nativeStaking).forEach(function (key) {
51
+ if (key === "default" || key === "__esModule") return;
52
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
53
+ if (key in exports && exports[key] === _nativeStaking[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _nativeStaking[key];
58
+ }
59
+ });
60
+ });
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _types = require("@subwallet/extension-base/types");
9
+ var _special = _interopRequireDefault(require("../special"));
10
+ // Copyright 2019-2022 @subwallet/extension-base
11
+ // SPDX-License-Identifier: Apache-2.0
12
+
13
+ class BaseLendingPoolHandler extends _special.default {
14
+ type = _types.YieldPoolType.LENDING;
15
+
16
+ /* Subscribe pool info */
17
+
18
+ /* Subscribe pool info */
19
+ }
20
+ exports.default = BaseLendingPoolHandler;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "InterlayLendingPoolHandler", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _interlay.default;
11
+ }
12
+ });
13
+ var _interlay = _interopRequireDefault(require("./interlay"));
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ 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 _utils = require("@subwallet/extension-base/services/chain-service/utils");
11
+ var _types = require("@subwallet/extension-base/types");
12
+ var _util = require("@polkadot/util");
13
+ var _constants = require("../../constants");
14
+ var _base = _interopRequireDefault(require("./base"));
15
+ // Copyright 2019-2022 @subwallet/extension-base
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ class InterlayLendingPoolHandler extends _base.default {
19
+ altInputAsset = 'polkadot-NATIVE-DOT';
20
+ derivativeAssets = ['interlay-LOCAL-qDOT'];
21
+ inputAsset = 'interlay-LOCAL-DOT';
22
+ rewardAssets = ['interlay-LOCAL-DOT'];
23
+ feeAssets = ['interlay-NATIVE-INTR', 'interlay-LOCAL-DOT'];
24
+ availableMethod = {
25
+ join: true,
26
+ defaultUnstake: false,
27
+ fastUnstake: true,
28
+ cancelUnstake: false,
29
+ withdraw: false,
30
+ claimReward: false
31
+ };
32
+ rateDecimals = 18;
33
+ constructor(state, chain) {
34
+ super(state, chain);
35
+ const chainInfo = this.chainInfo;
36
+ this.slug = `DOT___lending___${chain}`;
37
+ this.name = `${chainInfo.name} Lending`;
38
+ this.shortName = chainInfo.name.replaceAll(' Relay Chain', '');
39
+ }
40
+ getDescription() {
41
+ return 'Earn rewards by lending DOT';
42
+ }
43
+
44
+ /* Subscribe pool info */
45
+
46
+ async getPoolStat() {
47
+ const substrateApi = await this.substrateApi.isReady;
48
+ const inputTokenSlug = this.inputAsset;
49
+ const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
50
+ const _exchangeRate = await substrateApi.api.query.loans.exchangeRate((0, _utils._getTokenOnChainInfo)(inputTokenInfo));
51
+ const exchangeRate = _exchangeRate.toPrimitive();
52
+ const decimals = 10 ** this.rateDecimals;
53
+ this.updateExchangeRate(exchangeRate);
54
+ return {
55
+ ...this.baseInfo,
56
+ type: this.type,
57
+ metadata: {
58
+ ...this.metadataInfo,
59
+ description: this.getDescription()
60
+ },
61
+ statistic: {
62
+ assetEarning: [{
63
+ slug: this.rewardAssets[0],
64
+ apr: 1.29,
65
+ exchangeRate: exchangeRate / decimals
66
+ }],
67
+ maxCandidatePerFarmer: 1,
68
+ maxWithdrawalRequestPerFarmer: 1,
69
+ earningThreshold: {
70
+ join: '10000000000',
71
+ defaultUnstake: '0',
72
+ fastUnstake: '0'
73
+ },
74
+ totalApr: 1.29,
75
+ tvl: '291890000000000'
76
+ }
77
+ };
78
+ }
79
+
80
+ /* Subscribe pool info */
81
+
82
+ /* Subscribe pool position */
83
+
84
+ async subscribePoolPosition(useAddresses, resultCallback) {
85
+ let cancel = false;
86
+ const substrateApi = this.substrateApi;
87
+ await substrateApi.isReady;
88
+ const derivativeTokenSlug = this.derivativeAssets[0];
89
+ const derivativeTokenInfo = this.state.getAssetBySlug(derivativeTokenSlug);
90
+ const unsub = await substrateApi.api.query.tokens.accounts.multi(useAddresses.map(address => [address, (0, _utils._getTokenOnChainInfo)(derivativeTokenInfo)]), async _balances => {
91
+ if (cancel) {
92
+ unsub();
93
+ return;
94
+ }
95
+ const exchangeRate = await this.getExchangeRate();
96
+ const decimals = _util.BN_TEN.pow(new _util.BN(this.rateDecimals));
97
+ const balances = _balances;
98
+ for (let i = 0; i < balances.length; i++) {
99
+ const balanceItem = balances[i];
100
+ const address = useAddresses[i];
101
+ const bnActiveBalance = balanceItem.free || _util.BN_ZERO;
102
+ const bnTotalBalance = bnActiveBalance.mul(new _util.BN(exchangeRate)).div(decimals);
103
+ const result = {
104
+ ...this.baseInfo,
105
+ type: this.type,
106
+ address,
107
+ balanceToken: this.inputAsset,
108
+ totalStake: bnTotalBalance.toString(),
109
+ activeStake: bnActiveBalance.toString(),
110
+ unstakeBalance: '0',
111
+ status: _types.EarningStatus.EARNING_REWARD,
112
+ derivativeToken: derivativeTokenSlug,
113
+ isBondedBefore: bnTotalBalance.gt(_util.BN_ZERO),
114
+ nominations: [],
115
+ unstakings: []
116
+ };
117
+ resultCallback(result);
118
+ }
119
+ });
120
+ return () => {
121
+ cancel = true;
122
+ unsub();
123
+ };
124
+ }
125
+
126
+ /* Subscribe pool position */
127
+
128
+ /* Join pool action */
129
+
130
+ get submitJoinStepInfo() {
131
+ return {
132
+ name: 'Mint qDOT',
133
+ type: _types.YieldStepType.MINT_QDOT
134
+ };
135
+ }
136
+ async getSubmitStepFee(params) {
137
+ const poolOriginSubstrateApi = await this.substrateApi.isReady;
138
+ const inputTokenSlug = this.inputAsset;
139
+ const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
140
+ const defaultFeeTokenSlug = this.feeAssets[0];
141
+ if (new _util.BN(params.amount).gt(_util.BN_ZERO)) {
142
+ const _mintFeeInfo = await poolOriginSubstrateApi.api.tx.loans.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), params.amount).paymentInfo(_constants.fakeAddress);
143
+ const mintFeeInfo = _mintFeeInfo.toPrimitive();
144
+ return {
145
+ amount: mintFeeInfo.partialFee.toString(),
146
+ slug: defaultFeeTokenSlug
147
+ };
148
+ } else {
149
+ return {
150
+ amount: '0',
151
+ slug: defaultFeeTokenSlug
152
+ };
153
+ }
154
+ }
155
+ async handleSubmitStep(data, path) {
156
+ const substrateApi = await this.substrateApi.isReady;
157
+ const inputTokenSlug = this.inputAsset;
158
+ const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
159
+ const extrinsic = substrateApi.api.tx.loans.mint((0, _utils._getTokenOnChainInfo)(inputTokenInfo), data.amount);
160
+ return {
161
+ txChain: this.chain,
162
+ extrinsicType: _KoniTypes.ExtrinsicType.MINT_QDOT,
163
+ extrinsic,
164
+ txData: data,
165
+ transferNativeAmount: '0'
166
+ };
167
+ }
168
+
169
+ /* Join pool action */
170
+
171
+ /* Leave pool action */
172
+
173
+ async handleYieldRedeem(amount, address, selectedTarget) {
174
+ const substrateApi = await this.substrateApi.isReady;
175
+ // @ts-ignore
176
+ const inputTokenSlug = this.inputAsset;
177
+ const inputTokenInfo = this.state.getAssetBySlug(inputTokenSlug);
178
+ const yieldPositionInfo = await this.getPoolPosition(address);
179
+ if (!yieldPositionInfo) {
180
+ return Promise.reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS));
181
+ }
182
+ const bnAmount = new _util.BN(amount);
183
+ const bnActiveBalance = new _util.BN(yieldPositionInfo.activeStake);
184
+ const redeemAll = bnAmount.eq(bnActiveBalance);
185
+ const extrinsic = !redeemAll ? substrateApi.api.tx.loans.redeem((0, _utils._getTokenOnChainInfo)(inputTokenInfo), amount) : substrateApi.api.tx.loans.redeemAll((0, _utils._getTokenOnChainInfo)(inputTokenInfo));
186
+ return [_KoniTypes.ExtrinsicType.REDEEM_QDOT, extrinsic];
187
+ }
188
+
189
+ /* Leave pool action */
190
+ }
191
+ exports.default = InterlayLendingPoolHandler;