@lidofinance/lsv-cli 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (211) hide show
  1. package/README.md +542 -1
  2. package/dist/abi/CLProofVerifier.js +279 -0
  3. package/dist/abi/CLProofVerifier.js.map +1 -0
  4. package/dist/abi/Dashboard.js +1498 -0
  5. package/dist/abi/Dashboard.js.map +1 -0
  6. package/dist/abi/Delegation.js +1786 -0
  7. package/dist/abi/Delegation.js.map +1 -0
  8. package/dist/abi/LidoLocator.js +426 -0
  9. package/dist/abi/LidoLocator.js.map +1 -0
  10. package/dist/abi/PredepositGuarantee.js +1733 -0
  11. package/dist/abi/PredepositGuarantee.js.map +1 -0
  12. package/dist/abi/StEth.js +493 -0
  13. package/dist/abi/StEth.js.map +1 -0
  14. package/dist/abi/StakingVault.js +978 -0
  15. package/dist/abi/StakingVault.js.map +1 -0
  16. package/dist/abi/TokenManager.js +756 -0
  17. package/dist/abi/TokenManager.js.map +1 -0
  18. package/dist/abi/VaultFactory.js +246 -0
  19. package/dist/abi/VaultFactory.js.map +1 -0
  20. package/dist/abi/VaultHub.js +1138 -439
  21. package/dist/abi/VaultHub.js.map +1 -1
  22. package/dist/abi/VaultHubViewer.js +297 -0
  23. package/dist/abi/VaultHubViewer.js.map +1 -0
  24. package/dist/abi/Voting.js +884 -0
  25. package/dist/abi/Voting.js.map +1 -0
  26. package/dist/abi/index.js +13 -0
  27. package/dist/abi/index.js.map +1 -0
  28. package/dist/command/index.js +4 -5
  29. package/dist/command/index.js.map +1 -1
  30. package/dist/configs/constants.js +3 -0
  31. package/dist/configs/constants.js.map +1 -0
  32. package/dist/configs/deployed.js +114 -53
  33. package/dist/configs/deployed.js.map +1 -1
  34. package/dist/configs/envs.js +10 -28
  35. package/dist/configs/envs.js.map +1 -1
  36. package/dist/configs/index.js +3 -18
  37. package/dist/configs/index.js.map +1 -1
  38. package/dist/configs/utils.js +26 -0
  39. package/dist/configs/utils.js.map +1 -0
  40. package/dist/contracts/clProofVerifier.js +29 -0
  41. package/dist/contracts/clProofVerifier.js.map +1 -0
  42. package/dist/contracts/dashboard.js +11 -0
  43. package/dist/contracts/dashboard.js.map +1 -0
  44. package/dist/contracts/delegation.js +11 -0
  45. package/dist/contracts/delegation.js.map +1 -0
  46. package/dist/contracts/index.js +12 -17
  47. package/dist/contracts/index.js.map +1 -1
  48. package/dist/contracts/locator.js +16 -0
  49. package/dist/contracts/locator.js.map +1 -0
  50. package/dist/contracts/pdg.js +17 -0
  51. package/dist/contracts/pdg.js.map +1 -0
  52. package/dist/contracts/steth.js +15 -0
  53. package/dist/contracts/steth.js.map +1 -0
  54. package/dist/contracts/token-manager.js +16 -0
  55. package/dist/contracts/token-manager.js.map +1 -0
  56. package/dist/contracts/vault-factory.js +14 -0
  57. package/dist/contracts/vault-factory.js.map +1 -0
  58. package/dist/contracts/vault-hub-viewer.js +14 -0
  59. package/dist/contracts/vault-hub-viewer.js.map +1 -0
  60. package/dist/contracts/vault-hub.js +14 -17
  61. package/dist/contracts/vault-hub.js.map +1 -1
  62. package/dist/contracts/vault.js +14 -0
  63. package/dist/contracts/vault.js.map +1 -0
  64. package/dist/contracts/voting.js +18 -0
  65. package/dist/contracts/voting.js.map +1 -0
  66. package/dist/features/advanced-config.js +16 -0
  67. package/dist/features/advanced-config.js.map +1 -0
  68. package/dist/features/dashboard-delegation.js +25 -0
  69. package/dist/features/dashboard-delegation.js.map +1 -0
  70. package/dist/features/index.js +5 -0
  71. package/dist/features/index.js.map +1 -0
  72. package/dist/features/token-manager.js +7 -0
  73. package/dist/features/token-manager.js.map +1 -0
  74. package/dist/features/vault-factory.js +25 -0
  75. package/dist/features/vault-factory.js.map +1 -0
  76. package/dist/features/voting.js +125 -0
  77. package/dist/features/voting.js.map +1 -0
  78. package/dist/index.js +6 -5
  79. package/dist/index.js.map +1 -1
  80. package/dist/programs/account.js +29 -0
  81. package/dist/programs/account.js.map +1 -0
  82. package/dist/programs/config.js +31 -0
  83. package/dist/programs/config.js.map +1 -0
  84. package/dist/programs/dashboard/config.js +65 -0
  85. package/dist/programs/dashboard/config.js.map +1 -0
  86. package/dist/programs/dashboard/index.js +4 -0
  87. package/dist/programs/dashboard/index.js.map +1 -0
  88. package/dist/programs/dashboard/main.js +12 -0
  89. package/dist/programs/dashboard/main.js.map +1 -0
  90. package/dist/programs/dashboard/read.js +25 -0
  91. package/dist/programs/dashboard/read.js.map +1 -0
  92. package/dist/programs/dashboard/write.js +302 -0
  93. package/dist/programs/dashboard/write.js.map +1 -0
  94. package/dist/programs/delegation/config.js +33 -0
  95. package/dist/programs/delegation/config.js.map +1 -0
  96. package/dist/programs/delegation/index.js +4 -0
  97. package/dist/programs/delegation/index.js.map +1 -0
  98. package/dist/programs/delegation/main.js +12 -0
  99. package/dist/programs/delegation/main.js.map +1 -0
  100. package/dist/programs/delegation/read.js +98 -0
  101. package/dist/programs/delegation/read.js.map +1 -0
  102. package/dist/programs/delegation/write.js +327 -0
  103. package/dist/programs/delegation/write.js.map +1 -0
  104. package/dist/programs/hub/config.js +127 -0
  105. package/dist/programs/hub/config.js.map +1 -0
  106. package/dist/programs/hub/index.js +4 -0
  107. package/dist/programs/hub/index.js.map +1 -0
  108. package/dist/programs/hub/main.js +12 -0
  109. package/dist/programs/hub/main.js.map +1 -0
  110. package/dist/programs/hub/read.js +62 -0
  111. package/dist/programs/hub/read.js.map +1 -0
  112. package/dist/programs/hub/write.js +109 -0
  113. package/dist/programs/hub/write.js.map +1 -0
  114. package/dist/programs/index.js +10 -17
  115. package/dist/programs/index.js.map +1 -1
  116. package/dist/programs/pdg/config.js +97 -0
  117. package/dist/programs/pdg/config.js.map +1 -0
  118. package/dist/programs/pdg/index.js +4 -0
  119. package/dist/programs/pdg/index.js.map +1 -0
  120. package/dist/programs/pdg/main.js +12 -0
  121. package/dist/programs/pdg/main.js.map +1 -0
  122. package/dist/programs/pdg/read.js +7 -0
  123. package/dist/programs/pdg/read.js.map +1 -0
  124. package/dist/programs/pdg/write.js +114 -0
  125. package/dist/programs/pdg/write.js.map +1 -0
  126. package/dist/programs/pdg-helpers.js +73 -0
  127. package/dist/programs/pdg-helpers.js.map +1 -0
  128. package/dist/programs/vault/config.js +66 -0
  129. package/dist/programs/vault/config.js.map +1 -0
  130. package/dist/programs/vault/index.js +4 -0
  131. package/dist/programs/vault/index.js.map +1 -0
  132. package/dist/programs/vault/main.js +10 -0
  133. package/dist/programs/vault/main.js.map +1 -0
  134. package/dist/programs/vault/read.js +53 -0
  135. package/dist/programs/vault/read.js.map +1 -0
  136. package/dist/programs/vault/write.js +123 -0
  137. package/dist/programs/vault/write.js.map +1 -0
  138. package/dist/programs/vault-factory/config.js +2 -0
  139. package/dist/programs/vault-factory/config.js.map +1 -0
  140. package/dist/programs/vault-factory/index.js +4 -0
  141. package/dist/programs/vault-factory/index.js.map +1 -0
  142. package/dist/programs/vault-factory/main.js +12 -0
  143. package/dist/programs/vault-factory/main.js.map +1 -0
  144. package/dist/programs/vault-factory/read.js +26 -0
  145. package/dist/programs/vault-factory/read.js.map +1 -0
  146. package/dist/programs/vault-factory/write.js +110 -0
  147. package/dist/programs/vault-factory/write.js.map +1 -0
  148. package/dist/programs/vault-hub-viewer.js +52 -0
  149. package/dist/programs/vault-hub-viewer.js.map +1 -0
  150. package/dist/programs/voting.js +33 -0
  151. package/dist/programs/voting.js.map +1 -0
  152. package/dist/providers/index.js +1 -17
  153. package/dist/providers/index.js.map +1 -1
  154. package/dist/providers/wallet.js +20 -32
  155. package/dist/providers/wallet.js.map +1 -1
  156. package/dist/types/common.js +2 -0
  157. package/dist/types/common.js.map +1 -0
  158. package/dist/types/config.js +2 -0
  159. package/dist/types/config.js.map +1 -0
  160. package/dist/types/index.js +3 -0
  161. package/dist/types/index.js.map +1 -0
  162. package/dist/utils/contract.js +98 -0
  163. package/dist/utils/contract.js.map +1 -0
  164. package/dist/utils/data-validators.js +69 -0
  165. package/dist/utils/data-validators.js.map +1 -0
  166. package/dist/utils/error-handler.js +7 -0
  167. package/dist/utils/error-handler.js.map +1 -0
  168. package/dist/utils/get-commands.js +11 -0
  169. package/dist/utils/get-commands.js.map +1 -0
  170. package/dist/utils/get-value.js +5 -11
  171. package/dist/utils/get-value.js.map +1 -1
  172. package/dist/utils/index.js +12 -17
  173. package/dist/utils/index.js.map +1 -1
  174. package/dist/utils/parse-string.js +20 -0
  175. package/dist/utils/parse-string.js.map +1 -0
  176. package/dist/utils/prompts/default.js +17 -0
  177. package/dist/utils/prompts/default.js.map +1 -0
  178. package/dist/utils/prompts/delegation-dashboard.js +29 -0
  179. package/dist/utils/prompts/delegation-dashboard.js.map +1 -0
  180. package/dist/utils/prompts/index.js +5 -0
  181. package/dist/utils/prompts/index.js.map +1 -0
  182. package/dist/utils/prompts/predeposit-guarantee.js +25 -0
  183. package/dist/utils/prompts/predeposit-guarantee.js.map +1 -0
  184. package/dist/utils/prompts/vault.js +11 -0
  185. package/dist/utils/prompts/vault.js.map +1 -0
  186. package/dist/utils/proof/create-proof.js +62 -0
  187. package/dist/utils/proof/create-proof.js.map +1 -0
  188. package/dist/utils/proof/first-validator-gindex.js +26 -0
  189. package/dist/utils/proof/first-validator-gindex.js.map +1 -0
  190. package/dist/utils/proof/index.js +4 -0
  191. package/dist/utils/proof/index.js.map +1 -0
  192. package/dist/utils/proof/merkle-utils.js +131 -0
  193. package/dist/utils/proof/merkle-utils.js.map +1 -0
  194. package/dist/utils/proof/proofs.js +52 -0
  195. package/dist/utils/proof/proofs.js.map +1 -0
  196. package/dist/utils/read-programs-by-abi.js +87 -0
  197. package/dist/utils/read-programs-by-abi.js.map +1 -0
  198. package/dist/utils/resolve-path.js +10 -0
  199. package/dist/utils/resolve-path.js.map +1 -0
  200. package/dist/utils/sleep.js +4 -0
  201. package/dist/utils/sleep.js.map +1 -0
  202. package/dist/utils/spinner/index.js +2 -0
  203. package/dist/utils/spinner/index.js.map +1 -0
  204. package/dist/utils/spinner/spinners.js +16 -0
  205. package/dist/utils/spinner/spinners.js.map +1 -0
  206. package/dist/utils/spinner/spinners.json +119 -0
  207. package/dist/version/index.js +1 -0
  208. package/dist/version/index.js.map +1 -0
  209. package/package.json +52 -7
  210. package/dist/programs/vault-hub.js +0 -137
  211. package/dist/programs/vault-hub.js.map +0 -1
@@ -0,0 +1,302 @@
1
+ import { getDashboardContract } from '../../contracts/index.js';
2
+ import { callWriteMethodWithReceipt, confirmFund } from '../../utils/index.js';
3
+ import { dashboard } from './main.js';
4
+ // TODO: test without voting
5
+ dashboard
6
+ .command('ownership')
7
+ .description('transfers ownership of the staking vault to a new owner')
8
+ .argument('<address>', 'dashboard address')
9
+ .argument('<newOwner>', 'address of the new owner')
10
+ .action(async (address, newOwner) => {
11
+ const contract = getDashboardContract(address);
12
+ await callWriteMethodWithReceipt(contract, 'transferStakingVaultOwnership', [newOwner]);
13
+ });
14
+ dashboard
15
+ .command('disconnect')
16
+ .description('disconnects the staking vault from the vault hub')
17
+ .argument('<address>', 'dashboard address')
18
+ .action(async (address) => {
19
+ const contract = getDashboardContract(address);
20
+ await callWriteMethodWithReceipt(contract, 'voluntaryDisconnect', []);
21
+ });
22
+ dashboard
23
+ .command('fund')
24
+ .description('funds the staking vault with ether')
25
+ .option('-a, --address <address>', 'dashboard address')
26
+ .option('-e, --ether <ether>', 'amount of ether to be funded (in WEI)')
27
+ .action(async ({ address, ether }) => {
28
+ const { address: dashboard, amount } = await confirmFund(address, ether);
29
+ if (!dashboard || !amount)
30
+ return;
31
+ const contract = getDashboardContract(dashboard);
32
+ await callWriteMethodWithReceipt(contract, 'fund', [], BigInt(amount));
33
+ });
34
+ dashboard
35
+ .command('fund-weth')
36
+ .description('funds the staking vault with wrapped ether')
37
+ .argument('<address>', 'dashboard address')
38
+ .argument('<wethAmount>', 'amount of weth to be funded')
39
+ .action(async (address, wethAmount) => {
40
+ const contract = getDashboardContract(address);
41
+ await callWriteMethodWithReceipt(contract, 'fundWeth', [
42
+ BigInt(wethAmount),
43
+ ]);
44
+ });
45
+ dashboard
46
+ .command('withdraw')
47
+ .description('withdraws ether from the staking vault to a recipient')
48
+ .argument('<address>', 'dashboard address')
49
+ .argument('<recipient>', 'address of the recipient')
50
+ .argument('<wei>', 'amount of ether to withdraw (in WEI)')
51
+ .action(async (address, recipient, ether) => {
52
+ const contract = getDashboardContract(address);
53
+ await callWriteMethodWithReceipt(contract, 'withdraw', [
54
+ recipient,
55
+ BigInt(ether),
56
+ ]);
57
+ });
58
+ dashboard
59
+ .command('withdraw-weth')
60
+ .description('withdraws stETH tokens from the staking vault to wrapped ether')
61
+ .argument('<address>', 'dashboard address')
62
+ .argument('<recipient>', 'address of the recipient')
63
+ .argument('<ether>', 'amount of ether to withdraw')
64
+ .action(async (address, recipient, ether) => {
65
+ const contract = getDashboardContract(address);
66
+ await callWriteMethodWithReceipt(contract, 'withdrawWETH', [
67
+ recipient,
68
+ BigInt(ether),
69
+ ]);
70
+ });
71
+ dashboard
72
+ .command('exit')
73
+ .description('requests the exit of a validator from the staking vault')
74
+ .argument('<address>', 'dashboard address')
75
+ .argument('<validatorPubKey>', 'public key of the validator to exit')
76
+ .action(async (address, validatorPubKey) => {
77
+ const contract = getDashboardContract(address);
78
+ await callWriteMethodWithReceipt(contract, 'requestValidatorExit', [
79
+ validatorPubKey,
80
+ ]);
81
+ });
82
+ dashboard
83
+ .command('trigger-validator-withdrawal')
84
+ .description('triggers the withdrawal of a validator from the staking vault')
85
+ .argument('<address>', 'dashboard address')
86
+ .argument('<pubkeys>', 'pubkeys of the validators to withdraw')
87
+ .argument('<amounts>', 'amounts of ether to withdraw')
88
+ .argument('<recipient>', 'address of the recipient')
89
+ .action(async (address, pubkeys, amounts, recipient) => {
90
+ const contract = getDashboardContract(address);
91
+ await callWriteMethodWithReceipt(contract, 'triggerValidatorWithdrawal', [
92
+ pubkeys,
93
+ amounts.map(BigInt),
94
+ recipient,
95
+ ]);
96
+ });
97
+ dashboard
98
+ .command('mint-shares')
99
+ .description('mints stETH tokens backed by the vault to a recipient')
100
+ .argument('<address>', 'dashboard address')
101
+ .argument('<recipient>', 'address of the recipient')
102
+ .argument('<amountOfShares>', 'amount of shares to mint')
103
+ .action(async (address, recipient, amountOfShares) => {
104
+ const contract = getDashboardContract(address);
105
+ await callWriteMethodWithReceipt(contract, 'mintShares', [
106
+ recipient,
107
+ BigInt(amountOfShares),
108
+ ]);
109
+ });
110
+ dashboard
111
+ .command('mint-steth')
112
+ .description('mints stETH tokens backed by the vault to a recipient')
113
+ .argument('<address>', 'dashboard address')
114
+ .argument('<recipient>', 'address of the recipient')
115
+ .argument('<amountOfShares>', 'amount of shares to mint')
116
+ .action(async (address, recipient, amountOfShares) => {
117
+ const contract = getDashboardContract(address);
118
+ await callWriteMethodWithReceipt(contract, 'mintStETH', [
119
+ recipient,
120
+ BigInt(amountOfShares),
121
+ ]);
122
+ });
123
+ dashboard
124
+ .command('mint-wsteth')
125
+ .description('mints wstETH tokens backed by the vault to a recipient')
126
+ .argument('<address>', 'dashboard address')
127
+ .argument('<recipient>', 'address of the recipient')
128
+ .argument('<tokens>', 'amount of tokens to mint')
129
+ .action(async (address, recipient, tokens) => {
130
+ const contract = getDashboardContract(address);
131
+ await callWriteMethodWithReceipt(contract, 'mintWstETH', [
132
+ recipient,
133
+ BigInt(tokens),
134
+ ]);
135
+ });
136
+ dashboard
137
+ .command('burn-shares')
138
+ .description('Burns stETH shares from the sender backed by the vault. Expects corresponding amount of stETH approved to this contract')
139
+ .argument('<address>', 'dashboard address')
140
+ .argument('<amountOfShares>', 'amount of shares to burn')
141
+ .action(async (address, amountOfShares) => {
142
+ const contract = getDashboardContract(address);
143
+ await callWriteMethodWithReceipt(contract, 'burnShares', [
144
+ BigInt(amountOfShares),
145
+ ]);
146
+ });
147
+ dashboard
148
+ .command('burn-steth')
149
+ .description('Burns stETH shares from the sender backed by the vault. Expects stETH amount approved to this contract.')
150
+ .argument('<address>', 'dashboard address')
151
+ .argument('<amountOfShares>', 'amount of shares to burn')
152
+ .action(async (address, amountOfShares) => {
153
+ const contract = getDashboardContract(address);
154
+ await callWriteMethodWithReceipt(contract, 'burnStETH', [
155
+ BigInt(amountOfShares),
156
+ ]);
157
+ });
158
+ dashboard
159
+ .command('burn-wsteth')
160
+ .description('burn wstETH tokens from the sender backed by the vault')
161
+ .argument('<address>', 'dashboard address')
162
+ .argument('<tokens>', 'amount of wstETH tokens to burn')
163
+ .action(async (address, tokens) => {
164
+ const contract = getDashboardContract(address);
165
+ await callWriteMethodWithReceipt(contract, 'burnWstETH', [BigInt(tokens)]);
166
+ });
167
+ dashboard
168
+ .command('burn-shares-permit')
169
+ .description('Burns stETH tokens (in shares) backed by the vault from the sender using permit (with value in stETH).')
170
+ .argument('<address>', 'dashboard address')
171
+ .argument('<tokens>', 'amount of stETH tokens to burn')
172
+ .argument('<permitJSON>', 'JSON data required for the stETH.permit() method to set the allowance')
173
+ .action(async (address, tokens, permitJSON) => {
174
+ const permit = JSON.parse(permitJSON);
175
+ const contract = getDashboardContract(address);
176
+ await callWriteMethodWithReceipt(contract, 'burnSharesWithPermit', [
177
+ BigInt(tokens),
178
+ permit,
179
+ ]);
180
+ });
181
+ dashboard
182
+ .command('burn-steth-permit')
183
+ .description('Burns stETH tokens backed by the vault from the sender using permit.')
184
+ .argument('<address>', 'dashboard address')
185
+ .argument('<tokens>', 'amount of stETH tokens to burn')
186
+ .argument('<permitJSON>', 'JSON data required for the stETH.permit() method to set the allowance')
187
+ .action(async (address, tokens, permitJSON) => {
188
+ const permit = JSON.parse(permitJSON);
189
+ const contract = getDashboardContract(address);
190
+ await callWriteMethodWithReceipt(contract, 'burnStETHWithPermit', [
191
+ BigInt(tokens),
192
+ permit,
193
+ ]);
194
+ });
195
+ dashboard
196
+ .command('burn-wsteth-permit')
197
+ .description('burn wstETH tokens from the sender backed by the vault using EIP-2612 Permit')
198
+ .argument('<address>', 'dashboard address')
199
+ .argument('<tokens>', 'amount of wstETH tokens to burn')
200
+ .argument('<permitJSON>', 'JSON data required for the wstETH.permit() method to set the allowance')
201
+ .action(async (address, tokens, permitJSON) => {
202
+ const permit = JSON.parse(permitJSON);
203
+ const contract = getDashboardContract(address);
204
+ await callWriteMethodWithReceipt(contract, 'burnWstETHWithPermit', [
205
+ BigInt(tokens),
206
+ permit,
207
+ ]);
208
+ });
209
+ dashboard
210
+ .command('rebalance')
211
+ .description('rebalance the vault by transferring ether')
212
+ .argument('<address>', 'dashboard address')
213
+ .argument('<ether>', 'amount of ether to rebalance')
214
+ .action(async (address, ether) => {
215
+ const contract = getDashboardContract(address);
216
+ await callWriteMethodWithReceipt(contract, 'rebalanceVault', [
217
+ BigInt(ether),
218
+ ]);
219
+ });
220
+ dashboard
221
+ .command('recover-erc20')
222
+ .description('recovers ERC20 tokens or ether from the dashboard contract to sender')
223
+ .argument('<address>', 'dashboard address')
224
+ .argument('<token>', 'Address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether')
225
+ .argument('<recipient>', 'Address of the recovery recipient')
226
+ .argument('<amount>', 'amount of ether to recover')
227
+ .action(async (address, token, recipient, amount) => {
228
+ const contract = getDashboardContract(address);
229
+ await callWriteMethodWithReceipt(contract, 'recoverERC20', [
230
+ token,
231
+ recipient,
232
+ BigInt(amount),
233
+ ]);
234
+ });
235
+ dashboard
236
+ .command('recover-erc721')
237
+ .description('Transfers a given token_id of an ERC721-compatible NFT (defined by the token contract address)')
238
+ .argument('<address>', 'dashboard address')
239
+ .argument('<token>', 'an ERC721-compatible token')
240
+ .argument('<tokenId>', 'token id to recover')
241
+ .argument('<recipient>', 'Address of the recovery recipient')
242
+ .action(async (address, token, tokenId, recipient) => {
243
+ const contract = getDashboardContract(address);
244
+ await callWriteMethodWithReceipt(contract, 'recoverERC721', [
245
+ token,
246
+ BigInt(tokenId),
247
+ recipient,
248
+ ]);
249
+ });
250
+ dashboard
251
+ .command('deposit-pause')
252
+ .description('Pauses beacon chain deposits on the staking vault.')
253
+ .argument('<address>', 'dashboard address')
254
+ .action(async (address) => {
255
+ const contract = getDashboardContract(address);
256
+ await callWriteMethodWithReceipt(contract, 'pauseBeaconChainDeposits', []);
257
+ });
258
+ dashboard
259
+ .command('deposit-resume')
260
+ .description('Mass-grants multiple roles to multiple accounts.')
261
+ .argument('<address>', 'dashboard address')
262
+ .action(async (address) => {
263
+ const contract = getDashboardContract(address);
264
+ await callWriteMethodWithReceipt(contract, 'resumeBeaconChainDeposits', []);
265
+ });
266
+ dashboard
267
+ .command('role-grant')
268
+ .description('Mass-revokes multiple roles from multiple accounts.')
269
+ .argument('<address>', 'dashboard address')
270
+ .argument('<roleAssignmentJSON>', 'JSON array of role assignments')
271
+ .action(async (address, roleAssignmentJSON) => {
272
+ const contract = getDashboardContract(address);
273
+ const payload = JSON.parse(roleAssignmentJSON);
274
+ if (!Array.isArray(payload)) {
275
+ throw new Error('the 2nd argument should be an array of role assignments');
276
+ }
277
+ await callWriteMethodWithReceipt(contract, 'grantRoles', [payload]);
278
+ });
279
+ dashboard
280
+ .command('role-revoke')
281
+ .description('Resumes beacon chain deposits on the staking vault.')
282
+ .argument('<address>', 'dashboard address')
283
+ .argument('<roleAssignmentJSON>', 'JSON array of role assignments')
284
+ .action(async (address, roleAssignmentJSON) => {
285
+ const contract = getDashboardContract(address);
286
+ const payload = JSON.parse(roleAssignmentJSON);
287
+ if (!Array.isArray(payload)) {
288
+ throw new Error('the 2nd argument should be an array of role assignments');
289
+ }
290
+ await callWriteMethodWithReceipt(contract, 'revokeRoles', [payload]);
291
+ });
292
+ dashboard
293
+ .command('compensate-disproven-predeposit')
294
+ .description('Compensates a disproven predeposit from the Predeposit Guarantee contract.')
295
+ .argument('<address>', 'dashboard address')
296
+ .argument('<pubkey>', 'validator public key')
297
+ .argument('<recipient>', 'address of the recipient')
298
+ .action(async (address, pubkey, recipient) => {
299
+ const contract = getDashboardContract(address);
300
+ await callWriteMethodWithReceipt(contract, 'compensateDisprovenPredepositFromPDG', [pubkey, recipient]);
301
+ });
302
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/dashboard/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { readCommandConfig as dashboardReadCommandConfig } from '../../programs/dashboard/config.js';
2
+ export const readCommandConfig = {
3
+ ...dashboardReadCommandConfig,
4
+ nodeOperatorFeeBP: {
5
+ name: 'no-fee',
6
+ description: 'get node operator fee in basis points',
7
+ },
8
+ nodeOperatorFeeClaimedReport: {
9
+ name: 'no-fee-report',
10
+ description: 'get node operator fee claimed report',
11
+ },
12
+ nodeOperatorUnclaimedFee: {
13
+ name: 'no-unclaimed-fee',
14
+ description: `Returns the accumulated unclaimed node operator fee in ether,
15
+ calculated as: U = (R * F) / T
16
+ where:
17
+ - U is the node operator unclaimed fee;
18
+ - R is the StakingVault rewards accrued since the last node operator fee claim;
19
+ - F is nodeOperatorFeeBP
20
+ - T is the total basis points, 10,000.`,
21
+ },
22
+ curatorUnclaimedFee: {
23
+ name: 'cf-unclaimed',
24
+ description: `Returns the accumulated unclaimed curator fee in ether,
25
+ calculated as: U = (R * F) / T
26
+ where:
27
+ - U is the curator unclaimed fee;
28
+ - R is the StakingVault rewards accrued since the last curator fee claim;
29
+ - F is curatorFeeBP
30
+ - T is the total basis points, 10,000.`,
31
+ },
32
+ };
33
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../programs/delegation/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/F,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,GAAG,0BAA0B;IAC7B,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uCAAuC;KACrD;IACD,4BAA4B,EAAE;QAC5B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sCAAsC;KACpD;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE;;;;;;uDAMsC;KACpD;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;;;;;;uDAMsC;KACpD;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './main.js';
2
+ export * from './read.js';
3
+ export * from './write.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../programs/delegation/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { program } from '../../command/index.js';
2
+ import { Option } from 'commander';
3
+ import { getCommandsJson } from '../../utils/index.js';
4
+ export const delegation = program
5
+ .command('delegation')
6
+ .description('delegation contract');
7
+ delegation.addOption(new Option('-cmd2json'));
8
+ delegation.on('option:-cmd2json', function () {
9
+ console.info(getCommandsJson(delegation));
10
+ process.exit();
11
+ });
12
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../programs/delegation/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,UAAU,GAAG,OAAO;KAC9B,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAEtC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9C,UAAU,CAAC,EAAE,CAAC,kBAAkB,EAAE;IAChC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { DelegationAbi } from '../../abi/index.js';
2
+ import { getDelegationContract, getStakingVaultContract } from '../../contracts/index.js';
3
+ import { generateReadCommands } from '../../utils/index.js';
4
+ import { getBaseInfo } from '../../features/index.js';
5
+ import { delegation } from './main.js';
6
+ import { readCommandConfig } from './config.js';
7
+ generateReadCommands(DelegationAbi, getDelegationContract, delegation, readCommandConfig);
8
+ delegation
9
+ .command('roles')
10
+ .description('get delegation contract roles info')
11
+ .argument('<address>', 'delegation contract address')
12
+ .action(async (address) => {
13
+ const contract = getDelegationContract(address);
14
+ // TODO: check roles
15
+ try {
16
+ const CURATOR_FEE_CLAIM_ROLE = await contract.read.CURATOR_FEE_CLAIM_ROLE();
17
+ const CURATOR_FEE_SET_ROLE = await contract.read.CURATOR_FEE_SET_ROLE();
18
+ const NODE_OPERATOR_MANAGER_ROLE = await contract.read.NODE_OPERATOR_MANAGER_ROLE();
19
+ const NODE_OPERATOR_FEE_CLAIMER_ROLE = await contract.read.NODE_OPERATOR_FEE_CLAIM_ROLE();
20
+ const FUND_ROLE = await contract.read.FUND_ROLE();
21
+ const WITHDRAW_ROLE = await contract.read.WITHDRAW_ROLE();
22
+ const MINT_ROLE = await contract.read.MINT_ROLE();
23
+ const BURN_ROLE = await contract.read.BURN_ROLE();
24
+ const REBALANCE_ROLE = await contract.read.REBALANCE_ROLE();
25
+ const PAUSE_BEACON_CHAIN_DEPOSITS_ROLE = await contract.read.PAUSE_BEACON_CHAIN_DEPOSITS_ROLE();
26
+ const RESUME_BEACON_CHAIN_DEPOSITS_ROLE = await contract.read.RESUME_BEACON_CHAIN_DEPOSITS_ROLE();
27
+ const REQUEST_VALIDATOR_EXIT_ROLE = await contract.read.REQUEST_VALIDATOR_EXIT_ROLE();
28
+ const VOLUNTARY_DISCONNECT_ROLE = await contract.read.VOLUNTARY_DISCONNECT_ROLE();
29
+ const TRIGGER_VALIDATOR_WITHDRAWAL_ROLE = await contract.read.TRIGGER_VALIDATOR_WITHDRAWAL_ROLE();
30
+ const PDG_WITHDRAWAL_ROLE = await contract.read.PDG_WITHDRAWAL_ROLE();
31
+ const ASSET_RECOVERY_ROLE = await contract.read.ASSET_RECOVERY_ROLE();
32
+ const payload = {
33
+ CURATOR_FEE_CLAIM_ROLE,
34
+ CURATOR_FEE_SET_ROLE,
35
+ NODE_OPERATOR_MANAGER_ROLE,
36
+ NODE_OPERATOR_FEE_CLAIMER_ROLE,
37
+ FUND_ROLE,
38
+ WITHDRAW_ROLE,
39
+ MINT_ROLE,
40
+ BURN_ROLE,
41
+ REBALANCE_ROLE,
42
+ PAUSE_BEACON_CHAIN_DEPOSITS_ROLE,
43
+ RESUME_BEACON_CHAIN_DEPOSITS_ROLE,
44
+ REQUEST_VALIDATOR_EXIT_ROLE,
45
+ VOLUNTARY_DISCONNECT_ROLE,
46
+ TRIGGER_VALIDATOR_WITHDRAWAL_ROLE,
47
+ PDG_WITHDRAWAL_ROLE,
48
+ ASSET_RECOVERY_ROLE,
49
+ };
50
+ console.table(Object.entries(payload));
51
+ }
52
+ catch (err) {
53
+ if (err instanceof Error) {
54
+ console.info('Error when getting roles:\n', err.message);
55
+ }
56
+ }
57
+ });
58
+ delegation
59
+ .command('base-info')
60
+ .description('get delegation base info')
61
+ .argument('<address>', 'delegation address')
62
+ .action(async (address) => {
63
+ const contract = getDelegationContract(address);
64
+ await getBaseInfo(contract);
65
+ });
66
+ delegation
67
+ .command('is-healthy')
68
+ .description('get vault healthy info')
69
+ .argument('<address>', 'vault address')
70
+ .action(async (address) => {
71
+ const contract = getDelegationContract(address);
72
+ try {
73
+ const valuation = await contract.read.valuation();
74
+ const curatorUnclaimedFee = await contract.read.curatorUnclaimedFee();
75
+ const nodeOperatorUnclaimedFee = await contract.read.nodeOperatorUnclaimedFee();
76
+ const minted = await contract.read.sharesMinted();
77
+ const { vault } = await contract.read.vaultSocket();
78
+ const vaultContract = getStakingVaultContract(vault);
79
+ const locked = await vaultContract.read.locked();
80
+ const reserved = locked + curatorUnclaimedFee + nodeOperatorUnclaimedFee;
81
+ const valuationPerc = (valuation / (reserved + minted)) * 100n;
82
+ const isHealthy = valuationPerc >= 100n;
83
+ console.table({
84
+ 'Vault Healthy': isHealthy,
85
+ Valuation: valuation,
86
+ 'Curator Unclaimed Fee': curatorUnclaimedFee,
87
+ 'Node Operator Unclaimed Fee': nodeOperatorUnclaimedFee,
88
+ Minted: minted,
89
+ Reserved: reserved,
90
+ });
91
+ }
92
+ catch (err) {
93
+ if (err instanceof Error) {
94
+ console.info('Error when getting info:\n', err.message);
95
+ }
96
+ }
97
+ });
98
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../programs/delegation/read.ts"],"names":[],"mappings":"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"}