@lidofinance/lsv-cli 1.0.0-alpha.48 → 1.0.0-alpha.49

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 (276) hide show
  1. package/README.md +1 -1
  2. package/dist/abi/Dashboard.d.ts +160 -0
  3. package/dist/abi/Dashboard.js +2 -0
  4. package/dist/abi/Dashboard.js.map +1 -1
  5. package/dist/abi/OperatorGrid.d.ts +166 -5
  6. package/dist/abi/OperatorGrid.js +15 -12
  7. package/dist/abi/OperatorGrid.js.map +1 -1
  8. package/dist/abi/VaultFactory.d.ts +504 -0
  9. package/dist/abi/VaultFactory.js +4 -0
  10. package/dist/abi/VaultFactory.js.map +1 -1
  11. package/dist/abi/VaultHub.d.ts +451 -106
  12. package/dist/abi/VaultHub.js +26 -23
  13. package/dist/abi/VaultHub.js.map +1 -1
  14. package/dist/command/index.js +2 -0
  15. package/dist/command/index.js.map +1 -1
  16. package/dist/configs/constants.d.ts +7 -9
  17. package/dist/contracts/vault-factory.d.ts +9414 -1350
  18. package/dist/features/dashboard.js +49 -62
  19. package/dist/features/dashboard.js.map +1 -1
  20. package/dist/features/index.d.ts +0 -1
  21. package/dist/features/index.js +0 -1
  22. package/dist/features/index.js.map +1 -1
  23. package/dist/features/pdg.d.ts +2 -0
  24. package/dist/features/pdg.js +30 -1
  25. package/dist/features/pdg.js.map +1 -1
  26. package/dist/features/vault-factory.d.ts +5 -0
  27. package/dist/features/vault-factory.js +4 -0
  28. package/dist/features/vault-factory.js.map +1 -1
  29. package/dist/programs/account/index.d.ts +3 -0
  30. package/dist/programs/account/index.js +4 -0
  31. package/dist/programs/account/index.js.map +1 -0
  32. package/dist/programs/account/main.d.ts +1 -0
  33. package/dist/programs/account/main.js +5 -0
  34. package/dist/programs/account/main.js.map +1 -0
  35. package/dist/programs/{account.js → account/read.js} +34 -73
  36. package/dist/programs/account/read.js.map +1 -0
  37. package/dist/programs/account/write.js +65 -0
  38. package/dist/programs/account/write.js.map +1 -0
  39. package/dist/programs/dashboard/write.js +32 -9
  40. package/dist/programs/dashboard/write.js.map +1 -1
  41. package/dist/programs/index.d.ts +2 -2
  42. package/dist/programs/index.js +2 -2
  43. package/dist/programs/index.js.map +1 -1
  44. package/dist/programs/metrics/index.d.ts +2 -0
  45. package/dist/programs/metrics/index.js +3 -0
  46. package/dist/programs/metrics/index.js.map +1 -0
  47. package/dist/programs/metrics/main.d.ts +1 -0
  48. package/dist/programs/metrics/main.js +3 -0
  49. package/dist/programs/metrics/main.js.map +1 -0
  50. package/dist/programs/metrics/read.d.ts +1 -0
  51. package/dist/programs/metrics/read.js +96 -0
  52. package/dist/programs/metrics/read.js.map +1 -0
  53. package/dist/programs/operator-grid/read.js +8 -2
  54. package/dist/programs/operator-grid/read.js.map +1 -1
  55. package/dist/programs/pdg/config.js +1 -0
  56. package/dist/programs/pdg/config.js.map +1 -1
  57. package/dist/programs/pdg/read.js +18 -4
  58. package/dist/programs/pdg/read.js.map +1 -1
  59. package/dist/programs/pdg/write.js +49 -49
  60. package/dist/programs/pdg/write.js.map +1 -1
  61. package/dist/programs/pdg-helpers.js +2 -1
  62. package/dist/programs/pdg-helpers.js.map +1 -1
  63. package/dist/programs/report/write.js +2 -37
  64. package/dist/programs/report/write.js.map +1 -1
  65. package/dist/programs/vault/write.js +13 -13
  66. package/dist/programs/vault/write.js.map +1 -1
  67. package/dist/programs/vault-factory/write.js +4 -0
  68. package/dist/programs/vault-factory/write.js.map +1 -1
  69. package/dist/providers/wallet.d.ts +11 -11
  70. package/dist/providers/wallet.js +3 -2
  71. package/dist/providers/wallet.js.map +1 -1
  72. package/dist/tests/__mocks__/@lodestar/types.d.ts +1 -0
  73. package/dist/tests/__mocks__/@lodestar/types.js +6 -0
  74. package/dist/tests/__mocks__/@lodestar/types.js.map +1 -0
  75. package/dist/tests/utils/arguments.test.d.ts +1 -0
  76. package/dist/tests/utils/arguments.test.js +92 -0
  77. package/dist/tests/utils/arguments.test.js.map +1 -0
  78. package/dist/tests/utils/calculate-overview.test.d.ts +1 -0
  79. package/dist/tests/utils/calculate-overview.test.js +30 -0
  80. package/dist/tests/utils/calculate-overview.test.js.map +1 -0
  81. package/dist/tests/utils/data-validators.test.d.ts +1 -0
  82. package/dist/tests/utils/data-validators.test.js +56 -0
  83. package/dist/tests/utils/data-validators.test.js.map +1 -0
  84. package/dist/tests/utils/error-handler.test.d.ts +1 -0
  85. package/dist/tests/utils/error-handler.test.js +51 -0
  86. package/dist/tests/utils/error-handler.test.js.map +1 -0
  87. package/dist/tests/utils/fetchCL.test.d.ts +1 -0
  88. package/dist/tests/utils/fetchCL.test.js +57 -0
  89. package/dist/tests/utils/fetchCL.test.js.map +1 -0
  90. package/dist/tests/utils/get-commands.test.d.ts +1 -0
  91. package/dist/tests/utils/get-commands.test.js +19 -0
  92. package/dist/tests/utils/get-commands.test.js.map +1 -0
  93. package/dist/tests/utils/get-deposit-data-root.test.d.ts +1 -0
  94. package/dist/tests/utils/get-deposit-data-root.test.js +31 -0
  95. package/dist/tests/utils/get-deposit-data-root.test.js.map +1 -0
  96. package/dist/tests/utils/get-value.test.d.ts +1 -0
  97. package/dist/tests/utils/get-value.test.js +13 -0
  98. package/dist/tests/utils/get-value.test.js.map +1 -0
  99. package/dist/tests/utils/health.test.d.ts +1 -0
  100. package/dist/tests/utils/health.test.js +22 -0
  101. package/dist/tests/utils/health.test.js.map +1 -0
  102. package/dist/tests/utils/interrupt-handler.test.d.ts +1 -0
  103. package/dist/tests/utils/interrupt-handler.test.js +15 -0
  104. package/dist/tests/utils/interrupt-handler.test.js.map +1 -0
  105. package/dist/tests/utils/ipfs.test.d.ts +1 -0
  106. package/dist/tests/utils/ipfs.test.js +98 -0
  107. package/dist/tests/utils/ipfs.test.js.map +1 -0
  108. package/dist/tests/utils/logging.test.d.ts +1 -0
  109. package/dist/tests/utils/logging.test.js +23 -0
  110. package/dist/tests/utils/logging.test.js.map +1 -0
  111. package/dist/tests/utils/report-proof.test.d.ts +1 -0
  112. package/dist/tests/utils/report-proof.test.js +29 -0
  113. package/dist/tests/utils/report-proof.test.js.map +1 -0
  114. package/dist/tests/utils/report-statistic.test.d.ts +1 -0
  115. package/dist/tests/utils/report-statistic.test.js +247 -0
  116. package/dist/tests/utils/report-statistic.test.js.map +1 -0
  117. package/dist/tests/utils/required-lock.test.d.ts +1 -0
  118. package/dist/tests/utils/required-lock.test.js +26 -0
  119. package/dist/tests/utils/required-lock.test.js.map +1 -0
  120. package/dist/tests/utils/resove-path.test.d.ts +1 -0
  121. package/dist/tests/utils/resove-path.test.js +18 -0
  122. package/dist/tests/utils/resove-path.test.js.map +1 -0
  123. package/dist/tests/utils/sleep.test.d.ts +1 -0
  124. package/dist/tests/utils/sleep.test.js +14 -0
  125. package/dist/tests/utils/sleep.test.js.map +1 -0
  126. package/dist/utils/arguments.d.ts +1 -0
  127. package/dist/utils/arguments.js +3 -0
  128. package/dist/utils/arguments.js.map +1 -1
  129. package/dist/utils/cache.d.ts +18 -0
  130. package/dist/utils/cache.js +109 -0
  131. package/dist/utils/cache.js.map +1 -0
  132. package/dist/utils/calculate-overview-v2.d.ts +28 -0
  133. package/dist/utils/calculate-overview-v2.js +57 -0
  134. package/dist/utils/calculate-overview-v2.js.map +1 -0
  135. package/dist/utils/calculate-overview.d.ts +1 -0
  136. package/dist/utils/calculate-overview.js +4 -1
  137. package/dist/utils/calculate-overview.js.map +1 -1
  138. package/dist/utils/charts/blessed/charts-apr.d.ts +91 -0
  139. package/dist/utils/charts/blessed/charts-apr.js +119 -0
  140. package/dist/utils/charts/blessed/charts-apr.js.map +1 -0
  141. package/dist/utils/charts/blessed/charts-rewards.d.ts +67 -0
  142. package/dist/utils/charts/blessed/charts-rewards.js +106 -0
  143. package/dist/utils/charts/blessed/charts-rewards.js.map +1 -0
  144. package/dist/utils/charts/blessed/constants.d.ts +22 -0
  145. package/dist/utils/charts/blessed/constants.js +23 -0
  146. package/dist/utils/charts/blessed/constants.js.map +1 -0
  147. package/dist/utils/charts/blessed/datasets/bottom-line.d.ts +19 -0
  148. package/dist/utils/charts/blessed/datasets/bottom-line.js +34 -0
  149. package/dist/utils/charts/blessed/datasets/bottom-line.js.map +1 -0
  150. package/dist/utils/charts/blessed/datasets/efficiency.d.ts +18 -0
  151. package/dist/utils/charts/blessed/datasets/efficiency.js +33 -0
  152. package/dist/utils/charts/blessed/datasets/efficiency.js.map +1 -0
  153. package/dist/utils/charts/blessed/datasets/gross-staking-apr.d.ts +18 -0
  154. package/dist/utils/charts/blessed/datasets/gross-staking-apr.js +33 -0
  155. package/dist/utils/charts/blessed/datasets/gross-staking-apr.js.map +1 -0
  156. package/dist/utils/charts/blessed/datasets/gross-staking-rewards.d.ts +24 -0
  157. package/dist/utils/charts/blessed/datasets/gross-staking-rewards.js +39 -0
  158. package/dist/utils/charts/blessed/datasets/gross-staking-rewards.js.map +1 -0
  159. package/dist/utils/charts/blessed/datasets/index.d.ts +9 -0
  160. package/dist/utils/charts/blessed/datasets/index.js +10 -0
  161. package/dist/utils/charts/blessed/datasets/index.js.map +1 -0
  162. package/dist/utils/charts/blessed/datasets/lido-apr.d.ts +19 -0
  163. package/dist/utils/charts/blessed/datasets/lido-apr.js +34 -0
  164. package/dist/utils/charts/blessed/datasets/lido-apr.js.map +1 -0
  165. package/dist/utils/charts/blessed/datasets/net-staking-apr.d.ts +18 -0
  166. package/dist/utils/charts/blessed/datasets/net-staking-apr.js +33 -0
  167. package/dist/utils/charts/blessed/datasets/net-staking-apr.js.map +1 -0
  168. package/dist/utils/charts/blessed/datasets/net-staking-rewards.d.ts +18 -0
  169. package/dist/utils/charts/blessed/datasets/net-staking-rewards.js +33 -0
  170. package/dist/utils/charts/blessed/datasets/net-staking-rewards.js.map +1 -0
  171. package/dist/utils/charts/blessed/datasets/node-operator-rewards.d.ts +24 -0
  172. package/dist/utils/charts/blessed/datasets/node-operator-rewards.js +39 -0
  173. package/dist/utils/charts/blessed/datasets/node-operator-rewards.js.map +1 -0
  174. package/dist/utils/charts/blessed/datasets/prepare-metrics.d.ts +33 -0
  175. package/dist/utils/charts/blessed/datasets/prepare-metrics.js +133 -0
  176. package/dist/utils/charts/blessed/datasets/prepare-metrics.js.map +1 -0
  177. package/dist/utils/charts/blessed/datasets/types.d.ts +4 -0
  178. package/dist/utils/charts/blessed/datasets/types.js +2 -0
  179. package/dist/utils/charts/blessed/datasets/types.js.map +1 -0
  180. package/dist/utils/charts/blessed/index.d.ts +3 -0
  181. package/dist/utils/charts/blessed/index.js +4 -0
  182. package/dist/utils/charts/blessed/index.js.map +1 -0
  183. package/dist/utils/charts/blessed/net-vs-lido-apr.d.ts +13 -0
  184. package/dist/utils/charts/blessed/net-vs-lido-apr.js +19 -0
  185. package/dist/utils/charts/blessed/net-vs-lido-apr.js.map +1 -0
  186. package/dist/utils/charts/blessed/utils.d.ts +62 -0
  187. package/dist/utils/charts/blessed/utils.js +84 -0
  188. package/dist/utils/charts/blessed/utils.js.map +1 -0
  189. package/dist/utils/charts/index.d.ts +2 -0
  190. package/dist/utils/charts/index.js +2 -0
  191. package/dist/utils/charts/index.js.map +1 -1
  192. package/dist/utils/charts/metrics.d.ts +16 -0
  193. package/dist/utils/charts/metrics.js +160 -0
  194. package/dist/utils/charts/metrics.js.map +1 -0
  195. package/dist/utils/charts/simple/index.d.ts +1 -0
  196. package/dist/utils/charts/simple/index.js +2 -0
  197. package/dist/utils/charts/simple/index.js.map +1 -0
  198. package/dist/utils/charts/simple/simple-charts.d.ts +2 -0
  199. package/dist/utils/charts/simple/simple-charts.js +81 -0
  200. package/dist/utils/charts/simple/simple-charts.js.map +1 -0
  201. package/dist/utils/commands/confirmations.js +6 -9
  202. package/dist/utils/commands/confirmations.js.map +1 -1
  203. package/dist/utils/commands/dashboard.d.ts +2 -2
  204. package/dist/utils/commands/dashboard.js +84 -47
  205. package/dist/utils/commands/dashboard.js.map +1 -1
  206. package/dist/utils/commands/index.d.ts +2 -0
  207. package/dist/utils/commands/index.js +2 -0
  208. package/dist/utils/commands/index.js.map +1 -1
  209. package/dist/utils/commands/report.d.ts +7 -0
  210. package/dist/utils/commands/report.js +41 -0
  211. package/dist/utils/commands/report.js.map +1 -0
  212. package/dist/utils/commands/utils.d.ts +6 -0
  213. package/dist/utils/commands/utils.js +57 -0
  214. package/dist/utils/commands/utils.js.map +1 -0
  215. package/dist/utils/contract.d.ts +10 -1
  216. package/dist/utils/contract.js +31 -2
  217. package/dist/utils/contract.js.map +1 -1
  218. package/dist/utils/error-handler.d.ts +1 -1
  219. package/dist/utils/error-handler.js +2 -2
  220. package/dist/utils/error-handler.js.map +1 -1
  221. package/dist/utils/get-deposit-data-root.d.ts +1 -1
  222. package/dist/utils/get-deposit-data-root.js +3 -6
  223. package/dist/utils/get-deposit-data-root.js.map +1 -1
  224. package/dist/utils/health/health-utils.js +3 -3
  225. package/dist/utils/health/health-utils.js.map +1 -1
  226. package/dist/utils/index.d.ts +7 -1
  227. package/dist/utils/index.js +7 -1
  228. package/dist/utils/index.js.map +1 -1
  229. package/dist/utils/ipfs.d.ts +1 -0
  230. package/dist/utils/ipfs.js +18 -0
  231. package/dist/utils/ipfs.js.map +1 -1
  232. package/dist/utils/lido-apr.d.ts +2 -0
  233. package/dist/utils/lido-apr.js +8 -0
  234. package/dist/utils/lido-apr.js.map +1 -0
  235. package/dist/utils/prompts/dashboard.d.ts +4 -0
  236. package/dist/utils/prompts/dashboard.js +6 -6
  237. package/dist/utils/prompts/dashboard.js.map +1 -1
  238. package/dist/utils/prompts/operations.js +5 -1
  239. package/dist/utils/prompts/operations.js.map +1 -1
  240. package/dist/utils/proof/merkle-utils.d.ts +2 -1
  241. package/dist/utils/proof/merkle-utils.js.map +1 -1
  242. package/dist/utils/proof/proofs.d.ts +5 -280
  243. package/dist/utils/proof/proofs.js.map +1 -1
  244. package/dist/utils/rebase-rewards.d.ts +8 -0
  245. package/dist/utils/rebase-rewards.js +6 -0
  246. package/dist/utils/rebase-rewards.js.map +1 -0
  247. package/dist/utils/report/index.d.ts +3 -0
  248. package/dist/utils/report/index.js +4 -0
  249. package/dist/utils/report/index.js.map +1 -0
  250. package/dist/utils/report/report-statistic.d.ts +52 -0
  251. package/dist/utils/report/report-statistic.js +128 -0
  252. package/dist/utils/report/report-statistic.js.map +1 -0
  253. package/dist/utils/{report.d.ts → report/report.d.ts} +13 -11
  254. package/dist/utils/report/report.js +146 -0
  255. package/dist/utils/report/report.js.map +1 -0
  256. package/dist/utils/report/statistic-data.d.ts +32 -0
  257. package/dist/utils/report/statistic-data.js +29 -0
  258. package/dist/utils/report/statistic-data.js.map +1 -0
  259. package/dist/utils/share-rate.d.ts +1 -0
  260. package/dist/utils/share-rate.js +16 -0
  261. package/dist/utils/share-rate.js.map +1 -0
  262. package/dist/utils/spinner/spinners.js +5 -2
  263. package/dist/utils/spinner/spinners.js.map +1 -1
  264. package/dist/utils/spinner/spinners.json +119 -0
  265. package/dist/version/index.js +1 -1
  266. package/package.json +16 -4
  267. package/dist/features/voting.d.ts +0 -7
  268. package/dist/features/voting.js +0 -133
  269. package/dist/features/voting.js.map +0 -1
  270. package/dist/programs/account.js.map +0 -1
  271. package/dist/programs/voting.js +0 -18
  272. package/dist/programs/voting.js.map +0 -1
  273. package/dist/utils/report.js +0 -73
  274. package/dist/utils/report.js.map +0 -1
  275. /package/dist/programs/{account.d.ts → account/read.d.ts} +0 -0
  276. /package/dist/programs/{voting.d.ts → account/write.d.ts} +0 -0
@@ -0,0 +1,52 @@
1
+ import { VaultReport } from '../index.js';
2
+ export declare const getGrossStakingRewards: (current: VaultReport, previous: VaultReport) => bigint;
3
+ export declare const getNodeOperatorRewards: (current: VaultReport, previous: VaultReport, nodeOperatorFeeBP: bigint) => bigint;
4
+ export declare const getDailyLidoFees: () => bigint;
5
+ export declare const getNetStakingRewards: (current: VaultReport, previous: VaultReport, nodeOperatorFeeBP: bigint) => bigint;
6
+ export declare const getGrossStakingAPR: (current: VaultReport, previous: VaultReport) => {
7
+ apr: bigint;
8
+ apr_bps: number;
9
+ apr_percent: number;
10
+ };
11
+ export declare const getNetStakingAPR: (current: VaultReport, previous: VaultReport, nodeOperatorFeeBP: bigint) => {
12
+ apr: bigint;
13
+ apr_bps: number;
14
+ apr_percent: number;
15
+ };
16
+ export declare const getBottomLine: (current: VaultReport, previous: VaultReport, nodeOperatorFeeBP: bigint, stEthLiabilityRebaseRewards: bigint) => bigint;
17
+ export declare const getEfficiency: (current: VaultReport, previous: VaultReport, nodeOperatorFeeBP: bigint, stEthLiabilityRebaseRewards: bigint) => {
18
+ apr: bigint;
19
+ apr_bps: number;
20
+ apr_percent: number;
21
+ };
22
+ type ReportMetricsArgs = {
23
+ reports: {
24
+ current: VaultReport;
25
+ previous: VaultReport;
26
+ };
27
+ nodeOperatorFeeBP: bigint;
28
+ stEthLiabilityRebaseRewards: bigint;
29
+ };
30
+ export declare const reportMetrics: (args: ReportMetricsArgs) => {
31
+ grossStakingRewards: bigint;
32
+ nodeOperatorRewards: bigint;
33
+ dailyLidoFees: bigint;
34
+ netStakingRewards: bigint;
35
+ grossStakingAPR: {
36
+ apr: bigint;
37
+ apr_bps: number;
38
+ apr_percent: number;
39
+ };
40
+ netStakingAPR: {
41
+ apr: bigint;
42
+ apr_bps: number;
43
+ apr_percent: number;
44
+ };
45
+ bottomLine: bigint;
46
+ efficiency: {
47
+ apr: bigint;
48
+ apr_bps: number;
49
+ apr_percent: number;
50
+ };
51
+ };
52
+ export {};
@@ -0,0 +1,128 @@
1
+ import { BASIS_POINTS_DENOMINATOR } from '../index.js';
2
+ const SCALE = 1000000000n; // 1e9 for 9 decimal places precision
3
+ export const getGrossStakingRewards = (current, previous) => {
4
+ const grossStakingRewards = BigInt(current.data.total_value_wei) -
5
+ BigInt(previous.data.total_value_wei) -
6
+ (BigInt(current.data.in_out_delta) - BigInt(previous.data.in_out_delta));
7
+ return grossStakingRewards;
8
+ };
9
+ export const getNodeOperatorRewards = (current, previous, nodeOperatorFeeBP) => {
10
+ const grossStakingRewards = getGrossStakingRewards(current, previous);
11
+ return (grossStakingRewards * nodeOperatorFeeBP) / BASIS_POINTS_DENOMINATOR;
12
+ };
13
+ // TODO: get Lido Fees from the contract
14
+ export const getDailyLidoFees = () => {
15
+ const prev_cumulativeLidoFees = 0n;
16
+ const current_cumulativeLidoFees = 0n;
17
+ return current_cumulativeLidoFees - prev_cumulativeLidoFees;
18
+ };
19
+ export const getNetStakingRewards = (current, previous, nodeOperatorFeeBP) => {
20
+ const grossStakingRewards = getGrossStakingRewards(current, previous);
21
+ const nodeOperatorRewards = getNodeOperatorRewards(current, previous, nodeOperatorFeeBP);
22
+ const dailyLidoFees = getDailyLidoFees();
23
+ return grossStakingRewards - nodeOperatorRewards - dailyLidoFees;
24
+ };
25
+ // The APR metrics (Gross Staking APR, Net Staking APR, Efficiency) are calculated using the following general formula:
26
+ //
27
+ // APR = (Numerator * 100 * SecondsInYear) / (AverageTotalValue * PeriodSeconds)
28
+ //
29
+ // where:
30
+ // Numerator — the specific rewards or value for the metric:
31
+ // - For Gross Staking APR: grossStakingRewards
32
+ // - For Net Staking APR: netStakingRewards
33
+ // - For Efficiency: bottomLine
34
+ // AverageTotalValue — arithmetic mean of TVL at the start and end of the period
35
+ // PeriodSeconds — difference between end and start timestamps (in seconds)
36
+ // SecondsInYear = 31536000
37
+ //
38
+ // Calculation steps:
39
+ // 1. Calculate the numerator for the metric (see above)
40
+ // 2. Divide by the average TVL
41
+ // 3. Multiply by 100 and the number of seconds in a year (31536000)
42
+ // 4. Divide by the period duration in seconds
43
+ //
44
+ // Example for Gross Staking APR:
45
+ // grossStakingAPR = (grossStakingRewards * 100 * 31536000) / (averageTotalValue * periodSeconds)
46
+ const getAverageTotalValue = (current, previous) => {
47
+ return ((BigInt(current.data.total_value_wei) +
48
+ BigInt(previous.data.total_value_wei)) /
49
+ 2n);
50
+ };
51
+ const getPeriodSeconds = (current, previous) => {
52
+ return current.timestamp - previous.timestamp;
53
+ };
54
+ export const getGrossStakingAPR = (current, previous) => {
55
+ const grossStakingRewards = getGrossStakingRewards(current, previous);
56
+ const averageTotalValue = getAverageTotalValue(current, previous);
57
+ const periodSeconds = getPeriodSeconds(current, previous);
58
+ const apr_bigint = (grossStakingRewards * 10000n * 31536000n * SCALE) /
59
+ (averageTotalValue * BigInt(periodSeconds));
60
+ const apr = (grossStakingRewards * 100n * 31536000n) /
61
+ (averageTotalValue * BigInt(periodSeconds));
62
+ const apr_bps = Number(apr_bigint) / Number(SCALE);
63
+ const apr_percent = apr_bps / 100;
64
+ return {
65
+ apr,
66
+ apr_bps,
67
+ apr_percent,
68
+ };
69
+ };
70
+ export const getNetStakingAPR = (current, previous, nodeOperatorFeeBP) => {
71
+ const averageTotalValue = getAverageTotalValue(current, previous);
72
+ const periodSeconds = getPeriodSeconds(current, previous);
73
+ const netStakingRewards = getNetStakingRewards(current, previous, nodeOperatorFeeBP);
74
+ const apr_bigint = (netStakingRewards * 10000n * 31536000n * SCALE) /
75
+ (averageTotalValue * BigInt(periodSeconds));
76
+ const apr = (netStakingRewards * 100n * 31536000n) /
77
+ (averageTotalValue * BigInt(periodSeconds));
78
+ const apr_bps = Number(apr_bigint) / Number(SCALE);
79
+ const apr_percent = apr_bps / 100;
80
+ return {
81
+ apr,
82
+ apr_bps,
83
+ apr_percent,
84
+ };
85
+ };
86
+ export const getBottomLine = (current, previous, nodeOperatorFeeBP, stEthLiabilityRebaseRewards) => {
87
+ const netStakingRewards = getNetStakingRewards(current, previous, nodeOperatorFeeBP);
88
+ return netStakingRewards - stEthLiabilityRebaseRewards;
89
+ };
90
+ export const getEfficiency = (current, previous, nodeOperatorFeeBP, stEthLiabilityRebaseRewards) => {
91
+ const averageTotalValue = getAverageTotalValue(current, previous);
92
+ const periodSeconds = getPeriodSeconds(current, previous);
93
+ const bottomLine = getBottomLine(current, previous, nodeOperatorFeeBP, stEthLiabilityRebaseRewards);
94
+ const apr_bigint = (bottomLine * 10000n * 31536000n * SCALE) /
95
+ (averageTotalValue * BigInt(periodSeconds));
96
+ const apr = (bottomLine * 100n * 31536000n) /
97
+ (averageTotalValue * BigInt(periodSeconds));
98
+ const apr_bps = Number(apr_bigint) / Number(SCALE);
99
+ const apr_percent = apr_bps / 100;
100
+ return {
101
+ apr,
102
+ apr_bps,
103
+ apr_percent,
104
+ };
105
+ };
106
+ export const reportMetrics = (args) => {
107
+ const { reports, nodeOperatorFeeBP, stEthLiabilityRebaseRewards } = args;
108
+ const { current, previous } = reports;
109
+ const grossStakingRewards = getGrossStakingRewards(current, previous);
110
+ const nodeOperatorRewards = getNodeOperatorRewards(current, previous, nodeOperatorFeeBP);
111
+ const dailyLidoFees = getDailyLidoFees();
112
+ const netStakingRewards = getNetStakingRewards(current, previous, nodeOperatorFeeBP);
113
+ const grossStakingAPR = getGrossStakingAPR(current, previous);
114
+ const netStakingAPR = getNetStakingAPR(current, previous, nodeOperatorFeeBP);
115
+ const bottomLine = getBottomLine(current, previous, nodeOperatorFeeBP, stEthLiabilityRebaseRewards);
116
+ const efficiency = getEfficiency(current, previous, nodeOperatorFeeBP, stEthLiabilityRebaseRewards);
117
+ return {
118
+ grossStakingRewards,
119
+ nodeOperatorRewards,
120
+ dailyLidoFees,
121
+ netStakingRewards,
122
+ grossStakingAPR,
123
+ netStakingAPR,
124
+ bottomLine,
125
+ efficiency,
126
+ };
127
+ };
128
+ //# sourceMappingURL=report-statistic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-statistic.js","sourceRoot":"","sources":["../../../utils/report/report-statistic.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Address } from 'viem';
2
- import { BigNumberType } from './index.js';
2
+ import { BigNumberType } from '../index.js';
3
3
  export type LeafDataFields = {
4
4
  vault_address: string;
5
5
  total_value_wei: string;
@@ -59,16 +59,8 @@ export type VaultReportArgs = {
59
59
  gateway?: string;
60
60
  bigNumberType?: BigNumberType;
61
61
  };
62
- export declare const getVaultReport: (args: VaultReportArgs) => Promise<{
63
- data: LeafDataFields;
64
- leaf: string;
65
- refSlot: number;
66
- blockNumber: number;
67
- timestamp: number;
68
- proofsCID: string;
69
- merkleTreeRoot: string;
70
- prevTreeCID: string;
71
- }>;
62
+ export declare const getVaultReport: (args: VaultReportArgs) => Promise<VaultReport>;
63
+ export declare const getVaultPreviousReport: (args: VaultReportArgs) => Promise<VaultReport>;
72
64
  export declare const getVaultReportProof: (args: VaultReportArgs) => Promise<{
73
65
  id: number;
74
66
  totalValueWei: bigint;
@@ -101,4 +93,14 @@ export declare const getAllVaultsReportProofs: (args: Omit<VaultReportArgs, "vau
101
93
  export declare const getAllVaultsReports: (args: Omit<VaultReportArgs, "vault">) => Promise<{
102
94
  vaultReports: LeafDataFields[];
103
95
  proofsCID: string;
96
+ prevTreeCID: string;
104
97
  }>;
98
+ /**
99
+ * Retrieves a chain of historical VaultReport entries using prevTreeCID, starting from the specified CID.
100
+ * @param args { vault, cid, gateway, bigNumberType, limit, direction }
101
+ * @returns Promise<VaultReport[]> — array from newest to oldest (default) or oldest to newest (if direction === 'asc')
102
+ */
103
+ export declare const getVaultReportHistory: (args: VaultReportArgs & {
104
+ limit?: number;
105
+ direction?: "asc" | "desc";
106
+ }) => Promise<VaultReport[]>;
@@ -0,0 +1,146 @@
1
+ import { fetchIPFSWithCache, IPFS_GATEWAY, logInfo, } from '../index.js';
2
+ export const getVaultReport = async (args) => {
3
+ const { vault, cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
4
+ const report = await fetchIPFSWithCache({
5
+ cid,
6
+ gateway,
7
+ bigNumberType,
8
+ });
9
+ const vaultData = getVaultData(report, vault);
10
+ return vaultData;
11
+ };
12
+ export const getVaultPreviousReport = async (args) => {
13
+ const { vault, cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
14
+ const report = await fetchIPFSWithCache({
15
+ cid,
16
+ gateway,
17
+ bigNumberType,
18
+ });
19
+ const previousReportCID = report.prevTreeCID;
20
+ const previousReport = await fetchIPFSWithCache({
21
+ cid: previousReportCID,
22
+ gateway,
23
+ bigNumberType,
24
+ });
25
+ const vaultData = getVaultData(previousReport, vault);
26
+ return vaultData;
27
+ };
28
+ const getVaultData = (report, vault) => {
29
+ const match = report.values.find((entry) => entry.value[0]?.toLowerCase() === vault.toLowerCase());
30
+ if (!match)
31
+ throw new Error('Vault not found');
32
+ const leaf = report.tree[match.treeIndex];
33
+ if (!leaf)
34
+ throw new Error('Leaf not found');
35
+ const data = {
36
+ vault_address: '',
37
+ in_out_delta: '',
38
+ fee: '',
39
+ total_value_wei: '',
40
+ liability_shares: '',
41
+ };
42
+ for (const [index, fieldName] of Object.entries(report.leafIndexToData)) {
43
+ const value = match.value[Number(index)];
44
+ if (value === undefined) {
45
+ throw new Error(`Missing value at index ${index} for field "${fieldName}"`);
46
+ }
47
+ data[fieldName] = value.toString();
48
+ }
49
+ return {
50
+ data,
51
+ leaf,
52
+ refSlot: report.refSlot,
53
+ blockNumber: report.blockNumber,
54
+ timestamp: report.timestamp,
55
+ proofsCID: report.proofsCID,
56
+ merkleTreeRoot: report.merkleTreeRoot,
57
+ prevTreeCID: report.prevTreeCID,
58
+ };
59
+ };
60
+ export const getVaultReportProof = async (args) => {
61
+ const { vault, cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
62
+ const report = await fetchIPFSWithCache({
63
+ cid,
64
+ gateway,
65
+ bigNumberType,
66
+ });
67
+ const proofCID = report.proofsCID;
68
+ const data = await fetchIPFSWithCache({
69
+ cid: proofCID,
70
+ gateway,
71
+ bigNumberType,
72
+ });
73
+ const proofByVault = data.proofs[vault];
74
+ if (!proofByVault)
75
+ throw new Error('Proof not found');
76
+ return proofByVault;
77
+ };
78
+ export const getVaultReportProofByCid = async (args) => {
79
+ const { vault, cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
80
+ const proof = await fetchIPFSWithCache({
81
+ cid,
82
+ gateway,
83
+ bigNumberType,
84
+ });
85
+ const proofByVault = proof.proofs[vault];
86
+ if (!proofByVault)
87
+ throw new Error('Proof not found');
88
+ return proofByVault;
89
+ };
90
+ export const getAllVaultsReportProofs = async (args) => {
91
+ const { cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
92
+ const proof = await fetchIPFSWithCache({
93
+ cid,
94
+ gateway,
95
+ bigNumberType,
96
+ });
97
+ return proof.proofs;
98
+ };
99
+ export const getAllVaultsReports = async (args) => {
100
+ const { cid, gateway = IPFS_GATEWAY, bigNumberType = 'string' } = args;
101
+ const report = await fetchIPFSWithCache({
102
+ cid,
103
+ gateway,
104
+ bigNumberType,
105
+ });
106
+ const vaultReports = report.values.map((value) => getVaultData(report, value.value[0]).data);
107
+ return {
108
+ vaultReports,
109
+ proofsCID: report.proofsCID,
110
+ prevTreeCID: report.prevTreeCID,
111
+ };
112
+ };
113
+ /**
114
+ * Retrieves a chain of historical VaultReport entries using prevTreeCID, starting from the specified CID.
115
+ * @param args { vault, cid, gateway, bigNumberType, limit, direction }
116
+ * @returns Promise<VaultReport[]> — array from newest to oldest (default) or oldest to newest (if direction === 'asc')
117
+ */
118
+ export const getVaultReportHistory = async (args) => {
119
+ const { vault, gateway = IPFS_GATEWAY, bigNumberType = 'string', direction = 'desc', } = args;
120
+ let cid = args.cid;
121
+ const limit = args.limit ?? 20;
122
+ const history = [];
123
+ for (let i = 0; i < limit; i++) {
124
+ try {
125
+ const report = await getVaultReport({
126
+ vault,
127
+ cid,
128
+ gateway,
129
+ bigNumberType,
130
+ });
131
+ history.push(report);
132
+ if (!report.prevTreeCID || report.prevTreeCID === cid)
133
+ break;
134
+ cid = report.prevTreeCID;
135
+ }
136
+ catch (e) {
137
+ break;
138
+ }
139
+ }
140
+ logInfo('Report hostory cached', history.length);
141
+ if (direction === 'asc') {
142
+ return history.reverse();
143
+ }
144
+ return history;
145
+ };
146
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../utils/report/report.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,kBAAkB,EAClB,YAAY,EACZ,OAAO,GACR,MAAM,OAAO,CAAC;AA+Df,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAqB,EACC,EAAE;IACxB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE9E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAS;QAC9C,GAAG;QACH,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE9C,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,IAAqB,EACC,EAAE;IACxB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC9E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAS;QAC9C,GAAG;QACH,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7C,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAS;QACtD,GAAG,EAAE,iBAAiB;QACtB,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAEtD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,KAAc,EAAe,EAAE;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CACjE,CAAC;IAEF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAmB;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;QAChB,GAAG,EAAE,EAAE;QACP,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;KACrB,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,0BAA0B,KAAK,eAAe,SAAS,GAAG,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,IAAqB,EAAE,EAAE;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE9E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAS;QAC9C,GAAG;QACH,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAElC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAc;QACjD,GAAG,EAAE,QAAQ;QACb,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEtD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAqB,EAAE,EAAE;IACtE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC9E,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAc;QAClD,GAAG;QACH,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEtD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,IAAoC,EACpC,EAAE;IACF,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAc;QAClD,GAAG;QACH,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,IAAoC,EACpC,EAAE;IACF,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,aAAa,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAS;QAC9C,GAAG;QACH,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CACpC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAY,CAAC,CAAC,IAAI,CAChE,CAAC;IAEF,OAAO;QACL,YAAY;QACZ,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,IAAsE,EAC9C,EAAE;IAC1B,MAAM,EACJ,KAAK,EACL,OAAO,GAAG,YAAY,EACtB,aAAa,GAAG,QAAQ,EACxB,SAAS,GAAG,MAAM,GACnB,GAAG,IAAI,CAAC;IACT,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,KAAK;gBACL,GAAG;gBACH,OAAO;gBACP,aAAa;aACd,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,GAAG;gBAAE,MAAM;YAC7D,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { Address } from 'viem';
2
+ import { VaultReport } from './report.js';
3
+ type StatisticDataArgs = {
4
+ dashboard: Address;
5
+ reports: {
6
+ current: VaultReport;
7
+ previous: VaultReport;
8
+ };
9
+ };
10
+ export declare const getReportStatisticData: (args: StatisticDataArgs) => Promise<{
11
+ grossStakingRewards: bigint;
12
+ nodeOperatorRewards: bigint;
13
+ dailyLidoFees: bigint;
14
+ netStakingRewards: bigint;
15
+ grossStakingAPR: {
16
+ apr: bigint;
17
+ apr_bps: number;
18
+ apr_percent: number;
19
+ };
20
+ netStakingAPR: {
21
+ apr: bigint;
22
+ apr_bps: number;
23
+ apr_percent: number;
24
+ };
25
+ bottomLine: bigint;
26
+ efficiency: {
27
+ apr: bigint;
28
+ apr_bps: number;
29
+ apr_percent: number;
30
+ };
31
+ }>;
32
+ export {};
@@ -0,0 +1,29 @@
1
+ import { getDashboardContract } from '../../contracts/index.js';
2
+ import { calculateRebaseReward, callReadMethodSilent, calculateShareRate, } from '../index.js';
3
+ import { reportMetrics } from './report-statistic.js';
4
+ export const getReportStatisticData = async (args) => {
5
+ const { dashboard, reports } = args;
6
+ const dashboardContract = getDashboardContract(dashboard);
7
+ const reportRefBlockNumber = reports.current.blockNumber;
8
+ const reportPrevBlockNumber = reports.previous.blockNumber;
9
+ const nodeOperatorFeeBP = await callReadMethodSilent(dashboardContract, 'nodeOperatorFeeBP', {
10
+ blockNumber: BigInt(reportRefBlockNumber),
11
+ });
12
+ const [shareRatePrev, shareRateCurr] = await Promise.all([
13
+ calculateShareRate(reportPrevBlockNumber),
14
+ calculateShareRate(reportRefBlockNumber),
15
+ ]);
16
+ const stEthLiabilityRebaseRewards = calculateRebaseReward({
17
+ shareRatePrev,
18
+ shareRateCurr,
19
+ sharesPrev: BigInt(reports.previous.data.liability_shares),
20
+ sharesCurr: BigInt(reports.current.data.liability_shares),
21
+ });
22
+ const metrics = reportMetrics({
23
+ reports: { current: reports.current, previous: reports.previous },
24
+ nodeOperatorFeeBP,
25
+ stEthLiabilityRebaseRewards,
26
+ });
27
+ return metrics;
28
+ };
29
+ //# sourceMappingURL=statistic-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistic-data.js","sourceRoot":"","sources":["../../../utils/report/statistic-data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAOtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAuB,EAAE,EAAE;IACtE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;IACzD,MAAM,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE3D,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,CAClD,iBAAiB,EACjB,mBAAmB,EACnB;QACE,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC;KAC1C,CACF,CAAC;IACF,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvD,kBAAkB,CAAC,qBAAqB,CAAC;QACzC,kBAAkB,CAAC,oBAAoB,CAAC;KACzC,CAAC,CAAC;IAEH,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;QACxD,aAAa;QACb,aAAa;QACb,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC1D,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;KAC1D,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QACjE,iBAAiB;QACjB,2BAA2B;KAC5B,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const calculateShareRate: (blockNumber: number) => Promise<bigint>;
@@ -0,0 +1,16 @@
1
+ import { getStethContract } from '../contracts/index.js';
2
+ import { callReadMethodSilent } from './index.js';
3
+ export const calculateShareRate = async (blockNumber) => {
4
+ const stEthContract = await getStethContract();
5
+ const [totalSupply, getTotalShares] = await Promise.all([
6
+ callReadMethodSilent(stEthContract, 'totalSupply', {
7
+ blockNumber: BigInt(blockNumber),
8
+ }),
9
+ callReadMethodSilent(stEthContract, 'getTotalShares', {
10
+ blockNumber: BigInt(blockNumber),
11
+ }),
12
+ ]);
13
+ const shareRate = getTotalShares !== 0n ? (totalSupply * 10n ** 27n) / getTotalShares : 0n;
14
+ return shareRate;
15
+ };
16
+ //# sourceMappingURL=share-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-rate.js","sourceRoot":"","sources":["../../utils/share-rate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,WAAmB,EACF,EAAE;IACnB,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE/C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE;YACjD,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;SACjC,CAAC;QACF,oBAAoB,CAAC,aAAa,EAAE,gBAAgB,EAAE;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;SACjC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,SAAS,GACb,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3E,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -1,10 +1,13 @@
1
1
  import logUpdate from 'log-update';
2
2
  import { readFileSync } from 'fs';
3
3
  import path from 'path';
4
+ import { fileURLToPath } from 'url';
4
5
  export const showSpinner = (args) => {
5
6
  const { type = 'point', message = 'Executing...' } = args || {};
6
- // For nestjs/nextjs compatibility
7
- const fullPath = path.resolve('utils', 'spinner', 'spinners.json');
7
+ // Resolve the JSON file relative to this module so it works when the
8
+ // CLI is executed from any directory
9
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
+ const fullPath = path.join(__dirname, 'spinners.json');
8
11
  const spinners = JSON.parse(readFileSync(fullPath, 'utf-8'));
9
12
  const spinner = spinners[type || 'point'];
10
13
  let index = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"spinners.js","sourceRoot":"","sources":["../../../utils/spinner/spinners.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AAiBxB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAW,EAAE,EAAE;IACzC,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IAEhE,kCAAkC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAG1D,CAAC;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,GAAG,EAAE;QACV,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"spinners.js","sourceRoot":"","sources":["../../../utils/spinner/spinners.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAiBpC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAW,EAAE,EAAE;IACzC,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IAEhE,qEAAqE;IACrE,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAG1D,CAAC;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,GAAG,EAAE;QACV,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,119 @@
1
+ {
2
+ "dots": {
3
+ "interval": 80,
4
+ "frames": ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
5
+ },
6
+ "dots12": {
7
+ "interval": 80,
8
+ "frames": [
9
+ "⢀⠀",
10
+ "⡀⠀",
11
+ "⠄⠀",
12
+ "⢂⠀",
13
+ "⡂⠀",
14
+ "⠅⠀",
15
+ "⢃⠀",
16
+ "⡃⠀",
17
+ "⠍⠀",
18
+ "⢋⠀",
19
+ "⡋⠀",
20
+ "⠍⠁",
21
+ "⢋⠁",
22
+ "⡋⠁",
23
+ "⠍⠉",
24
+ "⠋⠉",
25
+ "⠋⠉",
26
+ "⠉⠙",
27
+ "⠉⠙",
28
+ "⠉⠩",
29
+ "⠈⢙",
30
+ "⠈⡙",
31
+ "⢈⠩",
32
+ "⡀⢙",
33
+ "⠄⡙",
34
+ "⢂⠩",
35
+ "⡂⢘",
36
+ "⠅⡘",
37
+ "⢃⠨",
38
+ "⡃⢐",
39
+ "⠍⡐",
40
+ "⢋⠠",
41
+ "⡋⢀",
42
+ "⠍⡁",
43
+ "⢋⠁",
44
+ "⡋⠁",
45
+ "⠍⠉",
46
+ "⠋⠉",
47
+ "⠋⠉",
48
+ "⠉⠙",
49
+ "⠉⠙",
50
+ "⠉⠩",
51
+ "⠈⢙",
52
+ "⠈⡙",
53
+ "⠈⠩",
54
+ "⠀⢙",
55
+ "⠀⡙",
56
+ "⠀⠩",
57
+ "⠀⢘",
58
+ "⠀⡘",
59
+ "⠀⠨",
60
+ "⠀⢐",
61
+ "⠀⡐",
62
+ "⠀⠠",
63
+ "⠀⢀",
64
+ "⠀⡀"
65
+ ]
66
+ },
67
+ "dotsCircle": {
68
+ "interval": 80,
69
+ "frames": ["⢎ ", "⠎⠁", "⠊⠑", "⠈⠱", " ⡱", "⢀⡰", "⢄⡠", "⢆⡀"]
70
+ },
71
+ "line": {
72
+ "interval": 130,
73
+ "frames": ["-", "\\", "|", "/"]
74
+ },
75
+ "arrow3": {
76
+ "interval": 120,
77
+ "frames": ["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸"]
78
+ },
79
+ "bouncingBar": {
80
+ "interval": 80,
81
+ "frames": [
82
+ "[ ]",
83
+ "[= ]",
84
+ "[== ]",
85
+ "[=== ]",
86
+ "[====]",
87
+ "[ ===]",
88
+ "[ ==]",
89
+ "[ =]",
90
+ "[ ]",
91
+ "[ =]",
92
+ "[ ==]",
93
+ "[ ===]",
94
+ "[====]",
95
+ "[=== ]",
96
+ "[== ]",
97
+ "[= ]"
98
+ ]
99
+ },
100
+ "bouncingBall": {
101
+ "interval": 80,
102
+ "frames": [
103
+ "( ● )",
104
+ "( ● )",
105
+ "( ● )",
106
+ "( ● )",
107
+ "( ●)",
108
+ "( ● )",
109
+ "( ● )",
110
+ "( ● )",
111
+ "( ● )",
112
+ "(● )"
113
+ ]
114
+ },
115
+ "point": {
116
+ "interval": 125,
117
+ "frames": ["∙∙∙", "●∙∙", "∙●∙", "∙∙●", "∙∙∙"]
118
+ }
119
+ }
@@ -1 +1 @@
1
- export const version = 'v1.0.0-alpha.48'
1
+ export const version = 'v1.0.0-alpha.49'