@subwallet/extension-base 1.1.31-beta.0 → 1.1.32-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 (307) 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 +15 -17
  11. package/cjs/koni/api/staking/bonding/astar.js +10 -11
  12. package/cjs/koni/api/staking/bonding/index.js +3 -4
  13. package/cjs/koni/api/staking/bonding/paraChain.js +29 -28
  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 +5 -6
  18. package/cjs/koni/api/staking/relayChain.js +2 -3
  19. package/cjs/koni/background/cron.js +1 -11
  20. package/cjs/koni/background/handlers/Extension.js +69 -362
  21. package/cjs/koni/background/handlers/State.js +3 -51
  22. package/cjs/koni/background/handlers/index.js +2 -4
  23. package/cjs/koni/background/subscription.js +37 -95
  24. package/cjs/packageInfo.js +1 -1
  25. package/cjs/services/campaign-service/index.js +6 -9
  26. package/cjs/services/chain-service/constants.js +18 -3
  27. package/cjs/services/chain-service/index.js +2 -3
  28. package/cjs/services/chain-service/utils.js +1 -7
  29. package/cjs/services/event-service/index.js +0 -4
  30. package/cjs/services/keyring-service/index.js +2 -14
  31. package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  32. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  33. package/cjs/services/migration-service/scripts/index.js +1 -7
  34. package/cjs/services/notification-service/NotificationService.js +1 -1
  35. package/cjs/services/storage-service/DatabaseService.js +0 -51
  36. package/cjs/services/storage-service/databases/index.js +0 -4
  37. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  38. package/cjs/services/subscan-service/index.js +0 -16
  39. package/cjs/services/transaction-service/event-parser/index.js +0 -58
  40. package/cjs/services/transaction-service/helpers/index.js +1 -3
  41. package/cjs/services/transaction-service/index.js +75 -231
  42. package/cjs/services/transaction-service/utils.js +0 -1
  43. package/cjs/types/index.js +0 -44
  44. package/cjs/utils/fetchStaticData.js +1 -2
  45. package/cjs/utils/index.js +1 -89
  46. package/cjs/utils/number.js +1 -3
  47. package/constants/index.d.ts +1 -6
  48. package/constants/index.js +1 -6
  49. package/koni/api/nft/config.js +23 -33
  50. package/koni/api/nft/index.js +1 -15
  51. package/koni/api/nft/nft.js +23 -2
  52. package/koni/api/staking/bonding/amplitude.js +9 -11
  53. package/koni/api/staking/bonding/astar.js +8 -9
  54. package/koni/api/staking/bonding/index.d.ts +2 -1
  55. package/koni/api/staking/bonding/index.js +3 -5
  56. package/koni/api/staking/bonding/paraChain.js +16 -15
  57. package/koni/api/staking/bonding/relayChain.d.ts +2 -2
  58. package/koni/api/staking/bonding/relayChain.js +30 -33
  59. package/koni/api/staking/bonding/utils.d.ts +38 -15
  60. package/koni/api/staking/bonding/utils.js +69 -85
  61. package/koni/api/staking/index.js +1 -2
  62. package/koni/api/staking/paraChain.js +6 -7
  63. package/koni/api/staking/relayChain.js +3 -4
  64. package/koni/background/cron.d.ts +0 -1
  65. package/koni/background/cron.js +2 -12
  66. package/koni/background/handlers/Extension.d.ts +1 -17
  67. package/koni/background/handlers/Extension.js +30 -321
  68. package/koni/background/handlers/State.d.ts +2 -18
  69. package/koni/background/handlers/State.js +3 -50
  70. package/koni/background/handlers/index.js +2 -4
  71. package/koni/background/subscription.d.ts +1 -6
  72. package/koni/background/subscription.js +38 -97
  73. package/package.json +8 -321
  74. package/packageInfo.js +1 -1
  75. package/services/campaign-service/index.js +6 -9
  76. package/services/chain-service/constants.d.ts +11 -0
  77. package/services/chain-service/constants.js +16 -2
  78. package/services/chain-service/index.js +2 -3
  79. package/services/chain-service/utils.d.ts +0 -1
  80. package/services/chain-service/utils.js +1 -5
  81. package/services/event-service/index.d.ts +0 -1
  82. package/services/event-service/index.js +0 -4
  83. package/services/event-service/types.d.ts +0 -8
  84. package/services/keyring-service/index.d.ts +1 -2
  85. package/services/keyring-service/index.js +2 -14
  86. package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
  87. package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
  88. package/services/migration-service/scripts/index.js +1 -7
  89. package/services/notification-service/NotificationService.js +1 -1
  90. package/services/storage-service/DatabaseService.d.ts +1 -18
  91. package/services/storage-service/DatabaseService.js +0 -51
  92. package/services/storage-service/databases/index.d.ts +1 -3
  93. package/services/storage-service/databases/index.js +0 -4
  94. package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
  95. package/services/subscan-service/index.d.ts +2 -3
  96. package/services/subscan-service/index.js +0 -15
  97. package/services/subscan-service/types.d.ts +0 -20
  98. package/services/transaction-service/event-parser/index.d.ts +1 -3
  99. package/services/transaction-service/event-parser/index.js +1 -57
  100. package/services/transaction-service/helpers/index.js +1 -3
  101. package/services/transaction-service/index.d.ts +15 -4
  102. package/services/transaction-service/index.js +73 -229
  103. package/services/transaction-service/types.d.ts +0 -2
  104. package/services/transaction-service/utils.js +0 -1
  105. package/types/index.d.ts +0 -5
  106. package/types/index.js +1 -5
  107. package/utils/fetchStaticData.js +1 -2
  108. package/utils/index.d.ts +0 -5
  109. package/utils/index.js +1 -53
  110. package/utils/number.d.ts +1 -1
  111. package/utils/number.js +1 -1
  112. package/cjs/koni/api/dotsama/balance.js +0 -464
  113. package/cjs/koni/api/nft/ordinal_nft/constants.js +0 -21
  114. package/cjs/koni/api/nft/ordinal_nft/index.js +0 -121
  115. package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
  116. package/cjs/koni/api/yield/helper/utils.js +0 -46
  117. package/cjs/services/earning-service/constants/chains.js +0 -29
  118. package/cjs/services/earning-service/constants/index.js +0 -27
  119. package/cjs/services/earning-service/constants/step.js +0 -18
  120. package/cjs/services/earning-service/handlers/base.js +0 -259
  121. package/cjs/services/earning-service/handlers/index.js +0 -60
  122. package/cjs/services/earning-service/handlers/lending/base.js +0 -20
  123. package/cjs/services/earning-service/handlers/lending/index.js +0 -13
  124. package/cjs/services/earning-service/handlers/lending/interlay.js +0 -191
  125. package/cjs/services/earning-service/handlers/liquid-staking/acala.js +0 -239
  126. package/cjs/services/earning-service/handlers/liquid-staking/base.js +0 -43
  127. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +0 -297
  128. package/cjs/services/earning-service/handlers/liquid-staking/index.js +0 -34
  129. package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +0 -226
  130. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -395
  131. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +0 -384
  132. package/cjs/services/earning-service/handlers/native-staking/astar.js +0 -461
  133. package/cjs/services/earning-service/handlers/native-staking/base-para.js +0 -146
  134. package/cjs/services/earning-service/handlers/native-staking/base.js +0 -159
  135. package/cjs/services/earning-service/handlers/native-staking/index.js +0 -34
  136. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +0 -385
  137. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +0 -558
  138. package/cjs/services/earning-service/handlers/nomination-pool/index.js +0 -560
  139. package/cjs/services/earning-service/handlers/special.js +0 -503
  140. package/cjs/services/earning-service/service.js +0 -387
  141. package/cjs/services/earning-service/utils/index.js +0 -128
  142. package/cjs/services/migration-service/scripts/DeleteEarningData.js +0 -21
  143. package/cjs/services/migration-service/scripts/EnableEarningChains.js +0 -21
  144. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
  145. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
  146. package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
  147. package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -21
  148. package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -21
  149. package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -149
  150. package/cjs/services/mint-campaign-service/campaigns/index.js +0 -13
  151. package/cjs/services/mint-campaign-service/constants.js +0 -11
  152. package/cjs/services/mint-campaign-service/index.js +0 -18
  153. package/cjs/services/storage-service/db-stores/YieldPoolStore.js +0 -36
  154. package/cjs/services/storage-service/db-stores/YieldPositionStore.js +0 -65
  155. package/cjs/services/storage-service/index.js +0 -241
  156. package/cjs/types/campaigns/index.js +0 -16
  157. package/cjs/types/campaigns/unlock-dot.js +0 -1
  158. package/cjs/types/ordinal.js +0 -1
  159. package/cjs/types/transaction.js +0 -1
  160. package/cjs/types/yield/actions/index.js +0 -27
  161. package/cjs/types/yield/actions/join/index.js +0 -38
  162. package/cjs/types/yield/actions/join/step.js +0 -47
  163. package/cjs/types/yield/actions/join/submit.js +0 -1
  164. package/cjs/types/yield/actions/join/validate.js +0 -16
  165. package/cjs/types/yield/actions/others.js +0 -1
  166. package/cjs/types/yield/index.js +0 -27
  167. package/cjs/types/yield/info/account/index.js +0 -49
  168. package/cjs/types/yield/info/account/info.js +0 -1
  169. package/cjs/types/yield/info/account/reward.js +0 -1
  170. package/cjs/types/yield/info/account/target.js +0 -32
  171. package/cjs/types/yield/info/account/unstake.js +0 -27
  172. package/cjs/types/yield/info/base.js +0 -41
  173. package/cjs/types/yield/info/chain/index.js +0 -27
  174. package/cjs/types/yield/info/chain/info.js +0 -1
  175. package/cjs/types/yield/info/chain/target.js +0 -1
  176. package/cjs/types/yield/info/index.js +0 -49
  177. package/cjs/types/yield/info/pallet.js +0 -15
  178. package/cjs/types.js +0 -1
  179. package/cjs/utils/address.js +0 -34
  180. package/cjs/utils/keyring.js +0 -57
  181. package/cjs/utils/object.js +0 -12
  182. package/koni/api/nft/ordinal_nft/constants.d.ts +0 -9
  183. package/koni/api/nft/ordinal_nft/constants.js +0 -12
  184. package/koni/api/nft/ordinal_nft/index.d.ts +0 -8
  185. package/koni/api/nft/ordinal_nft/index.js +0 -114
  186. package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
  187. package/koni/api/nft/ordinal_nft/utils.js +0 -33
  188. package/koni/api/yield/helper/utils.d.ts +0 -10
  189. package/koni/api/yield/helper/utils.js +0 -32
  190. package/services/earning-service/constants/abis/compound_finance_v2_abi.json +0 -1235
  191. package/services/earning-service/constants/abis/st_liquid_token_abi.json +0 -1355
  192. package/services/earning-service/constants/chains.d.ts +0 -14
  193. package/services/earning-service/constants/chains.js +0 -21
  194. package/services/earning-service/constants/index.d.ts +0 -2
  195. package/services/earning-service/constants/index.js +0 -5
  196. package/services/earning-service/constants/step.d.ts +0 -3
  197. package/services/earning-service/constants/step.js +0 -10
  198. package/services/earning-service/handlers/base.d.ts +0 -112
  199. package/services/earning-service/handlers/base.js +0 -253
  200. package/services/earning-service/handlers/index.d.ts +0 -5
  201. package/services/earning-service/handlers/index.js +0 -8
  202. package/services/earning-service/handlers/lending/base.d.ts +0 -6
  203. package/services/earning-service/handlers/lending/base.js +0 -12
  204. package/services/earning-service/handlers/lending/index.d.ts +0 -1
  205. package/services/earning-service/handlers/lending/index.js +0 -4
  206. package/services/earning-service/handlers/lending/interlay.d.ts +0 -24
  207. package/services/earning-service/handlers/lending/interlay.js +0 -183
  208. package/services/earning-service/handlers/liquid-staking/acala.d.ts +0 -27
  209. package/services/earning-service/handlers/liquid-staking/acala.js +0 -231
  210. package/services/earning-service/handlers/liquid-staking/base.d.ts +0 -9
  211. package/services/earning-service/handlers/liquid-staking/base.js +0 -35
  212. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +0 -46
  213. package/services/earning-service/handlers/liquid-staking/bifrost.js +0 -286
  214. package/services/earning-service/handlers/liquid-staking/index.d.ts +0 -4
  215. package/services/earning-service/handlers/liquid-staking/index.js +0 -7
  216. package/services/earning-service/handlers/liquid-staking/parallel.d.ts +0 -26
  217. package/services/earning-service/handlers/liquid-staking/parallel.js +0 -218
  218. package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +0 -34
  219. package/services/earning-service/handlers/liquid-staking/stella-swap.js +0 -385
  220. package/services/earning-service/handlers/native-staking/amplitude.d.ts +0 -22
  221. package/services/earning-service/handlers/native-staking/amplitude.js +0 -375
  222. package/services/earning-service/handlers/native-staking/astar.d.ts +0 -19
  223. package/services/earning-service/handlers/native-staking/astar.js +0 -451
  224. package/services/earning-service/handlers/native-staking/base-para.d.ts +0 -11
  225. package/services/earning-service/handlers/native-staking/base-para.js +0 -138
  226. package/services/earning-service/handlers/native-staking/base.d.ts +0 -21
  227. package/services/earning-service/handlers/native-staking/base.js +0 -150
  228. package/services/earning-service/handlers/native-staking/index.d.ts +0 -4
  229. package/services/earning-service/handlers/native-staking/index.js +0 -7
  230. package/services/earning-service/handlers/native-staking/para-chain.d.ts +0 -15
  231. package/services/earning-service/handlers/native-staking/para-chain.js +0 -377
  232. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +0 -21
  233. package/services/earning-service/handlers/native-staking/relay-chain.js +0 -549
  234. package/services/earning-service/handlers/nomination-pool/index.d.ts +0 -36
  235. package/services/earning-service/handlers/nomination-pool/index.js +0 -550
  236. package/services/earning-service/handlers/special.d.ts +0 -65
  237. package/services/earning-service/handlers/special.js +0 -495
  238. package/services/earning-service/service.d.ts +0 -45
  239. package/services/earning-service/service.js +0 -379
  240. package/services/earning-service/utils/index.d.ts +0 -18
  241. package/services/earning-service/utils/index.js +0 -112
  242. package/services/migration-service/scripts/DeleteEarningData.d.ts +0 -4
  243. package/services/migration-service/scripts/DeleteEarningData.js +0 -13
  244. package/services/migration-service/scripts/EnableEarningChains.d.ts +0 -4
  245. package/services/migration-service/scripts/EnableEarningChains.js +0 -13
  246. package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +0 -4
  247. package/services/migration-service/scripts/databases/MigrateEarningHistory.js +0 -13
  248. package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +0 -4
  249. package/services/migration-service/scripts/databases/MigrateEarningVersion.js +0 -13
  250. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +0 -13
  251. package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +0 -139
  252. package/services/mint-campaign-service/campaigns/index.d.ts +0 -1
  253. package/services/mint-campaign-service/campaigns/index.js +0 -4
  254. package/services/mint-campaign-service/constants.d.ts +0 -1
  255. package/services/mint-campaign-service/constants.js +0 -4
  256. package/services/mint-campaign-service/index.d.ts +0 -7
  257. package/services/mint-campaign-service/index.js +0 -11
  258. package/services/storage-service/db-stores/YieldPoolStore.d.ts +0 -10
  259. package/services/storage-service/db-stores/YieldPoolStore.js +0 -28
  260. package/services/storage-service/db-stores/YieldPositionStore.d.ts +0 -9
  261. package/services/storage-service/db-stores/YieldPositionStore.js +0 -57
  262. package/types/campaigns/index.d.ts +0 -1
  263. package/types/campaigns/index.js +0 -4
  264. package/types/campaigns/unlock-dot.d.ts +0 -71
  265. package/types/campaigns/unlock-dot.js +0 -1
  266. package/types/ordinal.d.ts +0 -69
  267. package/types/ordinal.js +0 -1
  268. package/types/transaction.d.ts +0 -3
  269. package/types/transaction.js +0 -1
  270. package/types/yield/actions/index.d.ts +0 -2
  271. package/types/yield/actions/index.js +0 -5
  272. package/types/yield/actions/join/index.d.ts +0 -3
  273. package/types/yield/actions/join/index.js +0 -6
  274. package/types/yield/actions/join/step.d.ts +0 -95
  275. package/types/yield/actions/join/step.js +0 -46
  276. package/types/yield/actions/join/submit.d.ts +0 -57
  277. package/types/yield/actions/join/submit.js +0 -1
  278. package/types/yield/actions/join/validate.d.ts +0 -18
  279. package/types/yield/actions/join/validate.js +0 -10
  280. package/types/yield/actions/others.d.ts +0 -85
  281. package/types/yield/actions/others.js +0 -1
  282. package/types/yield/index.d.ts +0 -2
  283. package/types/yield/index.js +0 -5
  284. package/types/yield/info/account/index.d.ts +0 -4
  285. package/types/yield/info/account/index.js +0 -7
  286. package/types/yield/info/account/info.d.ts +0 -92
  287. package/types/yield/info/account/info.js +0 -1
  288. package/types/yield/info/account/reward.d.ts +0 -45
  289. package/types/yield/info/account/reward.js +0 -1
  290. package/types/yield/info/account/target.d.ts +0 -43
  291. package/types/yield/info/account/target.js +0 -27
  292. package/types/yield/info/account/unstake.d.ts +0 -31
  293. package/types/yield/info/account/unstake.js +0 -22
  294. package/types/yield/info/base.d.ts +0 -45
  295. package/types/yield/info/base.js +0 -36
  296. package/types/yield/info/chain/index.d.ts +0 -2
  297. package/types/yield/info/chain/index.js +0 -5
  298. package/types/yield/info/chain/info.d.ts +0 -251
  299. package/types/yield/info/chain/info.js +0 -1
  300. package/types/yield/info/chain/target.d.ts +0 -37
  301. package/types/yield/info/chain/target.js +0 -1
  302. package/types/yield/info/index.d.ts +0 -4
  303. package/types/yield/info/index.js +0 -7
  304. package/types/yield/info/pallet.d.ts +0 -143
  305. package/types/yield/info/pallet.js +0 -9
  306. package/utils/object.d.ts +0 -1
  307. package/utils/object.js +0 -6
@@ -1,375 +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 { APIItemState, BasicTxErrorType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
6
- import { getBondedValidators, getEarningStatusByNominations, isUnstakeAll } from '@subwallet/extension-base/koni/api/staking/bonding/utils';
7
- import { _STAKING_ERA_LENGTH_MAP } from '@subwallet/extension-base/services/chain-service/constants';
8
- import { _STAKING_CHAIN_GROUP } from '@subwallet/extension-base/services/earning-service/constants';
9
- import { parseIdentity } from '@subwallet/extension-base/services/earning-service/utils';
10
- import { EarningStatus, UnstakingStatus, YieldStepType } from '@subwallet/extension-base/types';
11
- import { balanceFormatter, formatNumber, parseRawNumber, reformatAddress } from '@subwallet/extension-base/utils';
12
- import { BN, BN_ZERO } from '@polkadot/util';
13
- import BaseParaNativeStakingPoolHandler from "./base-para.js";
14
- export default class AmplitudeNativeStakingPoolHandler extends BaseParaNativeStakingPoolHandler {
15
- /* Subscribe pool info */
16
-
17
- async subscribePoolInfo(callback) {
18
- let cancel = false;
19
- const nativeToken = this.nativeToken;
20
- if (!this.isActive) {
21
- const data = {
22
- ...this.baseInfo,
23
- type: this.type,
24
- metadata: {
25
- ...this.metadataInfo,
26
- description: this.getDescription()
27
- }
28
- };
29
- callback(data);
30
- return () => {
31
- cancel = true;
32
- };
33
- }
34
- const substrateApi = await this.substrateApi.isReady;
35
- const unsub = await substrateApi.api.query.parachainStaking.round(async _round => {
36
- if (cancel) {
37
- unsub();
38
- return;
39
- }
40
- const roundObj = _round.toHuman();
41
- const round = parseRawNumber(roundObj.current);
42
- const maxDelegations = substrateApi.api.consts.parachainStaking.maxDelegationsPerRound.toString();
43
- const minDelegatorStake = substrateApi.api.consts.parachainStaking.minDelegatorStake.toString();
44
- const unstakingDelay = substrateApi.api.consts.parachainStaking.stakeDuration.toString(); // in blocks
45
- const _blockPerRound = substrateApi.api.consts.parachainStaking.defaultBlocksPerRound.toString();
46
- const blockPerRound = parseFloat(_blockPerRound);
47
- const roundTime = _STAKING_ERA_LENGTH_MAP[this.chain] || _STAKING_ERA_LENGTH_MAP.default; // in hours
48
- const blockDuration = roundTime / blockPerRound; // in hours
49
- const unstakingPeriod = blockDuration * parseInt(unstakingDelay);
50
- const minToHuman = formatNumber(minDelegatorStake, nativeToken.decimals || 0, balanceFormatter);
51
- const delegatorStorages = await substrateApi.api.query.parachainStaking.delegatorState.keys();
52
- const staked = await substrateApi.api.query.parachainStaking.totalCollatorStake();
53
- const stakeInfo = staked.toPrimitive();
54
- const data = {
55
- ...this.baseInfo,
56
- type: this.type,
57
- metadata: {
58
- ...this.metadataInfo,
59
- description: this.getDescription(minToHuman)
60
- },
61
- statistic: {
62
- assetEarning: [{
63
- slug: this.nativeToken.slug
64
- }],
65
- maxCandidatePerFarmer: parseInt(maxDelegations),
66
- maxWithdrawalRequestPerFarmer: 1,
67
- // by default
68
- earningThreshold: {
69
- join: minDelegatorStake,
70
- defaultUnstake: '0',
71
- fastUnstake: '0'
72
- },
73
- farmerCount: delegatorStorages.length,
74
- // One delegator (farmer) - One collator (candidate) - on storage
75
- era: round,
76
- eraTime: roundTime,
77
- tvl: stakeInfo.delegators,
78
- // TODO recheck
79
- totalApy: undefined,
80
- // TODO recheck
81
- unstakingPeriod
82
- }
83
- };
84
- callback(data);
85
- });
86
- return () => {
87
- cancel = true;
88
- unsub();
89
- };
90
- }
91
-
92
- /* Subscribe pool info */
93
-
94
- /* Subscribe pool position */
95
-
96
- async parseNominatorMetadata(chainInfo, address, substrateApi, delegatorState, unstakingInfo) {
97
- const nominationList = [];
98
- const unstakingList = [];
99
- const minDelegatorStake = substrateApi.api.consts.parachainStaking.minDelegatorStake.toString();
100
- let activeStake = '0';
101
- let unstakingBalance = '0';
102
- if (delegatorState) {
103
- // delegatorState can be null while unstaking all
104
- const [identity] = await parseIdentity(substrateApi, delegatorState.owner);
105
- activeStake = delegatorState.amount.toString();
106
- const bnActiveStake = new BN(activeStake);
107
- let delegationStatus = EarningStatus.NOT_EARNING;
108
- if (bnActiveStake.gt(BN_ZERO) && bnActiveStake.gte(new BN(minDelegatorStake))) {
109
- delegationStatus = EarningStatus.EARNING_REWARD;
110
- }
111
- nominationList.push({
112
- status: delegationStatus,
113
- chain: chainInfo.slug,
114
- validatorAddress: delegatorState.owner,
115
- activeStake: delegatorState.amount.toString(),
116
- validatorMinStake: '0',
117
- hasUnstaking: !!unstakingInfo && Object.values(unstakingInfo).length > 0,
118
- validatorIdentity: identity
119
- });
120
- }
121
- if (unstakingInfo && Object.values(unstakingInfo).length > 0) {
122
- const _currentBlockInfo = await substrateApi.api.rpc.chain.getHeader();
123
- const currentBlockInfo = _currentBlockInfo.toPrimitive();
124
- const currentBlockNumber = currentBlockInfo.number;
125
- const _blockPerRound = substrateApi.api.consts.parachainStaking.defaultBlocksPerRound.toString();
126
- const blockPerRound = parseFloat(_blockPerRound);
127
- const nearestUnstakingBlock = Object.keys(unstakingInfo)[0];
128
- const nearestUnstakingAmount = Object.values(unstakingInfo)[0];
129
- const blockDuration = (_STAKING_ERA_LENGTH_MAP[chainInfo.slug] || _STAKING_ERA_LENGTH_MAP.default) / blockPerRound; // in hours
130
-
131
- const isClaimable = parseInt(nearestUnstakingBlock) - currentBlockNumber < 0;
132
- const remainingBlock = parseInt(nearestUnstakingBlock) - currentBlockNumber;
133
- const waitingTime = remainingBlock * blockDuration;
134
- unstakingBalance = nearestUnstakingAmount.toString();
135
- unstakingList.push({
136
- chain: chainInfo.slug,
137
- status: isClaimable ? UnstakingStatus.CLAIMABLE : UnstakingStatus.UNLOCKING,
138
- claimable: nearestUnstakingAmount.toString(),
139
- waitingTime,
140
- validatorAddress: (delegatorState === null || delegatorState === void 0 ? void 0 : delegatorState.owner) || undefined
141
- });
142
- }
143
- const totalBalance = new BN(activeStake).add(new BN(unstakingBalance));
144
- const stakingStatus = getEarningStatusByNominations(new BN(activeStake), nominationList);
145
- return {
146
- status: stakingStatus,
147
- balanceToken: this.nativeToken.slug,
148
- totalStake: totalBalance.toString(),
149
- activeStake: activeStake,
150
- unstakeBalance: unstakingBalance,
151
- isBondedBefore: true,
152
- nominations: nominationList,
153
- unstakings: unstakingList
154
- };
155
- }
156
- async subscribePoolPosition(useAddresses, resultCallback) {
157
- let cancel = false;
158
- const substrateApi = await this.substrateApi.isReady;
159
- const defaultInfo = this.baseInfo;
160
- const chainInfo = this.chainInfo;
161
- const unsub = await substrateApi.api.query.parachainStaking.delegatorState.multi(useAddresses, async ledgers => {
162
- if (cancel) {
163
- unsub();
164
- return;
165
- }
166
- if (ledgers) {
167
- const _unstakingStates = await substrateApi.api.query.parachainStaking.unstaking.multi(useAddresses);
168
- await Promise.all(ledgers.map(async (_delegatorState, i) => {
169
- const owner = reformatAddress(useAddresses[i], 42);
170
- const delegatorState = _delegatorState.toPrimitive();
171
- const unstakingInfo = _unstakingStates[i].toPrimitive();
172
- if (!delegatorState && !unstakingInfo) {
173
- resultCallback({
174
- ...defaultInfo,
175
- type: this.type,
176
- address: owner,
177
- balanceToken: this.nativeToken.slug,
178
- totalStake: '0',
179
- activeStake: '0',
180
- unstakeBalance: '0',
181
- status: EarningStatus.NOT_STAKING,
182
- isBondedBefore: false,
183
- nominations: [],
184
- unstakings: []
185
- });
186
- } else {
187
- const nominatorMetadata = await this.parseNominatorMetadata(chainInfo, owner, substrateApi, delegatorState, unstakingInfo);
188
- resultCallback({
189
- ...defaultInfo,
190
- ...nominatorMetadata,
191
- address: owner,
192
- type: this.type
193
- });
194
- }
195
- }));
196
- }
197
- });
198
- return () => {
199
- cancel = true;
200
- unsub();
201
- };
202
- }
203
-
204
- /* Subscribe pool position */
205
-
206
- /* Get pool reward */
207
-
208
- async getPoolReward(useAddresses, callBack) {
209
- let cancel = false;
210
- const substrateApi = this.substrateApi;
211
- await substrateApi.isReady;
212
- if (!_STAKING_CHAIN_GROUP.kilt.includes(this.chain)) {
213
- await Promise.all(useAddresses.map(async address => {
214
- const _unclaimedReward = await substrateApi.api.query.parachainStaking.rewards(address);
215
- if (cancel) {
216
- return;
217
- }
218
- callBack({
219
- ...this.baseInfo,
220
- address: address,
221
- type: this.type,
222
- unclaimedReward: _unclaimedReward.toString(),
223
- state: APIItemState.READY
224
- });
225
- }));
226
- }
227
- return () => {
228
- cancel = false;
229
- };
230
- }
231
-
232
- /* Get pool reward */
233
-
234
- /* Get pool targets */
235
-
236
- async getPoolTargets() {
237
- const chainApi = await this.substrateApi.isReady;
238
- const [_allCollators, _inflationConfig] = await Promise.all([chainApi.api.query.parachainStaking.candidatePool.entries(), chainApi.api.query.parachainStaking.inflationConfig()]);
239
- const maxDelegatorsPerCollator = chainApi.api.consts.parachainStaking.maxDelegatorsPerCollator.toString();
240
- const inflationConfig = _inflationConfig.toHuman();
241
- const rawDelegatorReturn = inflationConfig.delegator.rewardRate.annual;
242
- const delegatorReturn = parseFloat(rawDelegatorReturn.split('%')[0]);
243
- const allCollators = [];
244
- for (const _collator of _allCollators) {
245
- const collatorInfo = _collator[1].toPrimitive();
246
- const bnTotalStake = new BN(collatorInfo.total);
247
- const bnOwnStake = new BN(collatorInfo.stake);
248
- const bnOtherStake = bnTotalStake.sub(bnOwnStake);
249
- allCollators.push({
250
- address: collatorInfo.id,
251
- totalStake: bnTotalStake.toString(),
252
- ownStake: bnOwnStake.toString(),
253
- otherStake: bnOtherStake.toString(),
254
- nominatorCount: collatorInfo.delegators.length,
255
- commission: 0,
256
- expectedReturn: delegatorReturn,
257
- blocked: false,
258
- isVerified: false,
259
- minBond: '0',
260
- chain: this.chain,
261
- isCrowded: collatorInfo.delegators.length >= parseInt(maxDelegatorsPerCollator)
262
- });
263
- }
264
- return allCollators;
265
- }
266
-
267
- /* Get pool targets */
268
-
269
- /* Join pool action */
270
-
271
- get defaultSubmitStep() {
272
- return [{
273
- name: 'Nominate collators',
274
- type: YieldStepType.NOMINATE
275
- }, {
276
- slug: this.nativeToken.slug,
277
- amount: '0'
278
- }];
279
- }
280
- async createJoinExtrinsic(data, positionInfo, bondDest = 'Staked') {
281
- const {
282
- address,
283
- amount,
284
- selectedValidators: targetValidators
285
- } = data;
286
- const chainApi = await this.substrateApi.isReady;
287
- const binaryAmount = new BN(amount);
288
- const poolPosition = await this.getPoolPosition(address);
289
- const selectedValidatorInfo = targetValidators[0];
290
-
291
- // eslint-disable-next-line @typescript-eslint/require-await
292
- const compoundResult = async extrinsic => {
293
- const tokenSlug = this.nativeToken.slug;
294
- // const feeInfo = await extrinsic.paymentInfo(address);
295
- // const fee = feeInfo.toPrimitive() as unknown as RuntimeDispatchInfo;
296
-
297
- // Not use the fee to validate and to display on UI
298
- return [extrinsic, {
299
- slug: tokenSlug,
300
- amount: '0'
301
- }];
302
- };
303
- if (!poolPosition) {
304
- const extrinsic = chainApi.api.tx.parachainStaking.joinDelegators(selectedValidatorInfo.address, binaryAmount);
305
- return compoundResult(extrinsic);
306
- }
307
- const {
308
- bondedValidators
309
- } = getBondedValidators(poolPosition.nominations);
310
- if (!bondedValidators.includes(reformatAddress(selectedValidatorInfo.address, 0))) {
311
- const extrinsic = chainApi.api.tx.parachainStaking.joinDelegators(selectedValidatorInfo.address, binaryAmount);
312
- return compoundResult(extrinsic);
313
- } else {
314
- const _params = chainApi.api.tx.parachainStaking.delegatorStakeMore.toJSON();
315
- const paramsCount = _params.args.length;
316
- if (paramsCount === 2) {
317
- // detect number of params
318
- const extrinsic = chainApi.api.tx.parachainStaking.delegatorStakeMore(selectedValidatorInfo.address, binaryAmount);
319
- return compoundResult(extrinsic);
320
- } else {
321
- const extrinsic = chainApi.api.tx.parachainStaking.delegatorStakeMore(binaryAmount);
322
- return compoundResult(extrinsic);
323
- }
324
- }
325
- }
326
-
327
- /* Join pool action */
328
-
329
- /* Leave pool action */
330
-
331
- async handleYieldUnstake(amount, address, selectedTarget) {
332
- const chainApi = await this.substrateApi.isReady;
333
- const binaryAmount = new BN(amount);
334
- const poolPosition = await this.getPoolPosition(address);
335
- if (!selectedTarget || !poolPosition) {
336
- return Promise.reject(new TransactionError(BasicTxErrorType.INVALID_PARAMS));
337
- }
338
- const unstakeAll = isUnstakeAll(selectedTarget, poolPosition.nominations, amount);
339
- let extrinsic;
340
- if (!unstakeAll) {
341
- const _params = chainApi.api.tx.parachainStaking.delegatorStakeMore.toJSON();
342
- const paramsCount = _params.args.length;
343
- if (paramsCount === 2) {
344
- extrinsic = chainApi.api.tx.parachainStaking.delegatorStakeLess(selectedTarget, binaryAmount);
345
- } else {
346
- extrinsic = chainApi.api.tx.parachainStaking.delegatorStakeLess(binaryAmount);
347
- }
348
- } else {
349
- extrinsic = chainApi.api.tx.parachainStaking.leaveDelegators();
350
- }
351
- return [ExtrinsicType.STAKING_LEAVE_POOL, extrinsic];
352
- }
353
-
354
- /* Leave pool action */
355
-
356
- /* Other action */
357
-
358
- /**
359
- * @todo Need recheck
360
- * */
361
- async handleYieldCancelUnstake(params) {
362
- const chainApi = await this.substrateApi.isReady;
363
- return chainApi.api.tx.parachainStaking.cancelLeaveCandidates();
364
- }
365
- async handleYieldWithdraw(address, unstakingInfo) {
366
- const chainApi = await this.substrateApi.isReady;
367
- return chainApi.api.tx.parachainStaking.unlockUnstaked(address);
368
- }
369
- async handleYieldClaimReward(address, bondReward) {
370
- const chainApi = await this.substrateApi.isReady;
371
- return chainApi.api.tx.utility.batch([chainApi.api.tx.parachainStaking.incrementDelegatorRewards(), chainApi.api.tx.parachainStaking.claimRewards()]);
372
- }
373
-
374
- /* Other actions */
375
- }
@@ -1,19 +0,0 @@
1
- import { _ChainInfo } from '@subwallet/chain-list/types';
2
- import { ExtrinsicType, UnstakingInfo } from '@subwallet/extension-base/background/KoniTypes';
3
- import { _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
4
- import { BaseYieldPositionInfo, PalletDappsStakingAccountLedger, StakeCancelWithdrawalParams, SubmitJoinNativeStaking, TransactionData, ValidatorInfo, YieldPoolInfo, YieldPoolMethodInfo, YieldPositionInfo, YieldStepBaseInfo, YieldTokenBaseInfo } from '@subwallet/extension-base/types';
5
- import BaseParaNativeStakingPoolHandler from './base-para';
6
- export declare function getAstarWithdrawable(yieldPosition: YieldPositionInfo): UnstakingInfo | undefined;
7
- export default class AstarNativeStakingPoolHandler extends BaseParaNativeStakingPoolHandler {
8
- protected readonly availableMethod: YieldPoolMethodInfo;
9
- subscribePoolInfo(callback: (data: YieldPoolInfo) => void): Promise<VoidFunction>;
10
- parseNominatorMetadata(chainInfo: _ChainInfo, address: string, substrateApi: _SubstrateApi, ledger: PalletDappsStakingAccountLedger): Promise<Omit<YieldPositionInfo, keyof BaseYieldPositionInfo>>;
11
- subscribePoolPosition(useAddresses: string[], resultCallback: (rs: YieldPositionInfo) => void): Promise<VoidFunction>;
12
- getPoolTargets(): Promise<ValidatorInfo[]>;
13
- get defaultSubmitStep(): YieldStepBaseInfo;
14
- createJoinExtrinsic(data: SubmitJoinNativeStaking, positionInfo?: YieldPositionInfo, bondDest?: string): Promise<[TransactionData, YieldTokenBaseInfo]>;
15
- handleYieldUnstake(amount: string, address: string, selectedTarget?: string): Promise<[ExtrinsicType, TransactionData]>;
16
- handleYieldCancelUnstake(params: StakeCancelWithdrawalParams): Promise<TransactionData>;
17
- handleYieldWithdraw(address: string, unstakingInfo: UnstakingInfo): Promise<TransactionData>;
18
- handleYieldClaimReward(address: string, bondReward?: boolean): Promise<import("@polkadot/api-base/types").SubmittableExtrinsic<"promise", import("@polkadot/types/types").ISubmittableResult>>;
19
- }