@lidofinance/lsv-cli 1.0.0-alpha.23 → 1.0.0-alpha.24

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 (220) hide show
  1. package/README.md +15 -44
  2. package/dist/abi/BlsHarness.js +232 -0
  3. package/dist/abi/BlsHarness.js.map +1 -0
  4. package/dist/abi/CLProofVerifier.js +47 -79
  5. package/dist/abi/CLProofVerifier.js.map +1 -1
  6. package/dist/abi/Dashboard.js +618 -196
  7. package/dist/abi/Dashboard.js.map +1 -1
  8. package/dist/abi/LidoLocator.js +7 -7
  9. package/dist/abi/LidoLocator.js.map +1 -1
  10. package/dist/abi/{Delegation.js → OperatorGrid.js} +466 -1067
  11. package/dist/abi/OperatorGrid.js.map +1 -0
  12. package/dist/abi/PredepositGuarantee.js +69 -13
  13. package/dist/abi/PredepositGuarantee.js.map +1 -1
  14. package/dist/abi/StEth.js +341 -341
  15. package/dist/abi/StEth.js.map +1 -1
  16. package/dist/abi/StakingVault.js +207 -73
  17. package/dist/abi/StakingVault.js.map +1 -1
  18. package/dist/abi/VaultFactory.js +67 -104
  19. package/dist/abi/VaultFactory.js.map +1 -1
  20. package/dist/abi/VaultHub.js +347 -237
  21. package/dist/abi/VaultHub.js.map +1 -1
  22. package/dist/abi/WstEth.js +478 -0
  23. package/dist/abi/WstEth.js.map +1 -0
  24. package/dist/abi/index.js +5 -2
  25. package/dist/abi/index.js.map +1 -1
  26. package/dist/configs/constants.js +2 -2
  27. package/dist/configs/constants.js.map +1 -1
  28. package/dist/configs/deployed.js +21 -47
  29. package/dist/configs/deployed.js.map +1 -1
  30. package/dist/configs/envs.js +5 -6
  31. package/dist/configs/envs.js.map +1 -1
  32. package/dist/configs/utils.js +4 -8
  33. package/dist/configs/utils.js.map +1 -1
  34. package/dist/contracts/blsHarness.js +24 -0
  35. package/dist/contracts/blsHarness.js.map +1 -0
  36. package/dist/contracts/clProofVerifier.js +4 -10
  37. package/dist/contracts/clProofVerifier.js.map +1 -1
  38. package/dist/contracts/index.js +3 -1
  39. package/dist/contracts/index.js.map +1 -1
  40. package/dist/contracts/locator.js +3 -3
  41. package/dist/contracts/locator.js.map +1 -1
  42. package/dist/contracts/operator-grid.js +17 -0
  43. package/dist/contracts/operator-grid.js.map +1 -0
  44. package/dist/contracts/pdg.js +2 -2
  45. package/dist/contracts/pdg.js.map +1 -1
  46. package/dist/contracts/reportChecker.js +4 -5
  47. package/dist/contracts/reportChecker.js.map +1 -1
  48. package/dist/contracts/steth.js +3 -3
  49. package/dist/contracts/steth.js.map +1 -1
  50. package/dist/contracts/token-manager.js +3 -3
  51. package/dist/contracts/token-manager.js.map +1 -1
  52. package/dist/contracts/vault-factory.js +2 -2
  53. package/dist/contracts/vault-factory.js.map +1 -1
  54. package/dist/contracts/vault-hub.js +3 -3
  55. package/dist/contracts/vault-hub.js.map +1 -1
  56. package/dist/contracts/vault-viewer.js +4 -6
  57. package/dist/contracts/vault-viewer.js.map +1 -1
  58. package/dist/contracts/vault.js +2 -2
  59. package/dist/contracts/vault.js.map +1 -1
  60. package/dist/contracts/voting.js +3 -3
  61. package/dist/contracts/voting.js.map +1 -1
  62. package/dist/contracts/wsteth.js +18 -0
  63. package/dist/contracts/wsteth.js.map +1 -0
  64. package/dist/features/advanced-config.js +3 -2
  65. package/dist/features/advanced-config.js.map +1 -1
  66. package/dist/features/dashboard.js +131 -0
  67. package/dist/features/dashboard.js.map +1 -0
  68. package/dist/features/index.js +8 -4
  69. package/dist/features/index.js.map +1 -1
  70. package/dist/features/operator-grid.js +57 -0
  71. package/dist/features/operator-grid.js.map +1 -0
  72. package/dist/features/pdg.js +79 -0
  73. package/dist/features/pdg.js.map +1 -0
  74. package/dist/features/vault-factory.js +33 -6
  75. package/dist/features/vault-factory.js.map +1 -1
  76. package/dist/features/vault-hub.js +81 -0
  77. package/dist/features/vault-hub.js.map +1 -0
  78. package/dist/features/vault.js +54 -0
  79. package/dist/features/vault.js.map +1 -0
  80. package/dist/features/voting.js +5 -9
  81. package/dist/features/voting.js.map +1 -1
  82. package/dist/index.js +2 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/programs/account.js +107 -5
  85. package/dist/programs/account.js.map +1 -1
  86. package/dist/programs/config.js +2 -2
  87. package/dist/programs/config.js.map +1 -1
  88. package/dist/programs/dashboard/config.js +63 -17
  89. package/dist/programs/dashboard/config.js.map +1 -1
  90. package/dist/programs/dashboard/main.js +0 -7
  91. package/dist/programs/dashboard/main.js.map +1 -1
  92. package/dist/programs/dashboard/read.js +64 -42
  93. package/dist/programs/dashboard/read.js.map +1 -1
  94. package/dist/programs/dashboard/write.js +259 -155
  95. package/dist/programs/dashboard/write.js.map +1 -1
  96. package/dist/programs/hub/config.js +28 -32
  97. package/dist/programs/hub/config.js.map +1 -1
  98. package/dist/programs/hub/main.js +0 -7
  99. package/dist/programs/hub/main.js.map +1 -1
  100. package/dist/programs/hub/read.js +30 -35
  101. package/dist/programs/hub/read.js.map +1 -1
  102. package/dist/programs/hub/write.js +148 -40
  103. package/dist/programs/hub/write.js.map +1 -1
  104. package/dist/programs/index.js +1 -1
  105. package/dist/programs/index.js.map +1 -1
  106. package/dist/programs/operator-grid/config.js +81 -0
  107. package/dist/programs/operator-grid/config.js.map +1 -0
  108. package/dist/programs/operator-grid/index.js.map +1 -0
  109. package/dist/programs/operator-grid/main.js +5 -0
  110. package/dist/programs/operator-grid/main.js.map +1 -0
  111. package/dist/programs/operator-grid/read.js +24 -0
  112. package/dist/programs/operator-grid/read.js.map +1 -0
  113. package/dist/programs/operator-grid/write.js +109 -0
  114. package/dist/programs/operator-grid/write.js.map +1 -0
  115. package/dist/programs/pdg/config.js +49 -13
  116. package/dist/programs/pdg/config.js.map +1 -1
  117. package/dist/programs/pdg/main.js +0 -7
  118. package/dist/programs/pdg/main.js.map +1 -1
  119. package/dist/programs/pdg/read.js +20 -3
  120. package/dist/programs/pdg/read.js.map +1 -1
  121. package/dist/programs/pdg/write.js +147 -82
  122. package/dist/programs/pdg/write.js.map +1 -1
  123. package/dist/programs/pdg-helpers.js +155 -38
  124. package/dist/programs/pdg-helpers.js.map +1 -1
  125. package/dist/programs/report.js +66 -78
  126. package/dist/programs/report.js.map +1 -1
  127. package/dist/programs/vault/config.js +6 -2
  128. package/dist/programs/vault/config.js.map +1 -1
  129. package/dist/programs/vault/main.js +0 -7
  130. package/dist/programs/vault/main.js.map +1 -1
  131. package/dist/programs/vault/read.js +16 -44
  132. package/dist/programs/vault/read.js.map +1 -1
  133. package/dist/programs/vault/write.js +117 -33
  134. package/dist/programs/vault/write.js.map +1 -1
  135. package/dist/programs/vault-factory/main.js +0 -7
  136. package/dist/programs/vault-factory/main.js.map +1 -1
  137. package/dist/programs/vault-factory/read.js +17 -19
  138. package/dist/programs/vault-factory/read.js.map +1 -1
  139. package/dist/programs/vault-factory/write.js +30 -52
  140. package/dist/programs/vault-factory/write.js.map +1 -1
  141. package/dist/programs/vault-viewer/main.js +2 -2
  142. package/dist/programs/vault-viewer/main.js.map +1 -1
  143. package/dist/programs/voting.js +8 -23
  144. package/dist/programs/voting.js.map +1 -1
  145. package/dist/providers/wallet.js +4 -4
  146. package/dist/providers/wallet.js.map +1 -1
  147. package/dist/utils/arguments.js +44 -1
  148. package/dist/utils/arguments.js.map +1 -1
  149. package/dist/utils/bls.js +101 -0
  150. package/dist/utils/bls.js.map +1 -0
  151. package/dist/utils/commands/dashboard.js +103 -0
  152. package/dist/utils/commands/dashboard.js.map +1 -0
  153. package/dist/utils/commands/index.js +2 -0
  154. package/dist/utils/commands/index.js.map +1 -0
  155. package/dist/utils/contract.js +54 -15
  156. package/dist/utils/contract.js.map +1 -1
  157. package/dist/utils/data-validators.js +7 -22
  158. package/dist/utils/data-validators.js.map +1 -1
  159. package/dist/utils/error-handler.js +5 -2
  160. package/dist/utils/error-handler.js.map +1 -1
  161. package/dist/utils/fetchCL.js +57 -0
  162. package/dist/utils/fetchCL.js.map +1 -0
  163. package/dist/utils/get-deposit-data-root.js +3 -3
  164. package/dist/utils/health.js +69 -7
  165. package/dist/utils/health.js.map +1 -1
  166. package/dist/utils/index.js +6 -1
  167. package/dist/utils/index.js.map +1 -1
  168. package/dist/utils/ipfs.js +54 -0
  169. package/dist/utils/ipfs.js.map +1 -0
  170. package/dist/utils/logging/console.js +23 -0
  171. package/dist/utils/logging/console.js.map +1 -0
  172. package/dist/utils/logging/constants.js +12 -0
  173. package/dist/utils/logging/constants.js.map +1 -0
  174. package/dist/utils/logging/index.js +2 -0
  175. package/dist/utils/logging/index.js.map +1 -0
  176. package/dist/utils/prompts/dashboard.js +63 -0
  177. package/dist/utils/prompts/dashboard.js.map +1 -0
  178. package/dist/utils/prompts/index.js +2 -1
  179. package/dist/utils/prompts/index.js.map +1 -1
  180. package/dist/utils/prompts/operations.js +41 -0
  181. package/dist/utils/prompts/operations.js.map +1 -0
  182. package/dist/utils/prompts/predeposit-guarantee.js +10 -13
  183. package/dist/utils/prompts/predeposit-guarantee.js.map +1 -1
  184. package/dist/utils/prompts/vault.js +4 -1
  185. package/dist/utils/prompts/vault.js.map +1 -1
  186. package/dist/utils/proof/create-proof.js +5 -29
  187. package/dist/utils/proof/create-proof.js.map +1 -1
  188. package/dist/utils/proof/first-validator-gindex.js +2 -1
  189. package/dist/utils/proof/first-validator-gindex.js.map +1 -1
  190. package/dist/utils/proof/merkle-utils.js +15 -3
  191. package/dist/utils/proof/merkle-utils.js.map +1 -1
  192. package/dist/utils/proof/report-proof.js +11 -6
  193. package/dist/utils/proof/report-proof.js.map +1 -1
  194. package/dist/utils/read-programs-by-abi.js +2 -2
  195. package/dist/utils/read-programs-by-abi.js.map +1 -1
  196. package/dist/utils/report.js +17 -17
  197. package/dist/utils/report.js.map +1 -1
  198. package/dist/utils/required-lock.js +21 -0
  199. package/dist/utils/required-lock.js.map +1 -0
  200. package/dist/version/index.js +1 -1
  201. package/package.json +10 -4
  202. package/dist/abi/Delegation.js.map +0 -1
  203. package/dist/contracts/delegation.js +0 -11
  204. package/dist/contracts/delegation.js.map +0 -1
  205. package/dist/features/dashboard-delegation.js +0 -25
  206. package/dist/features/dashboard-delegation.js.map +0 -1
  207. package/dist/programs/delegation/config.js +0 -33
  208. package/dist/programs/delegation/config.js.map +0 -1
  209. package/dist/programs/delegation/index.js.map +0 -1
  210. package/dist/programs/delegation/main.js +0 -12
  211. package/dist/programs/delegation/main.js.map +0 -1
  212. package/dist/programs/delegation/read.js +0 -104
  213. package/dist/programs/delegation/read.js.map +0 -1
  214. package/dist/programs/delegation/write.js +0 -323
  215. package/dist/programs/delegation/write.js.map +0 -1
  216. package/dist/utils/parse-string.js +0 -20
  217. package/dist/utils/parse-string.js.map +0 -1
  218. package/dist/utils/prompts/delegation-dashboard.js +0 -29
  219. package/dist/utils/prompts/delegation-dashboard.js.map +0 -1
  220. /package/dist/programs/{delegation → operator-grid}/index.js +0 -0
@@ -1,29 +1,131 @@
1
- import { formatEther } from 'viem';
1
+ import { encodeFunctionData, formatEther, parseEther } from 'viem';
2
+ import { generatePrivateKey } from 'viem/accounts';
2
3
  import { program } from '../command/index.js';
3
- import { getWalletWithAccount, getPublicClient } from '../providers/index.js';
4
- import { printError, showSpinner } from '../utils/index.js';
4
+ import { Option } from 'commander';
5
+ import { getStethContract, getWstethContract } from '../contracts/index.js';
6
+ import { getWalletWithAccount, getPublicClient, getAccount } from '../providers/index.js';
7
+ import { printError, showSpinner, logResult, getCommandsJson, logInfo, callWriteMethodWithReceipt, stringToAddress, confirmOperation, callReadMethod, } from '../utils/index.js';
5
8
  const account = program
6
9
  .command('account')
7
10
  .description('connected account info');
11
+ account.addOption(new Option('-cmd2json'));
12
+ account.on('option:-cmd2json', function () {
13
+ logInfo(getCommandsJson(account));
14
+ process.exit();
15
+ });
8
16
  account
9
17
  .command('info')
10
- .description('general account info')
18
+ .description('general account info.')
11
19
  .action(async () => {
12
20
  const walletClient = getWalletWithAccount();
13
21
  const publicClient = getPublicClient();
14
22
  const { address } = walletClient.account;
15
23
  try {
24
+ const stETHContract = await getStethContract();
25
+ const wstETHContract = await getWstethContract();
16
26
  const hideSpinner = showSpinner();
17
27
  const balance = await publicClient.getBalance({ address });
28
+ const stETHBalance = await stETHContract.read.balanceOf([address]);
29
+ const wstETHBalance = await wstETHContract.read.balanceOf([address]);
18
30
  hideSpinner();
19
- console.table({
31
+ logResult({
20
32
  address,
21
33
  balanceWEI: balance,
22
34
  balanceETH: formatEther(balance),
35
+ balanceSTETH: formatEther(stETHBalance),
36
+ balanceWSTETH: formatEther(wstETHBalance),
23
37
  });
24
38
  }
25
39
  catch (err) {
26
40
  printError(err, 'Error when getting account info');
27
41
  }
28
42
  });
43
+ account
44
+ .command('generate-key')
45
+ .description('generate a new key. Disclaimer: this command is not recommended for production use.')
46
+ .action(async () => {
47
+ const privateKey = generatePrivateKey();
48
+ logInfo(`Private key: ${privateKey}`);
49
+ });
50
+ account
51
+ .command('steth-allowance')
52
+ .description('set allowance for steth contract')
53
+ .argument('<address>', 'address to set allowance for', stringToAddress)
54
+ .argument('<amount>', 'amount of steth to allow')
55
+ .action(async (address, amount) => {
56
+ const stethContract = await getStethContract();
57
+ const confirm = await confirmOperation(`Are you sure you want to set allowance ${formatEther(parseEther(amount))} for ${address}?`);
58
+ if (!confirm)
59
+ return;
60
+ await callWriteMethodWithReceipt(stethContract, 'approve', [
61
+ address,
62
+ parseEther(amount),
63
+ ]);
64
+ });
65
+ account
66
+ .command('steth-allowance-populate-tx')
67
+ .alias('steth-allowance-tx')
68
+ .description('populate tx for steth allowance')
69
+ .argument('<address>', 'address to set allowance for', stringToAddress)
70
+ .argument('<amount>', 'amount of steth to allow')
71
+ .action(async (address, amount) => {
72
+ const stethContract = await getStethContract();
73
+ const tx = encodeFunctionData({
74
+ abi: stethContract.abi,
75
+ functionName: 'approve',
76
+ args: [address, parseEther(amount)],
77
+ });
78
+ logInfo(tx);
79
+ });
80
+ account
81
+ .command('get-steth-allowance')
82
+ .description('get steth allowance for an address')
83
+ .argument('<address>', 'address to get allowance for', stringToAddress)
84
+ .action(async (address) => {
85
+ const accountAddress = getAccount().address;
86
+ const stethContract = await getStethContract();
87
+ await callReadMethod(stethContract, 'allowance', [accountAddress, address]);
88
+ });
89
+ account
90
+ .command('wsteth-allowance')
91
+ .description('set allowance for wsteth contract')
92
+ .argument('<address>', 'address to set allowance for', stringToAddress)
93
+ .argument('<amount>', 'amount of wsteth to allow')
94
+ .action(async (address, amount) => {
95
+ const wstethContract = await getWstethContract();
96
+ const confirm = await confirmOperation(`Are you sure you want to set allowance ${formatEther(parseEther(amount))} for ${address}?`);
97
+ if (!confirm)
98
+ return;
99
+ await callWriteMethodWithReceipt(wstethContract, 'approve', [
100
+ address,
101
+ parseEther(amount),
102
+ ]);
103
+ });
104
+ account
105
+ .command('wsteth-allowance-populate-tx')
106
+ .alias('wsteth-allowance-tx')
107
+ .description('populate tx for wsteth allowance')
108
+ .argument('<address>', 'address to set allowance for', stringToAddress)
109
+ .argument('<amount>', 'amount of wsteth to allow')
110
+ .action(async (address, amount) => {
111
+ const wstethContract = await getWstethContract();
112
+ const tx = encodeFunctionData({
113
+ abi: wstethContract.abi,
114
+ functionName: 'approve',
115
+ args: [address, parseEther(amount)],
116
+ });
117
+ logInfo(tx);
118
+ });
119
+ account
120
+ .command('get-wsteth-allowance')
121
+ .description('get wsteth allowance for an address')
122
+ .argument('<address>', 'address to get allowance for', stringToAddress)
123
+ .action(async (address) => {
124
+ const accountAddress = getAccount().address;
125
+ const wstethContract = await getWstethContract();
126
+ await callReadMethod(wstethContract, 'allowance', [
127
+ accountAddress,
128
+ address,
129
+ ]);
130
+ });
29
131
  //# sourceMappingURL=account.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../programs/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,WAAW,EAAE,CAAC;QAEd,OAAO,CAAC,KAAK,CAAC;YACZ,OAAO;YACP,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../programs/account.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { readFileSync, existsSync } from 'node:fs';
2
2
  import { resolve } from 'node:path';
3
3
  import { program } from '../command/index.js';
4
- import { validateConfig } from '../utils/index.js';
4
+ import { validateConfig, logInfo } from '../utils/index.js';
5
5
  program
6
6
  .command('conf <path>')
7
7
  .description('Load and validate a JSON configuration file')
@@ -19,7 +19,7 @@ program
19
19
  errorKeys.forEach((key) => program.error(`${key} - ${errors[key]}`));
20
20
  process.exit(1);
21
21
  }
22
- console.info('Configuration is valid!');
22
+ logInfo('Configuration is valid!');
23
23
  }
24
24
  catch (error) {
25
25
  if (error instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../programs/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACxB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,GAAuB,CAAC,EAAE,CAAC,CAC7D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../programs/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACxB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,GAAmB,CAAC,EAAE,CAAC,CACzD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { parseEther } from 'viem';
1
2
  export const readCommandConfig = {
2
3
  withdrawableEther: {
3
4
  name: 'w-ether',
@@ -11,17 +12,17 @@ export const readCommandConfig = {
11
12
  name: 'hub',
12
13
  description: 'get vaultHub address',
13
14
  },
14
- valuation: {
15
- name: 'valuation',
16
- description: 'get vault valuation',
15
+ totalValue: {
16
+ name: 'total-value',
17
+ description: 'get the total value of the vault in ether',
17
18
  },
18
19
  treasuryFeeBP: {
19
20
  name: 't-fee',
20
21
  description: 'get treasury fee in basis points',
21
22
  },
22
- totalMintableShares: {
23
- name: 'total-mintable-shares',
24
- description: 'get total of shares that can be minted on the vault',
23
+ totalMintingCapacity: {
24
+ name: 'total-mintable-capacity',
25
+ description: 'get the overall capacity for stETH shares that can be minted by the vault',
25
26
  },
26
27
  supportsInterface: {
27
28
  name: 'supports-interface',
@@ -31,35 +32,80 @@ export const readCommandConfig = {
31
32
  name: 'vault',
32
33
  description: 'get staking vault address',
33
34
  },
34
- sharesMinted: {
35
- name: 's-minted',
36
- description: 'get shares minted',
35
+ liabilityShares: {
36
+ name: 'liability-shares',
37
+ description: 'get the number of stETHshares minted',
37
38
  },
38
39
  shareLimit: {
39
40
  name: 's-limit',
40
- description: 'get share limit',
41
+ description: 'get the stETH share limit of the vault',
41
42
  },
42
43
  reserveRatioBP: {
43
44
  name: 'reserve-ratio',
44
45
  description: 'get reserve ratio in basis points',
45
46
  },
46
- rebalanceThresholdBP: {
47
- name: 'r-threshold',
48
- description: 'get rebalance threshold in basis points',
47
+ forcedRebalanceThresholdBP: {
48
+ name: 'force-rebalance-threshold',
49
+ description: 'get the rebalance threshold of the vault in basis points',
49
50
  },
50
- projectedNewMintableShares: {
51
- name: 'projected-new-mintable-shares',
52
- description: 'get projected new mintable shares',
51
+ remainingMintingCapacity: {
52
+ name: 'remaining-minting-capacity',
53
+ description: 'get the remaining capacity for stETH shares that can be minted by the vault if additional ether is funded',
53
54
  arguments: {
54
55
  _etherToFund: {
55
56
  name: 'etherToFund',
56
- description: 'ether to fund',
57
+ description: 'the amount of ether to be funded, can be zero',
58
+ modifier: parseEther,
57
59
  },
58
60
  },
59
61
  },
62
+ unreserved: {
63
+ name: 'unreserved',
64
+ description: 'get the unreserved amount of ether',
65
+ },
60
66
  hasRole: {
61
67
  name: 'has-role',
62
68
  description: 'get has role by role and account',
63
69
  },
70
+ nodeOperatorUnclaimedFee: {
71
+ name: 'no-unclaimed-fee',
72
+ description: `returns the accumulated unclaimed node operator fee in ether`,
73
+ },
74
+ nodeOperatorFeeClaimedReport: {
75
+ name: 'no-fee-report',
76
+ description: 'get node operator fee claimed report',
77
+ },
78
+ nodeOperatorFeeBP: {
79
+ name: 'no-fee',
80
+ description: 'get node operator fee in basis points',
81
+ },
82
+ accruedRewardsAdjustment: {
83
+ name: 'accrued-rewards-adjustment',
84
+ description: 'get adjustment to allow fee correction during side deposits or consolidations.',
85
+ },
86
+ confirmations: {
87
+ name: 'confirmations',
88
+ description: 'get tracks confirmations',
89
+ },
90
+ confirmingRoles: {
91
+ name: 'confirming-roles',
92
+ description: 'get confirming roles',
93
+ },
94
+ getConfirmExpiry: {
95
+ name: 'get-confirm-expiry',
96
+ description: 'get the confirmation expiry',
97
+ },
98
+ MANUAL_ACCRUED_REWARDS_ADJUSTMENT_LIMIT: {
99
+ name: 'MANUAL_ACCRUED_REWARDS_ADJUSTMENT_LIMIT',
100
+ description: 'get the manual accrued rewards adjustment limit',
101
+ },
102
+ MAX_CONFIRM_EXPIRY: {
103
+ name: 'MAX_CONFIRM_EXPIRY',
104
+ description: 'get the max confirm expiry',
105
+ },
106
+ MIN_CONFIRM_EXPIRY: {
107
+ name: 'MIN_CONFIRM_EXPIRY',
108
+ description: 'get the min confirm expiry',
109
+ },
64
110
  };
65
111
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../programs/dashboard/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,iBAAiB,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kEAAkE;KACrE;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;KAChC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,sBAAsB;KACpC;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qBAAqB;KACnC;IACD,aAAa,EAAE;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;KAChD;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,qDAAqD;KACnE;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,8BAA8B;KAC5C;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;KACzC;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mBAAmB;KACjC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iBAAiB;KAC/B;IACD,cAAc,EAAE;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,mCAAmC;KACjD;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,yCAAyC;KACvD;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,mCAAmC;QAChD,SAAS,EAAE;YACT,YAAY,EAAE;gBACZ,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,eAAe;aAC7B;SACF;KACF;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kCAAkC;KAChD;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../programs/dashboard/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,iBAAiB,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kEAAkE;KACrE;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;KAChC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,sBAAsB;KACpC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2CAA2C;KACzD;IACD,aAAa,EAAE;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kCAAkC;KAChD;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,2EAA2E;KAC9E;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,8BAA8B;KAC5C;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;KACzC;IACD,eAAe,EAAE;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sCAAsC;KACpD;IACD,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wCAAwC;KACtD;IACD,cAAc,EAAE;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,mCAAmC;KACjD;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,0DAA0D;KACxE;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACT,2GAA2G;QAC7G,SAAS,EAAE;YACT,YAAY,EAAE;gBACZ,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,+CAA+C;gBAC5D,QAAQ,EAAE,UAAU;aACrB;SACF;KACF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oCAAoC;KAClD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kCAAkC;KAChD;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8DAA8D;KAC5E;IACD,4BAA4B,EAAE;QAC5B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sCAAsC;KACpD;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uCAAuC;KACrD;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACT,gFAAgF;KACnF;IACD,aAAa,EAAE;QACb,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,0BAA0B;KACxC;IACD,eAAe,EAAE;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sBAAsB;KACpC;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,6BAA6B;KAC3C;IACD,uCAAuC,EAAE;QACvC,IAAI,EAAE,yCAAyC;QAC/C,WAAW,EAAE,iDAAiD;KAC/D;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,4BAA4B;KAC1C;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,4BAA4B;KAC1C;CACF,CAAC"}
@@ -1,12 +1,5 @@
1
1
  import { program } from '../../command/index.js';
2
- import { Option } from 'commander';
3
- import { getCommandsJson } from '../../utils/index.js';
4
2
  export const dashboard = program
5
3
  .command('dashboard')
6
4
  .description('dashboard contract');
7
- dashboard.addOption(new Option('-cmd2json'));
8
- dashboard.on('option:-cmd2json', function () {
9
- console.info(getCommandsJson(dashboard));
10
- process.exit();
11
- });
12
5
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../programs/dashboard/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO;KAC7B,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oBAAoB,CAAC,CAAC;AAErC,SAAS,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7C,SAAS,CAAC,EAAE,CAAC,kBAAkB,EAAE;IAC/B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../programs/dashboard/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO;KAC7B,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oBAAoB,CAAC,CAAC"}
@@ -1,63 +1,85 @@
1
- import { getDashboardContract, getStethContract } from '../../contracts/index.js';
2
1
  import { formatEther } from 'viem';
2
+ import { Option } from 'commander';
3
3
  import { DashboardAbi } from '../../abi/index.js';
4
- import { calculateHealthRatio, generateReadCommands, textPrompt } from '../../utils/index.js';
5
- import { getBaseInfo } from '../../features/index.js';
4
+ import { getDashboardBaseInfo, getDashboardRoles } from '../../features/index.js';
5
+ import { getDashboardContract, getStakingVaultContract } from '../../contracts/index.js';
6
+ import { fetchAndCalculateVaultHealth, generateReadCommands, logResult, logInfo, getCommandsJson, stringToAddress, callReadMethod, getRequiredLockByShares, } from '../../utils/index.js';
6
7
  import { dashboard } from './main.js';
7
8
  import { readCommandConfig } from './config.js';
8
- dashboard
9
+ const dashboardRead = dashboard
10
+ .command('read')
11
+ .alias('r')
12
+ .description('read commands');
13
+ dashboardRead.addOption(new Option('-cmd2json'));
14
+ dashboardRead.on('option:-cmd2json', function () {
15
+ logInfo(getCommandsJson(dashboardRead));
16
+ process.exit();
17
+ });
18
+ dashboardRead
9
19
  .command('info')
10
20
  .description('get dashboard base info')
11
- .option('-a, --address <address>', 'dashboard address')
12
- .action(async ({ address }) => {
13
- let dashboardAddress = address;
14
- if (!dashboardAddress) {
15
- const answer = await textPrompt('Enter dashboard address', 'address');
16
- dashboardAddress = answer.address;
17
- if (!dashboardAddress) {
18
- console.info('Command cancelled');
19
- return;
20
- }
21
- }
22
- const contract = getDashboardContract(dashboardAddress);
23
- await getBaseInfo(contract);
21
+ .argument('<address>', 'dashboard address', stringToAddress)
22
+ .action(async (address) => {
23
+ const contract = getDashboardContract(address);
24
+ await getDashboardBaseInfo(contract);
24
25
  });
25
- dashboard
26
+ dashboardRead
27
+ .command('roles')
28
+ .description('get dashboard roles')
29
+ .argument('<address>', 'dashboard address', stringToAddress)
30
+ .action(async (address) => {
31
+ const contract = getDashboardContract(address);
32
+ await getDashboardRoles(contract);
33
+ });
34
+ dashboardRead
26
35
  .command('health')
27
36
  .description('get vault health info')
28
- .argument('<address>', 'delegation address')
37
+ .argument('<address>', 'dashboard address', stringToAddress)
29
38
  .action(async (address) => {
30
39
  const contract = getDashboardContract(address);
31
- const stethContract = await getStethContract();
32
40
  try {
33
- const [valuation, minted, rebalanceThresholdBP] = await Promise.all([
34
- contract.read.valuation(), // BigInt, in wei
35
- contract.read.sharesMinted(), // BigInt, in shares
36
- contract.read.rebalanceThresholdBP(), // number (in basis points)
37
- ]);
38
- if (minted === BigInt(0)) {
39
- console.info('Minted is 0');
40
- return;
41
- }
42
- const mintedInSteth = await stethContract.read.getPooledEthByShares([
43
- minted,
44
- ]); // BigInt
45
- const { healthRatioNumber, isHealthy } = calculateHealthRatio(valuation, mintedInSteth, rebalanceThresholdBP);
46
- console.table({
41
+ const { healthRatio, isHealthy, totalValue, totalValueInEth, liabilitySharesInSteth, forceRebalanceThresholdBP, liabilityShares, } = await fetchAndCalculateVaultHealth(contract);
42
+ logResult({
47
43
  'Vault Healthy': isHealthy,
48
- 'Valuation, wei': valuation,
49
- 'Valuation, ether': `${formatEther(valuation)} ETH`,
50
- 'Minted, stETH': `${mintedInSteth} stETH`,
51
- 'Rebalance Threshold, BP': rebalanceThresholdBP,
52
- 'Rebalance Threshold, %': `${rebalanceThresholdBP / 100}%`,
53
- 'Health Rate': `${healthRatioNumber}%`,
44
+ 'Total Value, wei': totalValue,
45
+ 'Total Value, ether': totalValueInEth,
46
+ 'Liability Shares': `${formatEther(liabilityShares)} shares`,
47
+ 'Liability Shares in stETH': liabilitySharesInSteth,
48
+ 'Rebalance Threshold, BP': forceRebalanceThresholdBP,
49
+ 'Rebalance Threshold, %': `${forceRebalanceThresholdBP / 100}%`,
50
+ 'Health Rate': `${healthRatio}%`,
54
51
  });
55
52
  }
56
53
  catch (err) {
57
54
  if (err instanceof Error) {
58
- console.info('Error when getting info:\n', err.message);
55
+ logInfo('Error when getting info:\n', err.message);
59
56
  }
60
57
  }
61
58
  });
62
- generateReadCommands(DashboardAbi, getDashboardContract, dashboard, readCommandConfig);
59
+ dashboardRead
60
+ .command('locked')
61
+ .description('get locked info')
62
+ .argument('<address>', 'dashboard address', stringToAddress)
63
+ .action(async (address) => {
64
+ const contract = getDashboardContract(address);
65
+ const vault = await callReadMethod(contract, 'stakingVault');
66
+ const vaultContract = getStakingVaultContract(vault);
67
+ await callReadMethod(vaultContract, 'locked');
68
+ });
69
+ dashboardRead
70
+ .command('required-lock-by-shares')
71
+ .alias('req-lock')
72
+ .description('get required lock by shares')
73
+ .argument('<address>', 'dashboard address', stringToAddress)
74
+ .argument('<newShares>', 'new shares')
75
+ .action(async (address, newShares) => {
76
+ const { requiredLock, currentLock } = await getRequiredLockByShares(address, newShares);
77
+ logResult({
78
+ 'Required Lock (wei)': requiredLock,
79
+ 'Required Lock (shares)': formatEther(requiredLock),
80
+ 'Current Lock (wei)': currentLock,
81
+ 'Current Lock (shares)': formatEther(currentLock),
82
+ });
83
+ });
84
+ generateReadCommands(DashboardAbi, getDashboardContract, dashboardRead, readCommandConfig);
63
85
  //# sourceMappingURL=read.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../programs/dashboard/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../programs/dashboard/read.ts"],"names":[],"mappings":"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"}