@lidofinance/lsv-cli 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +58 -0
  2. package/dist/abi/Dashboard.d.ts +268 -0
  3. package/dist/abi/Dashboard.js +2 -0
  4. package/dist/abi/Dashboard.js.map +1 -1
  5. package/dist/abi/PredepositGuarantee.d.ts +357 -88
  6. package/dist/abi/PredepositGuarantee.js +31 -28
  7. package/dist/abi/PredepositGuarantee.js.map +1 -1
  8. package/dist/abi/VaultViewer.d.ts +8 -0
  9. package/dist/abi/VaultViewer.js +10 -0
  10. package/dist/abi/VaultViewer.js.map +1 -1
  11. package/dist/command/index.js +1 -0
  12. package/dist/command/index.js.map +1 -1
  13. package/dist/configs/deployed.js +27 -8
  14. package/dist/configs/deployed.js.map +1 -1
  15. package/dist/configs/index.d.ts +4 -3
  16. package/dist/configs/index.js +4 -3
  17. package/dist/configs/index.js.map +1 -1
  18. package/dist/contracts/vault-viewer.js +2 -2
  19. package/dist/features/defi-wrapper/defi-wrapper-factory.d.ts +1 -2
  20. package/dist/features/defi-wrapper/defi-wrapper-factory.js +12 -9
  21. package/dist/features/defi-wrapper/defi-wrapper-factory.js.map +1 -1
  22. package/dist/features/deposits/index.d.ts +1 -0
  23. package/dist/features/deposits/index.js +1 -0
  24. package/dist/features/deposits/index.js.map +1 -1
  25. package/dist/features/deposits/validators.d.ts +12 -0
  26. package/dist/features/deposits/validators.js +31 -0
  27. package/dist/features/deposits/validators.js.map +1 -0
  28. package/dist/features/index.d.ts +1 -0
  29. package/dist/features/index.js +1 -0
  30. package/dist/features/index.js.map +1 -1
  31. package/dist/features/lazy-oracle.js +2 -2
  32. package/dist/features/lazy-oracle.js.map +1 -1
  33. package/dist/features/mint-burn/allowance.d.ts +7 -1
  34. package/dist/features/mint-burn/allowance.js +8 -9
  35. package/dist/features/mint-burn/allowance.js.map +1 -1
  36. package/dist/features/mint-burn/burn-shares.d.ts +2 -1
  37. package/dist/features/mint-burn/burn-shares.js +4 -3
  38. package/dist/features/mint-burn/burn-shares.js.map +1 -1
  39. package/dist/features/mint-burn/burn-steth.d.ts +2 -1
  40. package/dist/features/mint-burn/burn-steth.js +4 -3
  41. package/dist/features/mint-burn/burn-steth.js.map +1 -1
  42. package/dist/features/mint-burn/mint-shares.js +4 -6
  43. package/dist/features/mint-burn/mint-shares.js.map +1 -1
  44. package/dist/features/mint-burn/mint-steth.js +4 -6
  45. package/dist/features/mint-burn/mint-steth.js.map +1 -1
  46. package/dist/features/utils/connection.d.ts +2 -0
  47. package/dist/features/utils/connection.js +14 -0
  48. package/dist/features/utils/connection.js.map +1 -0
  49. package/dist/features/utils/index.d.ts +1 -0
  50. package/dist/features/utils/index.js +1 -0
  51. package/dist/features/utils/index.js.map +1 -1
  52. package/dist/features/utils/liability-shares.js +2 -1
  53. package/dist/features/utils/liability-shares.js.map +1 -1
  54. package/dist/features/utils/report-fresh.d.ts +11 -1
  55. package/dist/features/utils/report-fresh.js +17 -14
  56. package/dist/features/utils/report-fresh.js.map +1 -1
  57. package/dist/features/vault-factory.d.ts +13 -14
  58. package/dist/features/vault-factory.js +30 -8
  59. package/dist/features/vault-factory.js.map +1 -1
  60. package/dist/features/vault-operations/connect-vault.d.ts +4 -0
  61. package/dist/features/vault-operations/connect-vault.js +21 -0
  62. package/dist/features/vault-operations/connect-vault.js.map +1 -0
  63. package/dist/features/vault-operations/create-vault.js +6 -4
  64. package/dist/features/vault-operations/create-vault.js.map +1 -1
  65. package/dist/features/vault-operations/dashboard-by-vault.js +17 -4
  66. package/dist/features/vault-operations/dashboard-by-vault.js.map +1 -1
  67. package/dist/features/vault-operations/index.d.ts +2 -0
  68. package/dist/features/vault-operations/index.js +2 -0
  69. package/dist/features/vault-operations/index.js.map +1 -1
  70. package/dist/features/vault-operations/roles.d.ts +5 -0
  71. package/dist/features/vault-operations/roles.js +65 -0
  72. package/dist/features/vault-operations/roles.js.map +1 -0
  73. package/dist/features/vault-operations/vault-info.js +9 -3
  74. package/dist/features/vault-operations/vault-info.js.map +1 -1
  75. package/dist/features/vault-operations/vault-overview.js +5 -7
  76. package/dist/features/vault-operations/vault-overview.js.map +1 -1
  77. package/dist/features/vault-operations/vault-roles.js +1 -1
  78. package/dist/features/vault-operations/vault-roles.js.map +1 -1
  79. package/dist/features/with-report.d.ts +6 -0
  80. package/dist/features/with-report.js +18 -0
  81. package/dist/features/with-report.js.map +1 -0
  82. package/dist/index.js +32 -10
  83. package/dist/index.js.map +1 -1
  84. package/dist/programs/contracts/dashboard/write.js +39 -20
  85. package/dist/programs/contracts/dashboard/write.js.map +1 -1
  86. package/dist/programs/contracts/hub/write.js +5 -1
  87. package/dist/programs/contracts/hub/write.js.map +1 -1
  88. package/dist/programs/contracts/operator-grid/write.js +1 -1
  89. package/dist/programs/contracts/operator-grid/write.js.map +1 -1
  90. package/dist/programs/contracts/vault-factory/write.js +37 -23
  91. package/dist/programs/contracts/vault-factory/write.js.map +1 -1
  92. package/dist/programs/defi-wrapper/contracts/factory/write.js +12 -14
  93. package/dist/programs/defi-wrapper/contracts/factory/write.js.map +1 -1
  94. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js +53 -16
  95. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js.map +1 -1
  96. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js +2 -2
  97. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js.map +1 -1
  98. package/dist/programs/pdg-helpers.js +13 -9
  99. package/dist/programs/pdg-helpers.js.map +1 -1
  100. package/dist/programs/use-cases/consolidation/write.js +2 -2
  101. package/dist/programs/use-cases/consolidation/write.js.map +1 -1
  102. package/dist/programs/use-cases/vault-operations/create-vault.js +63 -27
  103. package/dist/programs/use-cases/vault-operations/create-vault.js.map +1 -1
  104. package/dist/programs/use-cases/vault-operations/write.js +124 -26
  105. package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
  106. package/dist/tests/integration/deposits.test.d.ts +1 -0
  107. package/dist/tests/integration/deposits.test.js +67 -0
  108. package/dist/tests/integration/deposits.test.js.map +1 -0
  109. package/dist/tests/integration/globalSetup.d.ts +1 -0
  110. package/dist/tests/integration/globalSetup.js +55 -0
  111. package/dist/tests/integration/globalSetup.js.map +1 -0
  112. package/dist/tests/integration/helpers/index.d.ts +3 -0
  113. package/dist/tests/integration/helpers/index.js +4 -0
  114. package/dist/tests/integration/helpers/index.js.map +1 -0
  115. package/dist/tests/integration/helpers/test-assertions.d.ts +32 -0
  116. package/dist/tests/integration/helpers/test-assertions.js +92 -0
  117. package/dist/tests/integration/helpers/test-assertions.js.map +1 -0
  118. package/dist/tests/integration/helpers/test-client.d.ts +14530 -0
  119. package/dist/tests/integration/helpers/test-client.js +73 -0
  120. package/dist/tests/integration/helpers/test-client.js.map +1 -0
  121. package/dist/tests/integration/helpers/test-config.d.ts +14 -0
  122. package/dist/tests/integration/helpers/test-config.js +62 -0
  123. package/dist/tests/integration/helpers/test-config.js.map +1 -0
  124. package/dist/tests/integration/helpers/test-setup.d.ts +12 -0
  125. package/dist/tests/integration/helpers/test-setup.js +40 -0
  126. package/dist/tests/integration/helpers/test-setup.js.map +1 -0
  127. package/dist/tests/integration/lazy-oracle.test.d.ts +1 -0
  128. package/dist/tests/integration/lazy-oracle.test.js +31 -0
  129. package/dist/tests/integration/lazy-oracle.test.js.map +1 -0
  130. package/dist/tests/integration/metrics.test.d.ts +1 -0
  131. package/dist/tests/integration/metrics.test.js +95 -0
  132. package/dist/tests/integration/metrics.test.js.map +1 -0
  133. package/dist/tests/integration/mint-burn.test.d.ts +1 -0
  134. package/dist/tests/integration/mint-burn.test.js +149 -0
  135. package/dist/tests/integration/mint-burn.test.js.map +1 -0
  136. package/dist/tests/integration/operator-grid.test.d.ts +1 -0
  137. package/dist/tests/integration/operator-grid.test.js +41 -0
  138. package/dist/tests/integration/operator-grid.test.js.map +1 -0
  139. package/dist/tests/integration/pdg.test.d.ts +1 -0
  140. package/dist/tests/integration/pdg.test.js +47 -0
  141. package/dist/tests/integration/pdg.test.js.map +1 -0
  142. package/dist/tests/integration/utils.test.d.ts +1 -0
  143. package/dist/tests/integration/utils.test.js +70 -0
  144. package/dist/tests/integration/utils.test.js.map +1 -0
  145. package/dist/tests/integration/vault-factory.test.d.ts +1 -0
  146. package/dist/tests/integration/vault-factory.test.js +29 -0
  147. package/dist/tests/integration/vault-factory.test.js.map +1 -0
  148. package/dist/tests/integration/vault-hub.test.d.ts +1 -0
  149. package/dist/tests/integration/vault-hub.test.js +71 -0
  150. package/dist/tests/integration/vault-hub.test.js.map +1 -0
  151. package/dist/tests/integration/vault-operations.test.d.ts +1 -0
  152. package/dist/tests/integration/vault-operations.test.js +151 -0
  153. package/dist/tests/integration/vault-operations.test.js.map +1 -0
  154. package/dist/tests/integration/vault-roles.test.d.ts +1 -0
  155. package/dist/tests/integration/vault-roles.test.js +44 -0
  156. package/dist/tests/integration/vault-roles.test.js.map +1 -0
  157. package/dist/tests/integration/vault.test.d.ts +1 -0
  158. package/dist/tests/integration/vault.test.js +44 -0
  159. package/dist/tests/integration/vault.test.js.map +1 -0
  160. package/dist/tests/utils/arguments.test.js +85 -4
  161. package/dist/tests/utils/arguments.test.js.map +1 -1
  162. package/dist/tests/utils/bigInt.test.js +1 -1
  163. package/dist/tests/utils/bigInt.test.js.map +1 -1
  164. package/dist/tests/utils/calculate-health.test.d.ts +1 -0
  165. package/dist/tests/utils/calculate-health.test.js +140 -0
  166. package/dist/tests/utils/calculate-health.test.js.map +1 -0
  167. package/dist/tests/utils/calculate-overview-v2.test.d.ts +1 -0
  168. package/dist/tests/utils/calculate-overview-v2.test.js +181 -0
  169. package/dist/tests/utils/calculate-overview-v2.test.js.map +1 -0
  170. package/dist/tests/utils/calculate-overview.test.js +2 -1
  171. package/dist/tests/utils/calculate-overview.test.js.map +1 -1
  172. package/dist/tests/utils/csv-file.test.d.ts +1 -0
  173. package/dist/tests/utils/csv-file.test.js +111 -0
  174. package/dist/tests/utils/csv-file.test.js.map +1 -0
  175. package/dist/tests/utils/data-validators.test.js +1 -1
  176. package/dist/tests/utils/data-validators.test.js.map +1 -1
  177. package/dist/tests/utils/error-handler.test.js +7 -16
  178. package/dist/tests/utils/error-handler.test.js.map +1 -1
  179. package/dist/tests/utils/get-commands.test.js +1 -1
  180. package/dist/tests/utils/get-commands.test.js.map +1 -1
  181. package/dist/tests/utils/get-deposit-data-root.test.js +1 -2
  182. package/dist/tests/utils/get-deposit-data-root.test.js.map +1 -1
  183. package/dist/tests/utils/get-value.test.js +1 -1
  184. package/dist/tests/utils/get-value.test.js.map +1 -1
  185. package/dist/tests/utils/health.test.js +1 -1
  186. package/dist/tests/utils/health.test.js.map +1 -1
  187. package/dist/tests/utils/interrupt-handler.test.js +2 -5
  188. package/dist/tests/utils/interrupt-handler.test.js.map +1 -1
  189. package/dist/tests/utils/ipfs.test.js +37 -24
  190. package/dist/tests/utils/ipfs.test.js.map +1 -1
  191. package/dist/tests/utils/lido-apr.test.d.ts +1 -0
  192. package/dist/tests/utils/lido-apr.test.js +95 -0
  193. package/dist/tests/utils/lido-apr.test.js.map +1 -0
  194. package/dist/tests/utils/logging.test.js +135 -15
  195. package/dist/tests/utils/logging.test.js.map +1 -1
  196. package/dist/tests/utils/merkle-utils.test.d.ts +1 -0
  197. package/dist/tests/utils/merkle-utils.test.js +231 -0
  198. package/dist/tests/utils/merkle-utils.test.js.map +1 -0
  199. package/dist/tests/utils/rebase-rewards.test.d.ts +1 -0
  200. package/dist/tests/utils/rebase-rewards.test.js +114 -0
  201. package/dist/tests/utils/rebase-rewards.test.js.map +1 -0
  202. package/dist/tests/utils/resove-path.test.js +1 -1
  203. package/dist/tests/utils/resove-path.test.js.map +1 -1
  204. package/dist/tests/utils/sleep.test.js +5 -5
  205. package/dist/tests/utils/sleep.test.js.map +1 -1
  206. package/dist/tests/utils/snake-to-camel.test.d.ts +1 -0
  207. package/dist/tests/utils/snake-to-camel.test.js +37 -0
  208. package/dist/tests/utils/snake-to-camel.test.js.map +1 -0
  209. package/dist/tests/utils/timestamp.test.d.ts +1 -0
  210. package/dist/tests/utils/timestamp.test.js +51 -0
  211. package/dist/tests/utils/timestamp.test.js.map +1 -0
  212. package/dist/utils/arguments.d.ts +2 -1
  213. package/dist/utils/arguments.js +6 -0
  214. package/dist/utils/arguments.js.map +1 -1
  215. package/dist/utils/calculate-overview-v2.d.ts +1 -2
  216. package/dist/utils/calculate-overview-v2.js +3 -6
  217. package/dist/utils/calculate-overview-v2.js.map +1 -1
  218. package/dist/utils/calculate-overview.d.ts +1 -0
  219. package/dist/utils/calculate-overview.js +1 -0
  220. package/dist/utils/calculate-overview.js.map +1 -1
  221. package/dist/utils/commands/report.d.ts +6 -1
  222. package/dist/utils/commands/report.js +6 -5
  223. package/dist/utils/commands/report.js.map +1 -1
  224. package/dist/utils/consolidation/confirms.js +2 -2
  225. package/dist/utils/consolidation/confirms.js.map +1 -1
  226. package/dist/utils/consolidation/logs.js +4 -2
  227. package/dist/utils/consolidation/logs.js.map +1 -1
  228. package/dist/utils/consolidation/pubkeys.js +2 -0
  229. package/dist/utils/consolidation/pubkeys.js.map +1 -1
  230. package/dist/utils/consolidation/types.d.ts +1 -0
  231. package/dist/utils/consolidation/validator-info.js +2 -0
  232. package/dist/utils/consolidation/validator-info.js.map +1 -1
  233. package/dist/utils/error-handler.js +2 -9
  234. package/dist/utils/error-handler.js.map +1 -1
  235. package/dist/utils/interrupt-handler.js +8 -2
  236. package/dist/utils/interrupt-handler.js.map +1 -1
  237. package/dist/utils/logging/console.js +41 -3
  238. package/dist/utils/logging/console.js.map +1 -1
  239. package/dist/utils/prompts/mint-burn/confirm-mint.js +1 -0
  240. package/dist/utils/prompts/mint-burn/confirm-mint.js.map +1 -1
  241. package/dist/utils/prompts/operations.js +4 -1
  242. package/dist/utils/prompts/operations.js.map +1 -1
  243. package/dist/utils/proof/create-proof.d.ts +5 -0
  244. package/dist/utils/proof/create-proof.js +5 -0
  245. package/dist/utils/proof/create-proof.js.map +1 -1
  246. package/dist/utils/transactions/tx-private-key.d.ts +4 -0
  247. package/dist/utils/transactions/tx-private-key.js +52 -24
  248. package/dist/utils/transactions/tx-private-key.js.map +1 -1
  249. package/dist/utils/transactions/tx-wc.d.ts +1 -0
  250. package/dist/utils/transactions/tx-wc.js +10 -19
  251. package/dist/utils/transactions/tx-wc.js.map +1 -1
  252. package/dist/utils/transactions/types.d.ts +1 -0
  253. package/dist/utils/transactions/utils.d.ts +3 -0
  254. package/dist/utils/transactions/utils.js +33 -0
  255. package/dist/utils/transactions/utils.js.map +1 -0
  256. package/dist/utils/wallet-connect.js +3 -1
  257. package/dist/utils/wallet-connect.js.map +1 -1
  258. package/dist/version/index.js +1 -1
  259. package/dist/vitest.config.d.ts +2 -0
  260. package/dist/vitest.config.js +29 -0
  261. package/dist/vitest.config.js.map +1 -0
  262. package/dist/vitest.integration.config.d.ts +2 -0
  263. package/dist/vitest.integration.config.js +39 -0
  264. package/dist/vitest.integration.config.js.map +1 -0
  265. package/package.json +14 -9
@@ -1,10 +1,10 @@
1
- import { formatEther } from 'viem';
1
+ import { formatEther, parseEther } from 'viem';
2
2
  import { Option } from 'commander';
3
- import { logInfo, getCommandsJson, etherToWei, stringToAddress, confirmOperation, callWriteMethodWithReceipt, callReadMethodSilent, logError, stringToBigInt, } from '../../../utils/index.js';
4
- import { chooseVaultAndGetDashboard, getAddress, mintShares, checkIsReportFresh, mintSteth, burnShares, burnSteth, checkVaultRole, checkAllowance, confirmQuarantine, } from '../../../features/index.js';
3
+ import { logInfo, getCommandsJson, etherToWei, stringToAddress, confirmOperation, callWriteMethodWithReceipt, callReadMethodSilent, logError, stringToBigInt, jsonToRoleAssignment, isPopulatedTx, } from '../../../utils/index.js';
4
+ import { chooseVaultAndGetDashboard, getAddress, mintShares, mintSteth, burnShares, burnSteth, checkVaultRole, checkAllowance, confirmQuarantine, logRolesOperations, askRoleOperationInfo, callWriteMethodsWithReportFresh, checkVaultAvailableBalance, checkIsReportFreshThrowError, } from '../../../features/index.js';
5
5
  import { getAccount } from '../../../providers/index.js';
6
- import { vaultOperations } from './main.js';
7
6
  import { getOperatorGridContract } from '../../../contracts/index.js';
7
+ import { vaultOperations } from './main.js';
8
8
  export const vaultOperationsWrite = vaultOperations
9
9
  .command('write')
10
10
  .aliases(['w'])
@@ -31,7 +31,8 @@ vaultOperationsWrite
31
31
  const confirm = await confirmOperation(`Are you sure you want to fund the staking vault ${vaultAddress} with ${formatEther(ether)} ether?`);
32
32
  if (!confirm)
33
33
  return;
34
- await callWriteMethodWithReceipt({
34
+ await callWriteMethodsWithReportFresh({
35
+ vault: vaultAddress,
35
36
  contract,
36
37
  methodName: 'fund',
37
38
  payload: [],
@@ -55,10 +56,8 @@ vaultOperationsWrite
55
56
  const confirm = await confirmOperation(`Are you sure you want to withdraw ${formatEther(ether)} from the staking vault ${vaultAddress} to ${recipientAddress}?`);
56
57
  if (!confirm)
57
58
  return;
58
- const isReportFresh = await checkIsReportFresh(vaultAddress);
59
- if (!isReportFresh)
60
- return;
61
- await callWriteMethodWithReceipt({
59
+ await callWriteMethodsWithReportFresh({
60
+ vault: vaultAddress,
62
61
  contract,
63
62
  methodName: 'withdraw',
64
63
  payload: [recipientAddress, ether],
@@ -133,8 +132,8 @@ vaultOperationsWrite
133
132
  return;
134
133
  const account = await getAccount();
135
134
  await checkVaultRole(contract, 'BURN_ROLE', account.address);
136
- await checkAllowance(contract, amountOfShares, 'shares');
137
- await burnShares(contract, amountOfShares, vaultAddress, 'burnShares');
135
+ const allowanceCall = await checkAllowance(contract, amountOfShares, 'shares', true);
136
+ await burnShares(contract, amountOfShares, vaultAddress, 'burnShares', isPopulatedTx(allowanceCall?.data) ? allowanceCall.data : undefined);
138
137
  });
139
138
  vaultOperationsWrite
140
139
  .command('burn-steth')
@@ -150,8 +149,8 @@ vaultOperationsWrite
150
149
  return;
151
150
  const account = await getAccount();
152
151
  await checkVaultRole(contract, 'BURN_ROLE', account.address);
153
- await checkAllowance(contract, amountOfSteth, 'steth');
154
- await burnSteth(contract, amountOfSteth, vaultAddress);
152
+ const allowanceCall = await checkAllowance(contract, amountOfSteth, 'steth', true);
153
+ await burnSteth(contract, amountOfSteth, vaultAddress, isPopulatedTx(allowanceCall?.data) ? allowanceCall.data : undefined);
155
154
  });
156
155
  vaultOperationsWrite
157
156
  .command('burn-wsteth')
@@ -167,8 +166,8 @@ vaultOperationsWrite
167
166
  return;
168
167
  const account = await getAccount();
169
168
  await checkVaultRole(contract, 'BURN_ROLE', account.address);
170
- await checkAllowance(contract, amountOfWsteth, 'wsteth');
171
- await burnShares(contract, amountOfWsteth, vaultAddress, 'burnWstETH');
169
+ const allowanceCall = await checkAllowance(contract, amountOfWsteth, 'wsteth', true);
170
+ await burnShares(contract, amountOfWsteth, vaultAddress, 'burnWstETH', isPopulatedTx(allowanceCall?.data) ? allowanceCall.data : undefined);
172
171
  });
173
172
  vaultOperationsWrite
174
173
  .command('disburse-node-operator-fee')
@@ -181,6 +180,7 @@ vaultOperationsWrite
181
180
  const quarantineConfirm = await confirmQuarantine(vaultAddress);
182
181
  if (!quarantineConfirm)
183
182
  return;
183
+ await checkIsReportFreshThrowError({ vault: vaultAddress });
184
184
  const nodeOperatorFeeRecipient = await callReadMethodSilent(contract, 'feeRecipient');
185
185
  const nodeOperatorAccruedFee = await callReadMethodSilent(contract, 'accruedFee');
186
186
  if (nodeOperatorAccruedFee === 0n) {
@@ -221,8 +221,8 @@ vaultOperationsWrite
221
221
  vaultOperationsWrite
222
222
  .command('change-tier-by-no')
223
223
  .alias('ct-no')
224
- .description('vault tier change by node operator with multi-role confirmation')
225
- .argument('<tierId>', 'tier id', stringToBigInt)
224
+ .description('vault tier change by node operator with multi-role confirmation. For disconnected vaults this option is required')
225
+ .argument('<tierId>', 'tier id to change to', stringToBigInt)
226
226
  .option('-r, --requestedShareLimit <string>', 'requested share limit (in shares)', etherToWei)
227
227
  .option('-v, --vault <string>', 'vault address', stringToAddress)
228
228
  .action(async (tierId, { requestedShareLimit, vault, }) => {
@@ -247,9 +247,8 @@ vaultOperationsWrite
247
247
  if (account.address !== vaultNodeOperator) {
248
248
  throw new Error(`You are not the node operator of the vault ${vaultAddress}`);
249
249
  }
250
- // TODO: only for confirmation
251
- await checkIsReportFresh(vaultAddress);
252
- await callWriteMethodWithReceipt({
250
+ await callWriteMethodsWithReportFresh({
251
+ vault: vaultAddress,
253
252
  contract: operatorGridContract,
254
253
  methodName: 'changeTier',
255
254
  payload: [vaultAddress, tierId, currentShareLimit],
@@ -259,7 +258,7 @@ vaultOperationsWrite
259
258
  .command('change-tier')
260
259
  .alias('ct')
261
260
  .description('vault tier change with multi-role confirmation')
262
- .argument('<tierId>', 'tier id', stringToBigInt)
261
+ .argument('<tierId>', 'tier id to change to', stringToBigInt)
263
262
  .option('-r, --requestedShareLimit <string>', 'requested share limit (in shares)', etherToWei)
264
263
  .option('-v, --vault <string>', 'vault address', stringToAddress)
265
264
  .action(async (tierId, { requestedShareLimit, vault, }) => {
@@ -281,9 +280,8 @@ vaultOperationsWrite
281
280
  return;
282
281
  const account = await getAccount();
283
282
  await checkVaultRole(contract, 'VAULT_CONFIGURATION_ROLE', account.address);
284
- // TODO: only for confirmation
285
- await checkIsReportFresh(vaultAddress);
286
- await callWriteMethodWithReceipt({
283
+ await callWriteMethodsWithReportFresh({
284
+ vault: vaultAddress,
287
285
  contract,
288
286
  methodName: 'changeTier',
289
287
  payload: [tierId, currentShareLimit],
@@ -305,11 +303,111 @@ vaultOperationsWrite
305
303
  const confirm = await confirmOperation(`Are you sure you want to sync the tier of the vault ${vaultAddress}?`);
306
304
  if (!confirm)
307
305
  return;
308
- await checkIsReportFresh(vaultAddress);
309
- await callWriteMethodWithReceipt({
306
+ await callWriteMethodsWithReportFresh({
307
+ vault: vaultAddress,
310
308
  contract,
311
309
  methodName: 'syncTier',
312
310
  payload: [],
313
311
  });
314
312
  });
313
+ vaultOperationsWrite
314
+ .command('role-grant')
315
+ .description('mass-grants multiple roles to multiple accounts.')
316
+ .option('-r, --roleAssignments <string>', 'JSON array of role assignments', jsonToRoleAssignment)
317
+ .option('-v, --vault <string>', 'vault address', stringToAddress)
318
+ .addHelpText('after', `Role assignment format:
319
+ [{
320
+ "account": "...",
321
+ "role": "..."
322
+ }
323
+ {second role assignment}
324
+ ...]`)
325
+ .action(async ({ roleAssignments, vault, }) => {
326
+ const { contract } = await chooseVaultAndGetDashboard({
327
+ vault,
328
+ });
329
+ let roleAssignmentsValue = [];
330
+ if (roleAssignments) {
331
+ roleAssignmentsValue = roleAssignments;
332
+ }
333
+ else {
334
+ roleAssignmentsValue = await askRoleOperationInfo(contract, 'grant');
335
+ }
336
+ const confirm = await logRolesOperations(contract, roleAssignmentsValue, 'grant');
337
+ if (!confirm)
338
+ return;
339
+ await callWriteMethodWithReceipt({
340
+ contract,
341
+ methodName: 'grantRoles',
342
+ payload: [roleAssignmentsValue],
343
+ });
344
+ });
345
+ vaultOperationsWrite
346
+ .command('role-revoke')
347
+ .description('mass-revokes multiple roles from multiple accounts')
348
+ .option('-r, --roleAssignments <string>', 'JSON array of role assignments', jsonToRoleAssignment)
349
+ .option('-v, --vault <string>', 'vault address', stringToAddress)
350
+ .addHelpText('after', `Role assignment format:
351
+ [{
352
+ "account": "...",
353
+ "role": "..."
354
+ }
355
+ {second role assignment}
356
+ ...]`)
357
+ .action(async ({ roleAssignments, vault, }) => {
358
+ const { contract } = await chooseVaultAndGetDashboard({
359
+ vault,
360
+ });
361
+ let roleAssignmentsValue = [];
362
+ if (roleAssignments) {
363
+ roleAssignmentsValue = roleAssignments;
364
+ }
365
+ else {
366
+ roleAssignmentsValue = await askRoleOperationInfo(contract, 'revoke');
367
+ }
368
+ const confirm = await logRolesOperations(contract, roleAssignmentsValue, 'revoke');
369
+ if (!confirm)
370
+ return;
371
+ await callWriteMethodWithReceipt({
372
+ contract,
373
+ methodName: 'revokeRoles',
374
+ payload: [roleAssignmentsValue],
375
+ });
376
+ });
377
+ vaultOperationsWrite
378
+ .command('connect-and-accept-tier')
379
+ .alias('connect-and-accept')
380
+ .description('changes the tier of the vault and connects to VaultHub')
381
+ .argument('<vaultAddress>', 'vault address', stringToAddress)
382
+ .argument('<tierId>', 'tier to change to', stringToBigInt)
383
+ .argument('<requestedShareLimit>', 'requested new share limit for the vault (in shares)', etherToWei)
384
+ .option('-f, --fund', 'optional fund the vault with 1 ETH', false)
385
+ .addHelpText('after', `Reverts if settledGrowth is not corrected after the vault is disconnected`)
386
+ .action(async (vaultAddress, tier, requestedShareLimit, { fund }) => {
387
+ const { contract } = await chooseVaultAndGetDashboard({
388
+ vault: vaultAddress,
389
+ });
390
+ const currentSettledGrowth = await callReadMethodSilent(contract, 'settledGrowth');
391
+ const confirm = await confirmOperation(`Are you sure you want to change the tier of the vault ${vaultAddress} to ${tier} and connect to VaultHub?
392
+ Requested share limit: ${formatEther(requestedShareLimit)}
393
+ Current settled growth: ${formatEther(currentSettledGrowth)}
394
+ Fund with 1 ETH: ${fund}`);
395
+ if (!confirm)
396
+ return;
397
+ let value;
398
+ if (!fund) {
399
+ const { isFundConfirmed } = await checkVaultAvailableBalance(vaultAddress);
400
+ if (isFundConfirmed)
401
+ value = parseEther('1');
402
+ }
403
+ else {
404
+ value = parseEther('1');
405
+ }
406
+ await callWriteMethodWithReceipt({
407
+ contract,
408
+ methodName: 'connectAndAcceptTier',
409
+ payload: [tier, requestedShareLimit],
410
+ value,
411
+ });
412
+ });
315
413
  //# sourceMappingURL=write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../programs/use-cases/vault-operations/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../programs/use-cases/vault-operations/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ import { describe, test, expect, beforeAll } from 'vitest';
2
+ import { checkValidatorInfo, checkPdgIsPaused } from '../../features/index.js';
3
+ import { getPredepositGuaranteeContract } from '../../contracts/pdg.js';
4
+ import { loadTestConfig } from './helpers/test-config.js';
5
+ import { setupIntegrationTestsBeforeEach } from './helpers/test-setup.js';
6
+ describe('Deposits Integration Tests', () => {
7
+ setupIntegrationTestsBeforeEach();
8
+ let pdgContract;
9
+ beforeAll(async () => {
10
+ loadTestConfig();
11
+ pdgContract = await getPredepositGuaranteeContract();
12
+ });
13
+ test('should check PDG is paused status', async () => {
14
+ const isPaused = await checkPdgIsPaused(pdgContract);
15
+ expect(typeof isPaused).toBe('boolean');
16
+ // PDG can be paused or not, both are valid states
17
+ });
18
+ test('should validate validator info with valid data', async () => {
19
+ const validValidator = {
20
+ pubkey: ('0x' + '0'.repeat(96)),
21
+ effectiveBalance: 32000000000, // 32 ETH in gwei
22
+ activationEpoch: 0,
23
+ slashed: false,
24
+ };
25
+ const result = await checkValidatorInfo(validValidator);
26
+ expect(result).toBeDefined();
27
+ expect(result).toHaveProperty('isValid');
28
+ expect(result).toHaveProperty('skip');
29
+ expect(typeof result.isValid).toBe('boolean');
30
+ expect(typeof result.skip).toBe('boolean');
31
+ });
32
+ test('should handle validator with low effective balance', async () => {
33
+ const invalidValidator = {
34
+ pubkey: ('0x' + '0'.repeat(96)),
35
+ effectiveBalance: 1000000000, // Less than 32 ETH
36
+ activationEpoch: 0,
37
+ slashed: false,
38
+ };
39
+ const { isValid, skip } = await checkValidatorInfo(invalidValidator);
40
+ // Either result is defined or error is thrown
41
+ expect(isValid).toBe(false);
42
+ expect(skip).toBe(true);
43
+ });
44
+ test('should handle validator that is not activated', async () => {
45
+ const notActivatedValidator = {
46
+ pubkey: ('0x' + '0'.repeat(96)),
47
+ effectiveBalance: 32000000000,
48
+ activationEpoch: Infinity, // Not activated
49
+ slashed: false,
50
+ };
51
+ const { isValid, skip } = await checkValidatorInfo(notActivatedValidator);
52
+ expect(isValid).toBe(false);
53
+ expect(skip).toBe(true);
54
+ });
55
+ test('should handle slashed validator', async () => {
56
+ const slashedValidator = {
57
+ pubkey: ('0x' + '0'.repeat(96)),
58
+ effectiveBalance: 32000000000,
59
+ activationEpoch: 0,
60
+ slashed: true,
61
+ };
62
+ const { isValid, skip } = await checkValidatorInfo(slashedValidator);
63
+ expect(isValid).toBe(false);
64
+ expect(skip).toBe(true);
65
+ });
66
+ });
67
+ //# sourceMappingURL=deposits.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposits.test.js","sourceRoot":"","sources":["../../../tests/integration/deposits.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function globalSetup(): Promise<() => Promise<void>>;
@@ -0,0 +1,55 @@
1
+ import { createAnvil } from '@viem/anvil';
2
+ import * as dotenv from 'dotenv';
3
+ import path from 'path';
4
+ // Load environment variables from .env.test or .env
5
+ dotenv.config({ path: path.resolve(process.cwd(), '.env.test') });
6
+ dotenv.config(); // Fallback to .env if .env.test doesn't exist
7
+ // Global anvil instance
8
+ let anvilInstance = null;
9
+ export default async function globalSetup() {
10
+ const ANVIL_PORT = Number(process.env.ANVIL_PORT || '8545');
11
+ const FORK_URL = process.env.EL_URL;
12
+ const FORK_BLOCK_NUMBER = process.env.FORK_BLOCK_NUMBER
13
+ ? Number(process.env.FORK_BLOCK_NUMBER)
14
+ : undefined;
15
+ const CHAIN_ID = Number(process.env.CHAIN_ID || '1');
16
+ if (!FORK_URL) {
17
+ throw new Error('EL_URL environment variable is required for integration tests');
18
+ }
19
+ console.info('Starting Anvil fork...');
20
+ console.info(`Fork URL: ${FORK_URL}`);
21
+ console.info(`Fork Block Number: ${FORK_BLOCK_NUMBER || 'latest'}`);
22
+ console.info(`Chain ID: ${CHAIN_ID}`);
23
+ console.info(`Port: ${ANVIL_PORT}`);
24
+ // Create Anvil instance
25
+ const anvil = createAnvil({
26
+ port: ANVIL_PORT,
27
+ forkUrl: FORK_URL,
28
+ forkBlockNumber: FORK_BLOCK_NUMBER,
29
+ chainId: CHAIN_ID,
30
+ });
31
+ // Start Anvil
32
+ await anvil.start();
33
+ // Update EL_URL to point to local anvil
34
+ const anvilRpcUrl = `http://127.0.0.1:${ANVIL_PORT}`;
35
+ process.env.EL_URL = anvilRpcUrl;
36
+ console.info(`Anvil started successfully`);
37
+ console.info(`Anvil RPC URL: ${anvilRpcUrl}`);
38
+ // Store instance for teardown
39
+ anvilInstance = anvil;
40
+ // Return a teardown function for Vitest
41
+ return async () => {
42
+ try {
43
+ if (anvilInstance) {
44
+ console.info('Stopping Anvil...');
45
+ await anvilInstance.stop();
46
+ console.info('Anvil stopped');
47
+ anvilInstance = null;
48
+ }
49
+ }
50
+ catch (error) {
51
+ console.error(`Error during teardown: ${error.message}`);
52
+ }
53
+ };
54
+ }
55
+ //# sourceMappingURL=globalSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalSetup.js","sourceRoot":"","sources":["../../../tests/integration/globalSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,oDAAoD;AACpD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,8CAA8C;AAE/D,wBAAwB;AACxB,IAAI,aAAa,GAAmD,IAAI,CAAC;AAEzE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,WAAW;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IACpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB;QACrD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IAErD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,sBAAsB,iBAAiB,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAEpC,wBAAwB;IACxB,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,QAAQ;QACjB,eAAe,EAAE,iBAAiB;QAClC,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,cAAc;IACd,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAEpB,wCAAwC;IACxC,MAAM,WAAW,GAAG,oBAAoB,UAAU,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;IAEjC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;IAE9C,8BAA8B;IAC9B,aAAa,GAAG,KAAK,CAAC;IAEtB,wCAAwC;IACxC,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC;YACH,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAClC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC9B,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './test-client.js';
2
+ export * from './test-config.js';
3
+ export * from './test-assertions.js';
@@ -0,0 +1,4 @@
1
+ export * from './test-client.js';
2
+ export * from './test-config.js';
3
+ export * from './test-assertions.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../tests/integration/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Helper functions to capture and validate data from features functions
3
+ * These functions use spies to intercept logResult/logTable calls
4
+ */
5
+ /**
6
+ * Captures data passed to logResult during function execution
7
+ */
8
+ export declare const captureLogResult: <T>(fn: () => Promise<void>) => Promise<T | null>;
9
+ /**
10
+ * Captures data passed to logTable during function execution
11
+ */
12
+ export declare const captureLogTable: <T>(fn: () => Promise<void>) => Promise<T | null>;
13
+ /**
14
+ * Validates that an address is valid (20 bytes / 40 hex chars)
15
+ */
16
+ export declare const isValidAddress: (address: string) => boolean;
17
+ /**
18
+ * Validates that a bytes32 hash is valid (32 bytes / 64 hex chars)
19
+ * Used for role hashes, keccak256 values, etc.
20
+ */
21
+ export declare const isValidBytes32: (hash: string) => boolean;
22
+ /**
23
+ * Validates that a bigint value is non-negative
24
+ */
25
+ export declare const isNonNegativeBigInt: (value: bigint) => boolean;
26
+ /**
27
+ * Validates that actual data matches expected data with informative error messages
28
+ * Performs two-way validation:
29
+ * 1. All expected keys exist in actual data with correct values
30
+ * 2. All actual keys exist in expected data with correct values
31
+ */
32
+ export declare const validateExpectedData: <T extends Record<string, any>>(actualData: T, expectedData: T, expect: any) => void;
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Helper functions to capture and validate data from features functions
3
+ * These functions use spies to intercept logResult/logTable calls
4
+ */
5
+ import { vi } from 'vitest';
6
+ /**
7
+ * Captures data passed to logResult or logTable during function execution
8
+ */
9
+ const captureLogData = async (fn, logFunctionName) => {
10
+ let capturedData = null;
11
+ // Spy on logResult or logTable
12
+ const utilsModule = await import('../../../utils/index.js');
13
+ const logSpy = vi
14
+ .spyOn(utilsModule, logFunctionName)
15
+ .mockImplementation((data) => {
16
+ if (data && data.data) {
17
+ // Convert array of [key, value] pairs back to object
18
+ const obj = {};
19
+ for (const [key, value] of data.data) {
20
+ obj[key] = value;
21
+ }
22
+ capturedData = obj;
23
+ }
24
+ });
25
+ try {
26
+ await fn();
27
+ }
28
+ finally {
29
+ logSpy.mockRestore();
30
+ }
31
+ return capturedData;
32
+ };
33
+ /**
34
+ * Captures data passed to logResult during function execution
35
+ */
36
+ export const captureLogResult = async (fn) => {
37
+ return captureLogData(fn, 'logResult');
38
+ };
39
+ /**
40
+ * Captures data passed to logTable during function execution
41
+ */
42
+ export const captureLogTable = async (fn) => {
43
+ return captureLogData(fn, 'logTable');
44
+ };
45
+ /**
46
+ * Validates that an address is valid (20 bytes / 40 hex chars)
47
+ */
48
+ export const isValidAddress = (address) => {
49
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
50
+ };
51
+ /**
52
+ * Validates that a bytes32 hash is valid (32 bytes / 64 hex chars)
53
+ * Used for role hashes, keccak256 values, etc.
54
+ */
55
+ export const isValidBytes32 = (hash) => {
56
+ return /^0x[a-fA-F0-9]{64}$/.test(hash);
57
+ };
58
+ /**
59
+ * Validates that a bigint value is non-negative
60
+ */
61
+ export const isNonNegativeBigInt = (value) => {
62
+ return value >= 0n;
63
+ };
64
+ /**
65
+ * Validates that actual data matches expected data with informative error messages
66
+ * Performs two-way validation:
67
+ * 1. All expected keys exist in actual data with correct values
68
+ * 2. All actual keys exist in expected data with correct values
69
+ */
70
+ export const validateExpectedData = (actualData, expectedData, expect) => {
71
+ // Check all data from expectedData
72
+ for (const key in expectedData) {
73
+ const actualValue = actualData[key];
74
+ const expectedValue = expectedData[key];
75
+ expect(actualValue).toBeDefined();
76
+ if (actualValue !== expectedValue) {
77
+ throw new Error(`Key "${key}" value mismatch:\n Got: ${actualValue}\n Expected: ${expectedValue}`);
78
+ }
79
+ expect(actualValue).toBe(expectedValue);
80
+ }
81
+ // Check all data from actualData in expectedData
82
+ for (const key in actualData) {
83
+ const actualValue = actualData[key];
84
+ const expectedValue = expectedData[key];
85
+ expect(actualValue).toBeDefined();
86
+ if (actualValue !== expectedValue) {
87
+ throw new Error(`Key "${key}" value mismatch:\n Got: ${actualValue}\n Expected: ${expectedValue}`);
88
+ }
89
+ expect(actualValue).toBe(expectedValue);
90
+ }
91
+ };
92
+ //# sourceMappingURL=test-assertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-assertions.js","sourceRoot":"","sources":["../../../../tests/integration/helpers/test-assertions.ts"],"names":[],"mappings":"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"}