@lidofinance/lsv-cli 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (143) hide show
  1. package/README.md +244 -120
  2. package/dist/abi/CLProofVerifier.js +279 -0
  3. package/dist/abi/CLProofVerifier.js.map +1 -0
  4. package/dist/abi/Dashboard.js +1060 -942
  5. package/dist/abi/Dashboard.js.map +1 -1
  6. package/dist/abi/Delegation.js +1260 -1129
  7. package/dist/abi/Delegation.js.map +1 -1
  8. package/dist/abi/LidoLocator.js +311 -270
  9. package/dist/abi/LidoLocator.js.map +1 -1
  10. package/dist/abi/PredepositGuarantee.js +1733 -0
  11. package/dist/abi/PredepositGuarantee.js.map +1 -0
  12. package/dist/abi/StakingVault.js +723 -528
  13. package/dist/abi/StakingVault.js.map +1 -1
  14. package/dist/abi/VaultFactory.js +164 -144
  15. package/dist/abi/VaultFactory.js.map +1 -1
  16. package/dist/abi/VaultHubViewer.js +297 -0
  17. package/dist/abi/VaultHubViewer.js.map +1 -0
  18. package/dist/abi/index.js +12 -9
  19. package/dist/abi/index.js.map +1 -1
  20. package/dist/configs/constants.js +2 -2
  21. package/dist/configs/constants.js.map +1 -1
  22. package/dist/contracts/clProofVerifier.js +29 -0
  23. package/dist/contracts/clProofVerifier.js.map +1 -0
  24. package/dist/contracts/dashboard.js.map +1 -1
  25. package/dist/contracts/index.js +12 -9
  26. package/dist/contracts/index.js.map +1 -1
  27. package/dist/contracts/locator.js +2 -2
  28. package/dist/contracts/locator.js.map +1 -1
  29. package/dist/contracts/pdg.js +17 -0
  30. package/dist/contracts/pdg.js.map +1 -0
  31. package/dist/contracts/vault-factory.js +5 -9
  32. package/dist/contracts/vault-factory.js.map +1 -1
  33. package/dist/contracts/vault-hub-viewer.js +14 -0
  34. package/dist/contracts/vault-hub-viewer.js.map +1 -0
  35. package/dist/features/dashboard-delegation.js +4 -1
  36. package/dist/features/dashboard-delegation.js.map +1 -1
  37. package/dist/features/vault-factory.js +6 -10
  38. package/dist/features/vault-factory.js.map +1 -1
  39. package/dist/features/voting.js +6 -14
  40. package/dist/features/voting.js.map +1 -1
  41. package/dist/index.js +6 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/programs/account.js +3 -1
  44. package/dist/programs/account.js.map +1 -1
  45. package/dist/programs/dashboard/config.js +65 -0
  46. package/dist/programs/dashboard/config.js.map +1 -0
  47. package/dist/programs/dashboard/index.js +4 -0
  48. package/dist/programs/dashboard/index.js.map +1 -0
  49. package/dist/programs/dashboard/main.js +12 -0
  50. package/dist/programs/dashboard/main.js.map +1 -0
  51. package/dist/programs/dashboard/read.js +25 -0
  52. package/dist/programs/dashboard/read.js.map +1 -0
  53. package/dist/programs/{dashboard.js → dashboard/write.js} +78 -136
  54. package/dist/programs/dashboard/write.js.map +1 -0
  55. package/dist/programs/delegation/config.js +33 -0
  56. package/dist/programs/delegation/config.js.map +1 -0
  57. package/dist/programs/delegation/index.js +4 -0
  58. package/dist/programs/delegation/index.js.map +1 -0
  59. package/dist/programs/delegation/main.js +12 -0
  60. package/dist/programs/delegation/main.js.map +1 -0
  61. package/dist/programs/delegation/read.js +98 -0
  62. package/dist/programs/delegation/read.js.map +1 -0
  63. package/dist/programs/delegation/write.js +327 -0
  64. package/dist/programs/delegation/write.js.map +1 -0
  65. package/dist/programs/index.js +7 -4
  66. package/dist/programs/index.js.map +1 -1
  67. package/dist/programs/pdg/config.js +2 -0
  68. package/dist/programs/pdg/config.js.map +1 -0
  69. package/dist/programs/pdg/index.js +4 -0
  70. package/dist/programs/pdg/index.js.map +1 -0
  71. package/dist/programs/pdg/main.js +12 -0
  72. package/dist/programs/pdg/main.js.map +1 -0
  73. package/dist/programs/pdg/read.js +7 -0
  74. package/dist/programs/pdg/read.js.map +1 -0
  75. package/dist/programs/pdg/write.js +64 -0
  76. package/dist/programs/pdg/write.js.map +1 -0
  77. package/dist/programs/pdg-helpers.js +73 -0
  78. package/dist/programs/pdg-helpers.js.map +1 -0
  79. package/dist/programs/vault/config.js +66 -0
  80. package/dist/programs/vault/config.js.map +1 -0
  81. package/dist/programs/vault/index.js +4 -0
  82. package/dist/programs/vault/index.js.map +1 -0
  83. package/dist/programs/vault/main.js +10 -0
  84. package/dist/programs/vault/main.js.map +1 -0
  85. package/dist/programs/vault/read.js +53 -0
  86. package/dist/programs/vault/read.js.map +1 -0
  87. package/dist/programs/vault/write.js +123 -0
  88. package/dist/programs/vault/write.js.map +1 -0
  89. package/dist/programs/vault-factory/config.js +2 -0
  90. package/dist/programs/vault-factory/config.js.map +1 -0
  91. package/dist/programs/vault-factory/index.js +4 -0
  92. package/dist/programs/vault-factory/index.js.map +1 -0
  93. package/dist/programs/vault-factory/main.js +12 -0
  94. package/dist/programs/vault-factory/main.js.map +1 -0
  95. package/dist/programs/vault-factory/read.js +26 -0
  96. package/dist/programs/vault-factory/read.js.map +1 -0
  97. package/dist/programs/{vault-factory.js → vault-factory/write.js} +22 -37
  98. package/dist/programs/vault-factory/write.js.map +1 -0
  99. package/dist/programs/vault-hub-viewer.js +52 -0
  100. package/dist/programs/vault-hub-viewer.js.map +1 -0
  101. package/dist/programs/vault-hub.js +20 -52
  102. package/dist/programs/vault-hub.js.map +1 -1
  103. package/dist/programs/voting.js +11 -33
  104. package/dist/programs/voting.js.map +1 -1
  105. package/dist/utils/contract.js +63 -2
  106. package/dist/utils/contract.js.map +1 -1
  107. package/dist/utils/get-commands.js +11 -0
  108. package/dist/utils/get-commands.js.map +1 -0
  109. package/dist/utils/index.js +5 -0
  110. package/dist/utils/index.js.map +1 -1
  111. package/dist/utils/prompts/default.js +17 -0
  112. package/dist/utils/prompts/default.js.map +1 -0
  113. package/dist/utils/prompts/delegation-dashboard.js +29 -0
  114. package/dist/utils/prompts/delegation-dashboard.js.map +1 -0
  115. package/dist/utils/prompts/index.js +4 -0
  116. package/dist/utils/prompts/index.js.map +1 -0
  117. package/dist/utils/prompts/predeposit-guarantee.js +25 -0
  118. package/dist/utils/prompts/predeposit-guarantee.js.map +1 -0
  119. package/dist/utils/proof/create-proof.js +62 -0
  120. package/dist/utils/proof/create-proof.js.map +1 -0
  121. package/dist/utils/proof/first-validator-gindex.js +26 -0
  122. package/dist/utils/proof/first-validator-gindex.js.map +1 -0
  123. package/dist/utils/proof/index.js +4 -0
  124. package/dist/utils/proof/index.js.map +1 -0
  125. package/dist/utils/proof/merkle-utils.js +131 -0
  126. package/dist/utils/proof/merkle-utils.js.map +1 -0
  127. package/dist/utils/proof/proofs.js +52 -0
  128. package/dist/utils/proof/proofs.js.map +1 -0
  129. package/dist/utils/read-programs-by-abi.js +83 -0
  130. package/dist/utils/read-programs-by-abi.js.map +1 -0
  131. package/dist/utils/spinner/index.js +2 -0
  132. package/dist/utils/spinner/index.js.map +1 -0
  133. package/dist/utils/spinner/spinners.js +16 -0
  134. package/dist/utils/spinner/spinners.js.map +1 -0
  135. package/dist/utils/spinner/spinners.json +119 -0
  136. package/dist/version/index.js +1 -1
  137. package/package.json +11 -4
  138. package/dist/programs/dashboard.js.map +0 -1
  139. package/dist/programs/delegation.js +0 -581
  140. package/dist/programs/delegation.js.map +0 -1
  141. package/dist/programs/vault-factory.js.map +0 -1
  142. package/dist/programs/vault.js +0 -375
  143. package/dist/programs/vault.js.map +0 -1
@@ -1,375 +0,0 @@
1
- import { program } from '../command/index.js';
2
- import { getStakingVaultContract } from '../contracts/index.js';
3
- import { getAccount, getPublicClient } from '../providers/index.js';
4
- import { getChain } from '../configs/index.js';
5
- import { isContractAddress } from '../utils/index.js';
6
- const vault = program.command('vault').description('vault contract');
7
- vault
8
- .command('info')
9
- .description('get vault base info')
10
- .argument('<address>', 'vault address')
11
- .action(async (address) => {
12
- const contract = getStakingVaultContract(address);
13
- const publicClient = getPublicClient();
14
- try {
15
- const withdrawalCredentials = await contract.read.withdrawalCredentials();
16
- const inOutDelta = await contract.read.inOutDelta();
17
- const balance = await publicClient.getBalance({ address });
18
- const valuation = await contract.read.valuation();
19
- const version = await contract.read.version();
20
- const initializedVersion = await contract.read.getInitializedVersion();
21
- const depositContract = await contract.read.depositContract();
22
- const nodeOperator = await contract.read.nodeOperator();
23
- const owner = await contract.read.owner();
24
- const isBalanced = await contract.read.isBalanced();
25
- const isOwnerContract = await isContractAddress(owner);
26
- const payload = {
27
- vault: address,
28
- withdrawalCredentials,
29
- inOutDelta,
30
- balance,
31
- valuation,
32
- isBalanced,
33
- version,
34
- initializedVersion,
35
- depositContract,
36
- nodeOperator,
37
- owner,
38
- isOwnerContract,
39
- };
40
- console.table(payload);
41
- }
42
- catch (err) {
43
- if (err instanceof Error) {
44
- program.error(err.message);
45
- }
46
- }
47
- });
48
- // Works
49
- vault
50
- .command('l-report')
51
- .description('get latest vault report')
52
- .argument('<address>', 'vault address')
53
- .action(async (address) => {
54
- const contract = getStakingVaultContract(address);
55
- try {
56
- const latestReport = await contract.read.latestReport();
57
- console.table({ 'latest report': latestReport });
58
- }
59
- catch (err) {
60
- if (err instanceof Error) {
61
- program.error(err.message);
62
- }
63
- }
64
- });
65
- // Works
66
- vault
67
- .command('is-balanced')
68
- .description('returns whether `StakingVault` is balanced, i.e. its valuation is greater than the locked amount')
69
- .argument('<address>', 'vault address')
70
- .action(async (address) => {
71
- const contract = getStakingVaultContract(address);
72
- try {
73
- const isBalanced = await contract.read.isBalanced();
74
- console.table({ 'Is balanced': isBalanced });
75
- }
76
- catch (err) {
77
- if (err instanceof Error) {
78
- program.error(err.message);
79
- }
80
- }
81
- });
82
- vault
83
- .command('node-operator')
84
- .description('Returns the address of the node operator')
85
- .argument('<address>', 'vault address')
86
- .action(async (address) => {
87
- const contract = getStakingVaultContract(address);
88
- try {
89
- const nodeOperator = await contract.read.nodeOperator();
90
- console.table({ 'Node Operator': nodeOperator });
91
- }
92
- catch (err) {
93
- if (err instanceof Error) {
94
- program.error(err.message);
95
- }
96
- }
97
- });
98
- // Works
99
- vault
100
- .command('valuation')
101
- .description('get vault valuation')
102
- .argument('<address>', 'vault address')
103
- .action(async (address) => {
104
- const contract = getStakingVaultContract(address);
105
- try {
106
- const valuation = await contract.read.valuation();
107
- console.table({ valuation });
108
- }
109
- catch (err) {
110
- if (err instanceof Error) {
111
- program.error(err.message);
112
- }
113
- }
114
- });
115
- // Works
116
- vault
117
- .command('unlocked')
118
- .description('get vault unlocked')
119
- .argument('<address>', 'vault address')
120
- .action(async (address) => {
121
- const contract = getStakingVaultContract(address);
122
- try {
123
- const unlocked = await contract.read.unlocked();
124
- console.table({ unlocked });
125
- }
126
- catch (err) {
127
- if (err instanceof Error) {
128
- program.error(err.message);
129
- }
130
- }
131
- });
132
- // Works
133
- vault
134
- .command('locked')
135
- .description('get vault locked')
136
- .argument('<address>', 'vault address')
137
- .action(async (address) => {
138
- const contract = getStakingVaultContract(address);
139
- try {
140
- const locked = await contract.read.locked();
141
- console.table({ locked });
142
- }
143
- catch (err) {
144
- if (err instanceof Error) {
145
- program.error(err.message);
146
- }
147
- }
148
- });
149
- // Works
150
- vault
151
- .command('withdrawal-c')
152
- .description('get vault withdrawal credentials')
153
- .argument('<address>', 'vault address')
154
- .action(async (address) => {
155
- const contract = getStakingVaultContract(address);
156
- try {
157
- const wc = await contract.read.withdrawalCredentials();
158
- console.table({ wc });
159
- }
160
- catch (err) {
161
- if (err instanceof Error) {
162
- program.error(err.message);
163
- }
164
- }
165
- });
166
- vault
167
- .command('fund')
168
- .description('fund vault')
169
- .argument('<address>', 'vault address')
170
- .argument('<wei>', 'amount to fund (in WEI)')
171
- .action(async (address, amount) => {
172
- const contract = getStakingVaultContract(address);
173
- try {
174
- const tx = await contract.write.fund({
175
- account: getAccount(),
176
- chain: getChain(),
177
- value: BigInt(amount),
178
- });
179
- console.table({ Transaction: tx });
180
- }
181
- catch (err) {
182
- if (err instanceof Error) {
183
- program.error(err.message);
184
- }
185
- }
186
- });
187
- // TODO: investigate why only owner can fund vault
188
- vault
189
- .command('withdraw')
190
- .description('withdraw from vault')
191
- .argument('<address>', 'vault address')
192
- .argument('<recipient>', 'recipient address')
193
- .argument('<wei>', 'amount to withdraw (in WEI)')
194
- .action(async (address, recipient, amount) => {
195
- const contract = getStakingVaultContract(address);
196
- const tx = await contract.write.withdraw([recipient, BigInt(amount)], {
197
- account: getAccount(),
198
- chain: getChain(),
199
- });
200
- console.table({ Transaction: tx });
201
- });
202
- // NOs
203
- // TODO: get more details
204
- vault
205
- .command('no-deposit-beacon')
206
- .description('deposit to beacon chain')
207
- .argument('<address>', 'vault address')
208
- .argument('<amountOfDeposit>', 'amount of deposits')
209
- .argument('<pubkey>', 'pubkey')
210
- .argument('<signature>', 'signature')
211
- .argument('<depositDataRoot>', 'depositDataRoot')
212
- .action(async (vault, amountOfDeposit, pubkey, signature, depositDataRoot) => {
213
- const amount = BigInt(amountOfDeposit);
214
- const contract = getStakingVaultContract(vault);
215
- const payload = [
216
- {
217
- pubkey,
218
- signature,
219
- amount,
220
- depositDataRoot,
221
- },
222
- ];
223
- try {
224
- const tx = await contract.write.depositToBeaconChain([payload], {
225
- account: getAccount(),
226
- chain: getChain(),
227
- });
228
- console.table({ Transaction: tx });
229
- }
230
- catch (err) {
231
- if (err instanceof Error) {
232
- program.error(err.message);
233
- }
234
- }
235
- });
236
- // TODO: get more details
237
- vault
238
- .command('no-val-exit')
239
- .description('request to exit validator')
240
- .argument('<address>', 'vault address')
241
- .argument('<validatorPublicKey>', 'validator public key')
242
- .action(async (address, validatorPublicKey) => {
243
- const contract = getStakingVaultContract(address);
244
- try {
245
- const tx = await contract.write.requestValidatorExit([validatorPublicKey], {
246
- account: getAccount(),
247
- chain: getChain(),
248
- });
249
- console.table({ Transaction: tx });
250
- }
251
- catch (err) {
252
- if (err instanceof Error) {
253
- program.error(err.message);
254
- }
255
- }
256
- });
257
- // Works
258
- vault
259
- .command('delta')
260
- .description('the net difference between deposits and withdrawals')
261
- .argument('<address>', 'vault address')
262
- .action(async (address) => {
263
- const contract = getStakingVaultContract(address);
264
- try {
265
- const inOutDelta = await contract.read.inOutDelta();
266
- console.table({ 'In Out Delta': inOutDelta });
267
- }
268
- catch (err) {
269
- if (err instanceof Error) {
270
- program.error(err.message);
271
- }
272
- }
273
- });
274
- vault
275
- .command('is-paused')
276
- .description('Returns whether deposits are paused by the vault owner')
277
- .argument('<address>', 'vault address')
278
- .action(async (address) => {
279
- const contract = getStakingVaultContract(address);
280
- try {
281
- const isPaused = await contract.read.beaconChainDepositsPaused();
282
- console.table({ 'Is paused': isPaused });
283
- }
284
- catch (err) {
285
- if (err instanceof Error) {
286
- program.error(err.message);
287
- }
288
- }
289
- });
290
- vault
291
- .command('bc-resume')
292
- .description('Resumes deposits to beacon chain')
293
- .argument('<address>', 'vault address')
294
- .action(async (address) => {
295
- const contract = getStakingVaultContract(address);
296
- try {
297
- const tx = await contract.write.resumeBeaconChainDeposits({
298
- account: getAccount(),
299
- chain: getChain(),
300
- });
301
- console.table({ Transaction: tx });
302
- }
303
- catch (err) {
304
- if (err instanceof Error) {
305
- program.error(err.message);
306
- }
307
- }
308
- });
309
- vault
310
- .command('bc-pause')
311
- .description('Pauses deposits to beacon chain')
312
- .argument('<address>', 'vault address')
313
- .action(async (address) => {
314
- const contract = getStakingVaultContract(address);
315
- try {
316
- const tx = await contract.write.pauseBeaconChainDeposits({
317
- account: getAccount(),
318
- chain: getChain(),
319
- });
320
- console.table({ Transaction: tx });
321
- }
322
- catch (err) {
323
- if (err instanceof Error) {
324
- program.error(err.message);
325
- }
326
- }
327
- });
328
- vault
329
- .command('report')
330
- .description('Submits a report containing valuation, inOutDelta, and locked amount')
331
- .argument('<address>', 'vault address')
332
- .argument('<valuation>', 'New total valuation: validator balances + StakingVault balance')
333
- .argument('<inOutDelta>', 'New net difference between funded and withdrawn ether')
334
- .argument('<locked>', 'New amount of locked ether')
335
- .action(async (address, valuation, inOutDelta, locked) => {
336
- const contract = getStakingVaultContract(address);
337
- try {
338
- const tx = await contract.write.report([BigInt(valuation), BigInt(inOutDelta), BigInt(locked)], {
339
- account: getAccount(),
340
- chain: getChain(),
341
- });
342
- console.table({ Transaction: tx });
343
- }
344
- catch (err) {
345
- if (err instanceof Error) {
346
- program.error(err.message);
347
- }
348
- }
349
- });
350
- vault
351
- .command('compute-deposit')
352
- .description('Computes the deposit data root for a validator deposit')
353
- .argument('<address>', 'vault address')
354
- .argument('<pubkey>', 'Validator public key, 48 bytes')
355
- .argument('<withdrawalCredentials>', 'Withdrawal credentials, 32 bytes')
356
- .argument('<signature>', 'Signature of the deposit, 96 bytes')
357
- .argument('<amount>', 'Amount of ether to deposit, in wei')
358
- .action(async (address, pubkey, withdrawalCredentials, signature, amount) => {
359
- const contract = getStakingVaultContract(address);
360
- try {
361
- const encodedData = await contract.read.computeDepositDataRoot([
362
- pubkey,
363
- withdrawalCredentials,
364
- signature,
365
- BigInt(amount),
366
- ]);
367
- console.table({ 'Encoded data': encodedData });
368
- }
369
- catch (err) {
370
- if (err instanceof Error) {
371
- program.error(err.message);
372
- }
373
- }
374
- });
375
- //# sourceMappingURL=vault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../programs/vault.ts"],"names":[],"mappings":"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"}