@lidofinance/lsv-cli 1.0.0-alpha.61 → 1.0.0-alpha.63

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 (494) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/abi/AccessControlConfirmable.d.ts +4 -3
  4. package/dist/abi/AccessControlConfirmable.js +4 -2
  5. package/dist/abi/AccessControlConfirmable.js.map +1 -1
  6. package/dist/abi/Dashboard.d.ts +731 -437
  7. package/dist/abi/Dashboard.js +322 -302
  8. package/dist/abi/Dashboard.js.map +1 -1
  9. package/dist/abi/LazyOracle.d.ts +319 -27
  10. package/dist/abi/LazyOracle.js +406 -27
  11. package/dist/abi/LazyOracle.js.map +1 -1
  12. package/dist/abi/LidoLocator.d.ts +28 -0
  13. package/dist/abi/LidoLocator.js +36 -0
  14. package/dist/abi/LidoLocator.js.map +1 -1
  15. package/dist/abi/OperatorGrid.d.ts +879 -100
  16. package/dist/abi/OperatorGrid.js +224 -2
  17. package/dist/abi/OperatorGrid.js.map +1 -1
  18. package/dist/abi/PredepositGuarantee.d.ts +210 -169
  19. package/dist/abi/PredepositGuarantee.js +192 -198
  20. package/dist/abi/PredepositGuarantee.js.map +1 -1
  21. package/dist/abi/StEth.d.ts +1 -1
  22. package/dist/abi/StEth.js +1 -1
  23. package/dist/abi/StEth.js.map +1 -1
  24. package/dist/abi/StakingVault.d.ts +241 -41
  25. package/dist/abi/StakingVault.js +206 -43
  26. package/dist/abi/StakingVault.js.map +1 -1
  27. package/dist/abi/VaultFactory.d.ts +524 -72
  28. package/dist/abi/VaultFactory.js +42 -1
  29. package/dist/abi/VaultFactory.js.map +1 -1
  30. package/dist/abi/VaultHub.d.ts +439 -409
  31. package/dist/abi/VaultHub.js +363 -399
  32. package/dist/abi/VaultHub.js.map +1 -1
  33. package/dist/abi/VaultViewer.d.ts +204 -238
  34. package/dist/abi/VaultViewer.js +251 -299
  35. package/dist/abi/VaultViewer.js.map +1 -1
  36. package/dist/abi/defi-wrapper/Distributor.d.ts +486 -0
  37. package/dist/abi/defi-wrapper/Distributor.js +633 -0
  38. package/dist/abi/defi-wrapper/Distributor.js.map +1 -0
  39. package/dist/abi/defi-wrapper/Factory.d.ts +1184 -0
  40. package/dist/abi/defi-wrapper/Factory.js +932 -0
  41. package/dist/abi/defi-wrapper/Factory.js.map +1 -0
  42. package/dist/abi/defi-wrapper/StvPool.d.ts +1079 -0
  43. package/dist/abi/defi-wrapper/StvPool.js +1410 -0
  44. package/dist/abi/defi-wrapper/StvPool.js.map +1 -0
  45. package/dist/abi/defi-wrapper/StvStETHPool.d.ts +1772 -0
  46. package/dist/abi/defi-wrapper/StvStETHPool.js +2316 -0
  47. package/dist/abi/defi-wrapper/StvStETHPool.js.map +1 -0
  48. package/dist/abi/defi-wrapper/WithdrawalQueue.d.ts +1265 -0
  49. package/dist/abi/defi-wrapper/WithdrawalQueue.js +1647 -0
  50. package/dist/abi/defi-wrapper/WithdrawalQueue.js.map +1 -0
  51. package/dist/abi/defi-wrapper/index.d.ts +5 -0
  52. package/dist/abi/defi-wrapper/index.js +6 -0
  53. package/dist/abi/defi-wrapper/index.js.map +1 -0
  54. package/dist/abi/index.d.ts +0 -2
  55. package/dist/abi/index.js +0 -2
  56. package/dist/abi/index.js.map +1 -1
  57. package/dist/configs/constants.d.ts +44 -2
  58. package/dist/configs/constants.js +2 -2
  59. package/dist/configs/constants.js.map +1 -1
  60. package/dist/configs/deployed.d.ts +2 -2
  61. package/dist/configs/deployed.js +48 -6
  62. package/dist/configs/deployed.js.map +1 -1
  63. package/dist/configs/utils.d.ts +1 -0
  64. package/dist/configs/utils.js +4 -0
  65. package/dist/configs/utils.js.map +1 -1
  66. package/dist/contracts/dashboard-impl.d.ts +4 -0
  67. package/dist/contracts/dashboard-impl.js +17 -0
  68. package/dist/contracts/dashboard-impl.js.map +1 -0
  69. package/dist/contracts/dashboard.d.ts +2 -2
  70. package/dist/contracts/dashboard.js +3 -2
  71. package/dist/contracts/dashboard.js.map +1 -1
  72. package/dist/contracts/defi-wrapper/distributor.d.ts +4 -0
  73. package/dist/contracts/defi-wrapper/distributor.js +12 -0
  74. package/dist/contracts/defi-wrapper/distributor.js.map +1 -0
  75. package/dist/contracts/defi-wrapper/factory.d.ts +4 -0
  76. package/dist/contracts/defi-wrapper/factory.js +12 -0
  77. package/dist/contracts/defi-wrapper/factory.js.map +1 -0
  78. package/dist/contracts/defi-wrapper/index.d.ts +5 -0
  79. package/dist/contracts/defi-wrapper/index.js +6 -0
  80. package/dist/contracts/defi-wrapper/index.js.map +1 -0
  81. package/dist/contracts/defi-wrapper/stv-pool.d.ts +4 -0
  82. package/dist/contracts/defi-wrapper/stv-pool.js +12 -0
  83. package/dist/contracts/defi-wrapper/stv-pool.js.map +1 -0
  84. package/dist/contracts/defi-wrapper/stv-steth-pool.d.ts +4 -0
  85. package/dist/contracts/defi-wrapper/stv-steth-pool.js +12 -0
  86. package/dist/contracts/defi-wrapper/stv-steth-pool.js.map +1 -0
  87. package/dist/contracts/defi-wrapper/withdrawal-queue.d.ts +4 -0
  88. package/dist/contracts/defi-wrapper/withdrawal-queue.js +12 -0
  89. package/dist/contracts/defi-wrapper/withdrawal-queue.js.map +1 -0
  90. package/dist/contracts/index.d.ts +1 -1
  91. package/dist/contracts/index.js +1 -1
  92. package/dist/contracts/index.js.map +1 -1
  93. package/dist/contracts/lazy-oracle.js +3 -2
  94. package/dist/contracts/lazy-oracle.js.map +1 -1
  95. package/dist/contracts/locator.d.ts +3 -8239
  96. package/dist/contracts/locator.js +4 -3
  97. package/dist/contracts/locator.js.map +1 -1
  98. package/dist/contracts/operator-grid.d.ts +1 -1
  99. package/dist/contracts/operator-grid.js +3 -2
  100. package/dist/contracts/operator-grid.js.map +1 -1
  101. package/dist/contracts/pdg.js +3 -2
  102. package/dist/contracts/pdg.js.map +1 -1
  103. package/dist/contracts/steth.d.ts +128 -128
  104. package/dist/contracts/steth.js +3 -2
  105. package/dist/contracts/steth.js.map +1 -1
  106. package/dist/contracts/vault-factory.d.ts +3 -16404
  107. package/dist/contracts/vault-factory.js +4 -3
  108. package/dist/contracts/vault-factory.js.map +1 -1
  109. package/dist/contracts/vault-hub.js +3 -2
  110. package/dist/contracts/vault-hub.js.map +1 -1
  111. package/dist/contracts/vault-viewer.d.ts +3 -11197
  112. package/dist/contracts/vault-viewer.js +9 -7
  113. package/dist/contracts/vault-viewer.js.map +1 -1
  114. package/dist/contracts/vault.d.ts +2 -2
  115. package/dist/contracts/vault.js +3 -2
  116. package/dist/contracts/vault.js.map +1 -1
  117. package/dist/contracts/wsteth.d.ts +3 -24690
  118. package/dist/contracts/wsteth.js +4 -3
  119. package/dist/contracts/wsteth.js.map +1 -1
  120. package/dist/features/defi-wrapper/create-vault.d.ts +17 -0
  121. package/dist/features/defi-wrapper/create-vault.js +137 -0
  122. package/dist/features/defi-wrapper/create-vault.js.map +1 -0
  123. package/dist/features/defi-wrapper/defi-wrapper-factory.d.ts +112 -0
  124. package/dist/features/defi-wrapper/defi-wrapper-factory.js +228 -0
  125. package/dist/features/defi-wrapper/defi-wrapper-factory.js.map +1 -0
  126. package/dist/features/defi-wrapper/index.d.ts +3 -0
  127. package/dist/features/defi-wrapper/index.js +4 -0
  128. package/dist/features/defi-wrapper/index.js.map +1 -0
  129. package/dist/features/defi-wrapper/pool-info.d.ts +35 -0
  130. package/dist/features/defi-wrapper/pool-info.js +97 -0
  131. package/dist/features/defi-wrapper/pool-info.js.map +1 -0
  132. package/dist/features/deposits/check-bls-deposits.d.ts +2 -1
  133. package/dist/features/deposits/check-bls-deposits.js +11 -2
  134. package/dist/features/deposits/check-bls-deposits.js.map +1 -1
  135. package/dist/features/deposits/make-pdg-proof.d.ts +8 -0
  136. package/dist/features/deposits/make-pdg-proof.js +17 -1
  137. package/dist/features/deposits/make-pdg-proof.js.map +1 -1
  138. package/dist/features/deposits/no-pdg.d.ts +1 -1
  139. package/dist/features/deposits/no-pdg.js +6 -3
  140. package/dist/features/deposits/no-pdg.js.map +1 -1
  141. package/dist/features/dev-tools/impersonate.d.ts +14 -0
  142. package/dist/features/dev-tools/impersonate.js +64 -0
  143. package/dist/features/dev-tools/impersonate.js.map +1 -0
  144. package/dist/features/dev-tools/index.d.ts +1 -0
  145. package/dist/features/dev-tools/index.js +2 -0
  146. package/dist/features/dev-tools/index.js.map +1 -0
  147. package/dist/features/index.d.ts +3 -0
  148. package/dist/features/index.js +3 -0
  149. package/dist/features/index.js.map +1 -1
  150. package/dist/features/lazy-oracle.d.ts +1 -0
  151. package/dist/features/lazy-oracle.js +42 -0
  152. package/dist/features/lazy-oracle.js.map +1 -0
  153. package/dist/features/mint-burn/allowance.js +1 -1
  154. package/dist/features/mint-burn/allowance.js.map +1 -1
  155. package/dist/features/pdg.d.ts +7 -0
  156. package/dist/features/pdg.js +5 -5
  157. package/dist/features/pdg.js.map +1 -1
  158. package/dist/features/utils/get-boolean.d.ts +1 -0
  159. package/dist/features/utils/get-boolean.js +13 -0
  160. package/dist/features/utils/get-boolean.js.map +1 -0
  161. package/dist/features/utils/index.d.ts +2 -0
  162. package/dist/features/utils/index.js +2 -0
  163. package/dist/features/utils/index.js.map +1 -1
  164. package/dist/features/utils/quarantine.d.ts +2 -0
  165. package/dist/features/utils/quarantine.js +2 -0
  166. package/dist/features/utils/quarantine.js.map +1 -1
  167. package/dist/features/utils/report-fresh.js +17 -1
  168. package/dist/features/utils/report-fresh.js.map +1 -1
  169. package/dist/features/utils/settled-growth.d.ts +1 -0
  170. package/dist/features/utils/settled-growth.js +16 -0
  171. package/dist/features/utils/settled-growth.js.map +1 -0
  172. package/dist/features/vault-factory.d.ts +2 -2
  173. package/dist/features/vault-factory.js +8 -3
  174. package/dist/features/vault-factory.js.map +1 -1
  175. package/dist/features/vault-hub.js +0 -4
  176. package/dist/features/vault-hub.js.map +1 -1
  177. package/dist/features/vault-operations/create-vault.d.ts +4 -2
  178. package/dist/features/vault-operations/create-vault.js +13 -5
  179. package/dist/features/vault-operations/create-vault.js.map +1 -1
  180. package/dist/features/vault-operations/dashboard-by-vault.d.ts +2 -1
  181. package/dist/features/vault-operations/dashboard-by-vault.js +6 -4
  182. package/dist/features/vault-operations/dashboard-by-vault.js.map +1 -1
  183. package/dist/features/vault-operations/vault-health.js +2 -2
  184. package/dist/features/vault-operations/vault-health.js.map +1 -1
  185. package/dist/features/vault-operations/vault-info.js +32 -33
  186. package/dist/features/vault-operations/vault-info.js.map +1 -1
  187. package/dist/features/vault-operations/vault-overview.js +46 -39
  188. package/dist/features/vault-operations/vault-overview.js.map +1 -1
  189. package/dist/features/vault-operations/vault-roles.d.ts +2 -1
  190. package/dist/features/vault-operations/vault-roles.js +22 -23
  191. package/dist/features/vault-operations/vault-roles.js.map +1 -1
  192. package/dist/features/vault-operations/vaults-by-role.d.ts +5 -0
  193. package/dist/features/vault-operations/vaults-by-role.js +123 -36
  194. package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
  195. package/dist/features/vault.js +8 -4
  196. package/dist/features/vault.js.map +1 -1
  197. package/dist/index.js +18 -6
  198. package/dist/index.js.map +1 -1
  199. package/dist/programs/account/read.js +1 -1
  200. package/dist/programs/account/read.js.map +1 -1
  201. package/dist/programs/account/write.js +14 -0
  202. package/dist/programs/account/write.js.map +1 -1
  203. package/dist/programs/contracts/dashboard/config.js +49 -40
  204. package/dist/programs/contracts/dashboard/config.js.map +1 -1
  205. package/dist/programs/contracts/dashboard/read.js +44 -9
  206. package/dist/programs/contracts/dashboard/read.js.map +1 -1
  207. package/dist/programs/contracts/dashboard/write.js +236 -127
  208. package/dist/programs/contracts/dashboard/write.js.map +1 -1
  209. package/dist/programs/contracts/hub/config.js +7 -27
  210. package/dist/programs/contracts/hub/config.js.map +1 -1
  211. package/dist/programs/contracts/hub/read.js +63 -2
  212. package/dist/programs/contracts/hub/read.js.map +1 -1
  213. package/dist/programs/contracts/hub/write.js +8 -70
  214. package/dist/programs/contracts/hub/write.js.map +1 -1
  215. package/dist/programs/contracts/lazy-oracle/config.js +38 -0
  216. package/dist/programs/contracts/lazy-oracle/config.js.map +1 -1
  217. package/dist/programs/contracts/lazy-oracle/read.js +7 -0
  218. package/dist/programs/contracts/lazy-oracle/read.js.map +1 -1
  219. package/dist/programs/contracts/operator-grid/config.js +21 -10
  220. package/dist/programs/contracts/operator-grid/config.js.map +1 -1
  221. package/dist/programs/contracts/operator-grid/read.js +21 -1
  222. package/dist/programs/contracts/operator-grid/read.js.map +1 -1
  223. package/dist/programs/contracts/operator-grid/write.js +40 -71
  224. package/dist/programs/contracts/operator-grid/write.js.map +1 -1
  225. package/dist/programs/contracts/pdg/config.js +9 -2
  226. package/dist/programs/contracts/pdg/config.js.map +1 -1
  227. package/dist/programs/contracts/pdg/read.js +13 -1
  228. package/dist/programs/contracts/pdg/read.js.map +1 -1
  229. package/dist/programs/contracts/pdg/write.js +55 -86
  230. package/dist/programs/contracts/pdg/write.js.map +1 -1
  231. package/dist/programs/contracts/vault/config.js +12 -0
  232. package/dist/programs/contracts/vault/config.js.map +1 -1
  233. package/dist/programs/contracts/vault/write.js +110 -35
  234. package/dist/programs/contracts/vault/write.js.map +1 -1
  235. package/dist/programs/contracts/vault-factory/config.js +14 -1
  236. package/dist/programs/contracts/vault-factory/config.js.map +1 -1
  237. package/dist/programs/contracts/vault-factory/write.js +25 -15
  238. package/dist/programs/contracts/vault-factory/write.js.map +1 -1
  239. package/dist/programs/contracts/vault-viewer/config.js +102 -59
  240. package/dist/programs/contracts/vault-viewer/config.js.map +1 -1
  241. package/dist/programs/contracts/vault-viewer/read.js +22 -76
  242. package/dist/programs/contracts/vault-viewer/read.js.map +1 -1
  243. package/dist/programs/defi-wrapper/contracts/distributor/config.d.ts +3 -0
  244. package/dist/programs/defi-wrapper/contracts/distributor/config.js +44 -0
  245. package/dist/programs/defi-wrapper/contracts/distributor/config.js.map +1 -0
  246. package/dist/programs/defi-wrapper/contracts/distributor/index.d.ts +3 -0
  247. package/dist/programs/defi-wrapper/contracts/distributor/index.js +4 -0
  248. package/dist/programs/defi-wrapper/contracts/distributor/index.js.map +1 -0
  249. package/dist/programs/defi-wrapper/contracts/distributor/main.d.ts +1 -0
  250. package/dist/programs/defi-wrapper/contracts/distributor/main.js +5 -0
  251. package/dist/programs/defi-wrapper/contracts/distributor/main.js.map +1 -0
  252. package/dist/programs/defi-wrapper/contracts/distributor/read.d.ts +1 -0
  253. package/dist/programs/defi-wrapper/contracts/distributor/read.js +40 -0
  254. package/dist/programs/defi-wrapper/contracts/distributor/read.js.map +1 -0
  255. package/dist/programs/defi-wrapper/contracts/distributor/write.d.ts +1 -0
  256. package/dist/programs/defi-wrapper/contracts/distributor/write.js +70 -0
  257. package/dist/programs/defi-wrapper/contracts/distributor/write.js.map +1 -0
  258. package/dist/programs/defi-wrapper/contracts/factory/config.d.ts +3 -0
  259. package/dist/programs/defi-wrapper/contracts/factory/config.js +2 -0
  260. package/dist/programs/defi-wrapper/contracts/factory/config.js.map +1 -0
  261. package/dist/programs/defi-wrapper/contracts/factory/index.d.ts +3 -0
  262. package/dist/programs/defi-wrapper/contracts/factory/index.js +4 -0
  263. package/dist/programs/defi-wrapper/contracts/factory/index.js.map +1 -0
  264. package/dist/programs/defi-wrapper/contracts/factory/main.d.ts +1 -0
  265. package/dist/programs/defi-wrapper/contracts/factory/main.js +6 -0
  266. package/dist/programs/defi-wrapper/contracts/factory/main.js.map +1 -0
  267. package/dist/programs/defi-wrapper/contracts/factory/read.d.ts +1 -0
  268. package/dist/programs/defi-wrapper/contracts/factory/read.js +50 -0
  269. package/dist/programs/defi-wrapper/contracts/factory/read.js.map +1 -0
  270. package/dist/programs/defi-wrapper/contracts/factory/write.d.ts +1 -0
  271. package/dist/programs/defi-wrapper/contracts/factory/write.js +144 -0
  272. package/dist/programs/defi-wrapper/contracts/factory/write.js.map +1 -0
  273. package/dist/programs/defi-wrapper/contracts/index.d.ts +6 -0
  274. package/dist/programs/defi-wrapper/contracts/index.js +7 -0
  275. package/dist/programs/defi-wrapper/contracts/index.js.map +1 -0
  276. package/dist/programs/defi-wrapper/contracts/main.d.ts +1 -0
  277. package/dist/programs/defi-wrapper/contracts/main.js +6 -0
  278. package/dist/programs/defi-wrapper/contracts/main.js.map +1 -0
  279. package/dist/programs/defi-wrapper/contracts/stv-pool/config.d.ts +3 -0
  280. package/dist/programs/defi-wrapper/contracts/stv-pool/config.js +73 -0
  281. package/dist/programs/defi-wrapper/contracts/stv-pool/config.js.map +1 -0
  282. package/dist/programs/defi-wrapper/contracts/stv-pool/index.d.ts +3 -0
  283. package/dist/programs/defi-wrapper/contracts/stv-pool/index.js +4 -0
  284. package/dist/programs/defi-wrapper/contracts/stv-pool/index.js.map +1 -0
  285. package/dist/programs/defi-wrapper/contracts/stv-pool/main.d.ts +1 -0
  286. package/dist/programs/defi-wrapper/contracts/stv-pool/main.js +6 -0
  287. package/dist/programs/defi-wrapper/contracts/stv-pool/main.js.map +1 -0
  288. package/dist/programs/defi-wrapper/contracts/stv-pool/read.d.ts +1 -0
  289. package/dist/programs/defi-wrapper/contracts/stv-pool/read.js +70 -0
  290. package/dist/programs/defi-wrapper/contracts/stv-pool/read.js.map +1 -0
  291. package/dist/programs/defi-wrapper/contracts/stv-pool/write.d.ts +1 -0
  292. package/dist/programs/defi-wrapper/contracts/stv-pool/write.js +138 -0
  293. package/dist/programs/defi-wrapper/contracts/stv-pool/write.js.map +1 -0
  294. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/config.d.ts +3 -0
  295. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/config.js +120 -0
  296. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/config.js.map +1 -0
  297. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/index.d.ts +3 -0
  298. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/index.js +4 -0
  299. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/index.js.map +1 -0
  300. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/main.d.ts +1 -0
  301. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/main.js +6 -0
  302. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/main.js.map +1 -0
  303. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.d.ts +1 -0
  304. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js +70 -0
  305. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js.map +1 -0
  306. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/write.d.ts +1 -0
  307. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/write.js +173 -0
  308. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/write.js.map +1 -0
  309. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/config.d.ts +3 -0
  310. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/config.js +66 -0
  311. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/config.js.map +1 -0
  312. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/index.d.ts +3 -0
  313. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/index.js +4 -0
  314. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/index.js.map +1 -0
  315. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/main.d.ts +1 -0
  316. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/main.js +6 -0
  317. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/main.js.map +1 -0
  318. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.d.ts +1 -0
  319. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js +65 -0
  320. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js.map +1 -0
  321. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.d.ts +1 -0
  322. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js +171 -0
  323. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js.map +1 -0
  324. package/dist/programs/defi-wrapper/index.d.ts +3 -0
  325. package/dist/programs/defi-wrapper/index.js +4 -0
  326. package/dist/programs/defi-wrapper/index.js.map +1 -0
  327. package/dist/programs/defi-wrapper/main.d.ts +1 -0
  328. package/dist/programs/defi-wrapper/main.js +6 -0
  329. package/dist/programs/defi-wrapper/main.js.map +1 -0
  330. package/dist/programs/defi-wrapper/use-cases/health/index.d.ts +3 -0
  331. package/dist/programs/defi-wrapper/use-cases/health/index.js +4 -0
  332. package/dist/programs/defi-wrapper/use-cases/health/index.js.map +1 -0
  333. package/dist/programs/defi-wrapper/use-cases/health/main.d.ts +1 -0
  334. package/dist/programs/defi-wrapper/use-cases/health/main.js +6 -0
  335. package/dist/programs/defi-wrapper/use-cases/health/main.js.map +1 -0
  336. package/dist/programs/defi-wrapper/use-cases/health/read.d.ts +1 -0
  337. package/dist/programs/defi-wrapper/use-cases/health/read.js +338 -0
  338. package/dist/programs/defi-wrapper/use-cases/health/read.js.map +1 -0
  339. package/dist/programs/defi-wrapper/use-cases/health/utils.d.ts +56 -0
  340. package/dist/programs/defi-wrapper/use-cases/health/utils.js +389 -0
  341. package/dist/programs/defi-wrapper/use-cases/health/utils.js.map +1 -0
  342. package/dist/programs/defi-wrapper/use-cases/health/write.d.ts +1 -0
  343. package/dist/programs/defi-wrapper/use-cases/health/write.js +254 -0
  344. package/dist/programs/defi-wrapper/use-cases/health/write.js.map +1 -0
  345. package/dist/programs/defi-wrapper/use-cases/index.d.ts +3 -0
  346. package/dist/programs/defi-wrapper/use-cases/index.js +4 -0
  347. package/dist/programs/defi-wrapper/use-cases/index.js.map +1 -0
  348. package/dist/programs/defi-wrapper/use-cases/main.d.ts +1 -0
  349. package/dist/programs/defi-wrapper/use-cases/main.js +6 -0
  350. package/dist/programs/defi-wrapper/use-cases/main.js.map +1 -0
  351. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.d.ts +1 -0
  352. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js +143 -0
  353. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js.map +1 -0
  354. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.d.ts +3 -0
  355. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js +5 -0
  356. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js.map +1 -0
  357. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/main.d.ts +1 -0
  358. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/main.js +6 -0
  359. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/main.js.map +1 -0
  360. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.d.ts +1 -0
  361. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js +130 -0
  362. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js.map +1 -0
  363. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.d.ts +1 -0
  364. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js +13 -0
  365. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js.map +1 -0
  366. package/dist/programs/dev-tools/anvil/index.d.ts +2 -0
  367. package/dist/programs/dev-tools/anvil/index.js +3 -0
  368. package/dist/programs/dev-tools/anvil/index.js.map +1 -0
  369. package/dist/programs/dev-tools/anvil/main.d.ts +1 -0
  370. package/dist/programs/dev-tools/anvil/main.js +5 -0
  371. package/dist/programs/dev-tools/anvil/main.js.map +1 -0
  372. package/dist/programs/dev-tools/anvil/write.d.ts +1 -0
  373. package/dist/programs/dev-tools/anvil/write.js +122 -0
  374. package/dist/programs/dev-tools/anvil/write.js.map +1 -0
  375. package/dist/programs/dev-tools/defi-wrapper/index.d.ts +2 -0
  376. package/dist/programs/dev-tools/defi-wrapper/index.js +3 -0
  377. package/dist/programs/dev-tools/defi-wrapper/index.js.map +1 -0
  378. package/dist/programs/dev-tools/defi-wrapper/main.d.ts +1 -0
  379. package/dist/programs/dev-tools/defi-wrapper/main.js +6 -0
  380. package/dist/programs/dev-tools/defi-wrapper/main.js.map +1 -0
  381. package/dist/programs/dev-tools/defi-wrapper/write.d.ts +1 -0
  382. package/dist/programs/dev-tools/defi-wrapper/write.js +77 -0
  383. package/dist/programs/dev-tools/defi-wrapper/write.js.map +1 -0
  384. package/dist/programs/dev-tools/index.d.ts +3 -0
  385. package/dist/programs/dev-tools/index.js +4 -0
  386. package/dist/programs/dev-tools/index.js.map +1 -0
  387. package/dist/programs/dev-tools/main.d.ts +1 -0
  388. package/dist/programs/dev-tools/main.js +6 -0
  389. package/dist/programs/dev-tools/main.js.map +1 -0
  390. package/dist/programs/index.d.ts +2 -0
  391. package/dist/programs/index.js +2 -0
  392. package/dist/programs/index.js.map +1 -1
  393. package/dist/programs/pdg-helpers.js +5 -5
  394. package/dist/programs/pdg-helpers.js.map +1 -1
  395. package/dist/programs/use-cases/deposits/read.js +19 -2
  396. package/dist/programs/use-cases/deposits/read.js.map +1 -1
  397. package/dist/programs/use-cases/deposits/write.js +130 -45
  398. package/dist/programs/use-cases/deposits/write.js.map +1 -1
  399. package/dist/programs/use-cases/metrics/read.js +36 -19
  400. package/dist/programs/use-cases/metrics/read.js.map +1 -1
  401. package/dist/programs/use-cases/report/read.js +14 -7
  402. package/dist/programs/use-cases/report/read.js.map +1 -1
  403. package/dist/programs/use-cases/report/write.js +7 -2
  404. package/dist/programs/use-cases/report/write.js.map +1 -1
  405. package/dist/programs/use-cases/vault-operations/create-vault.js +18 -8
  406. package/dist/programs/use-cases/vault-operations/create-vault.js.map +1 -1
  407. package/dist/programs/use-cases/vault-operations/write.js +103 -8
  408. package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
  409. package/dist/providers/wallet.d.ts +6984 -169
  410. package/dist/providers/wallet.js +15 -5
  411. package/dist/providers/wallet.js.map +1 -1
  412. package/dist/tests/utils/calculate-overview.test.js +1 -1
  413. package/dist/tests/utils/calculate-overview.test.js.map +1 -1
  414. package/dist/tests/utils/health.test.js +2 -2
  415. package/dist/tests/utils/health.test.js.map +1 -1
  416. package/dist/types/common.d.ts +4 -0
  417. package/dist/utils/arguments.d.ts +8 -1
  418. package/dist/utils/arguments.js +61 -1
  419. package/dist/utils/arguments.js.map +1 -1
  420. package/dist/utils/bls.d.ts +2 -2
  421. package/dist/utils/bls.js +8 -7
  422. package/dist/utils/bls.js.map +1 -1
  423. package/dist/utils/cache.d.ts +26 -0
  424. package/dist/utils/cache.js +88 -3
  425. package/dist/utils/cache.js.map +1 -1
  426. package/dist/utils/calculate-overview-v2.d.ts +4 -2
  427. package/dist/utils/calculate-overview-v2.js +5 -8
  428. package/dist/utils/calculate-overview-v2.js.map +1 -1
  429. package/dist/utils/calculate-overview.d.ts +1 -1
  430. package/dist/utils/calculate-overview.js +2 -2
  431. package/dist/utils/calculate-overview.js.map +1 -1
  432. package/dist/utils/charts/blessed/charts-apr.js +3 -2
  433. package/dist/utils/charts/blessed/charts-apr.js.map +1 -1
  434. package/dist/utils/charts/blessed/charts-rewards.js +3 -2
  435. package/dist/utils/charts/blessed/charts-rewards.js.map +1 -1
  436. package/dist/utils/charts/overview.d.ts +1 -1
  437. package/dist/utils/charts/overview.js +1 -1
  438. package/dist/utils/charts/overview.js.map +1 -1
  439. package/dist/utils/charts/simple/simple-charts.js +3 -2
  440. package/dist/utils/charts/simple/simple-charts.js.map +1 -1
  441. package/dist/utils/commands/confirmations.d.ts +8 -4
  442. package/dist/utils/commands/confirmations.js +44 -34
  443. package/dist/utils/commands/confirmations.js.map +1 -1
  444. package/dist/utils/commands/report.js +2 -1
  445. package/dist/utils/commands/report.js.map +1 -1
  446. package/dist/utils/fetchCL.d.ts +1 -5
  447. package/dist/utils/fetchCL.js +5 -7
  448. package/dist/utils/fetchCL.js.map +1 -1
  449. package/dist/utils/health/calculate-health.d.ts +1 -1
  450. package/dist/utils/health/calculate-health.js +2 -2
  451. package/dist/utils/health/calculate-health.js.map +1 -1
  452. package/dist/utils/health/health-utils.d.ts +131 -131
  453. package/dist/utils/health/health-utils.js +12 -11
  454. package/dist/utils/health/health-utils.js.map +1 -1
  455. package/dist/utils/prompts/confirmations.js +1 -1
  456. package/dist/utils/prompts/confirmations.js.map +1 -1
  457. package/dist/utils/proof/constants.d.ts +6 -0
  458. package/dist/utils/proof/constants.js +7 -0
  459. package/dist/utils/proof/constants.js.map +1 -0
  460. package/dist/utils/proof/first-validator-gindex.js +0 -4
  461. package/dist/utils/proof/first-validator-gindex.js.map +1 -1
  462. package/dist/utils/proof/proofs.d.ts +7 -8
  463. package/dist/utils/proof/proofs.js +36 -28
  464. package/dist/utils/proof/proofs.js.map +1 -1
  465. package/dist/utils/read-programs-by-abi.d.ts +1 -1
  466. package/dist/utils/read-programs-by-abi.js +4 -18
  467. package/dist/utils/read-programs-by-abi.js.map +1 -1
  468. package/dist/utils/report/report.js +2 -1
  469. package/dist/utils/report/report.js.map +1 -1
  470. package/dist/utils/report/statistic-data.js +3 -3
  471. package/dist/utils/report/statistic-data.js.map +1 -1
  472. package/dist/utils/report/types.d.ts +10 -2
  473. package/dist/utils/statistic/report-statistic.js +13 -14
  474. package/dist/utils/statistic/report-statistic.js.map +1 -1
  475. package/dist/utils/transactions/tx-private-key.d.ts +2 -2
  476. package/dist/utils/transactions/tx-private-key.js +6 -6
  477. package/dist/utils/transactions/tx-private-key.js.map +1 -1
  478. package/dist/utils/transactions/tx-wc.d.ts +29 -1
  479. package/dist/utils/transactions/tx-wc.js +58 -28
  480. package/dist/utils/transactions/tx-wc.js.map +1 -1
  481. package/dist/utils/wallet-connect.d.ts +4 -7664
  482. package/dist/utils/wallet-connect.js +17 -5
  483. package/dist/utils/wallet-connect.js.map +1 -1
  484. package/dist/version/index.js +1 -1
  485. package/package.json +16 -7
  486. package/dist/abi/TokenManager.d.ts +0 -577
  487. package/dist/abi/TokenManager.js +0 -756
  488. package/dist/abi/TokenManager.js.map +0 -1
  489. package/dist/abi/Voting.d.ts +0 -676
  490. package/dist/abi/Voting.js +0 -884
  491. package/dist/abi/Voting.js.map +0 -1
  492. package/dist/contracts/token-manager.d.ts +0 -3
  493. package/dist/contracts/token-manager.js +0 -13
  494. package/dist/contracts/token-manager.js.map +0 -1
@@ -1,9 +1,8 @@
1
1
  import { parseEther, formatEther } from 'viem';
2
2
  import { Option } from 'commander';
3
- import { getAccount } from '../../../providers/index.js';
4
- import { getDashboardContract, getStakingVaultContract } from '../../../contracts/index.js';
5
- import { mintShares, burnShares, mintSteth, burnSteth, checkIsReportFresh, } from '../../../features/index.js';
6
- import { callReadMethod, callWriteMethodWithReceipt, jsonToRoleAssignment, confirmOperation, stringToBigInt, parseDepositArray, logInfo, getCommandsJson, stringToAddress, createPDGProof, confirmProposal, formatBP, callReadMethodSilent, showSpinner, stringToBigIntArrayWei, stringToHexArray, etherToWei, } from '../../../utils/index.js';
3
+ import { getDashboardContract, getOperatorGridContract, getStakingVaultContract, } from '../../../contracts/index.js';
4
+ import { mintShares, burnShares, mintSteth, burnSteth, checkIsReportFresh, checkBLSDeposits, } from '../../../features/index.js';
5
+ import { callReadMethod, callWriteMethodWithReceipt, jsonToRoleAssignment, confirmOperation, stringToBigInt, parseDepositArray, logInfo, getCommandsJson, stringToAddress, createPDGProof, confirmProposal, formatBP, callReadMethodSilent, showSpinner, stringToBigIntArrayWei, stringToHexArray, etherToWei, stringToNumber, } from '../../../utils/index.js';
7
6
  import { dashboard } from './main.js';
8
7
  const dashboardWrite = dashboard
9
8
  .command('write')
@@ -21,7 +20,7 @@ dashboardWrite
21
20
  .argument('<address>', 'dashboard address', stringToAddress)
22
21
  .argument('<newOwner>', 'address of the new owner', stringToAddress)
23
22
  .action(async (address, newOwner) => {
24
- const contract = getDashboardContract(address);
23
+ const contract = await getDashboardContract(address);
25
24
  const vault = await callReadMethod(contract, 'stakingVault');
26
25
  const confirm = await confirmOperation(`Are you sure you want to transfer ownership of the staking vault ${vault} to ${newOwner}?`);
27
26
  if (!confirm)
@@ -37,11 +36,14 @@ dashboardWrite
37
36
  .description('disconnects the staking vault from the vault hub')
38
37
  .argument('<address>', 'dashboard address', stringToAddress)
39
38
  .action(async (address) => {
40
- const contract = getDashboardContract(address);
39
+ const contract = await getDashboardContract(address);
41
40
  const vault = await callReadMethod(contract, 'stakingVault');
42
41
  const confirm = await confirmOperation(`Are you sure you want to disconnect the staking vault ${vault}?`);
43
42
  if (!confirm)
44
43
  return;
44
+ const isReportFresh = await checkIsReportFresh(vault);
45
+ if (!isReportFresh)
46
+ return;
45
47
  await callWriteMethodWithReceipt({
46
48
  contract,
47
49
  methodName: 'voluntaryDisconnect',
@@ -54,7 +56,7 @@ dashboardWrite
54
56
  .argument('<address>', 'dashboard address', stringToAddress)
55
57
  .argument('<ether>', 'amount of ether to be funded (in ETH)')
56
58
  .action(async (address, ether) => {
57
- const contract = getDashboardContract(address);
59
+ const contract = await getDashboardContract(address);
58
60
  const vault = await callReadMethod(contract, 'stakingVault');
59
61
  const confirm = await confirmOperation(`Are you sure you want to fund the staking vault ${vault} with ${ether} ether?`);
60
62
  if (!confirm)
@@ -73,7 +75,7 @@ dashboardWrite
73
75
  .argument('<recipient>', 'address of the recipient', stringToAddress)
74
76
  .argument('<eth>', 'amount of ether to withdraw (in ETH)')
75
77
  .action(async (address, recipient, ether) => {
76
- const contract = getDashboardContract(address);
78
+ const contract = await getDashboardContract(address);
77
79
  const vault = await callReadMethod(contract, 'stakingVault');
78
80
  const confirm = await confirmOperation(`Are you sure you want to withdraw ${ether} from the staking vault ${vault} to ${recipient}?`);
79
81
  if (!confirm)
@@ -93,7 +95,7 @@ dashboardWrite
93
95
  .argument('<address>', 'dashboard address', stringToAddress)
94
96
  .argument('<validatorPubKey>', 'public key of the validator to exit')
95
97
  .action(async (address, validatorPubKey) => {
96
- const contract = getDashboardContract(address);
98
+ const contract = await getDashboardContract(address);
97
99
  const vault = await callReadMethod(contract, 'stakingVault');
98
100
  const confirm = await confirmOperation(`Are you sure you want to exit the validator ${validatorPubKey} from the staking vault ${vault}?`);
99
101
  if (!confirm)
@@ -113,9 +115,9 @@ dashboardWrite
113
115
  .argument('<recipient>', 'address of the recipient', stringToAddress)
114
116
  .action(async (address, pubkeys, amounts, recipient) => {
115
117
  const mergedPubkeys = pubkeys.join('');
116
- const contract = getDashboardContract(address);
118
+ const contract = await getDashboardContract(address);
117
119
  const vault = await callReadMethod(contract, 'stakingVault');
118
- const vaultContract = getStakingVaultContract(vault);
120
+ const vaultContract = await getStakingVaultContract(vault);
119
121
  const fee = await callReadMethod(vaultContract, 'calculateValidatorWithdrawalFee', [BigInt(amounts.length)]);
120
122
  const confirmationMessage = `Are you sure you want to trigger the withdrawal of the validators
121
123
  ${pubkeys.join(', ')}
@@ -124,10 +126,11 @@ dashboardWrite
124
126
  const confirm = await confirmOperation(confirmationMessage);
125
127
  if (!confirm)
126
128
  return;
129
+ const gweiAmounts = amounts.map((amount) => parseEther(formatEther(amount), 'gwei'));
127
130
  await callWriteMethodWithReceipt({
128
131
  contract,
129
132
  methodName: 'triggerValidatorWithdrawals',
130
- payload: [mergedPubkeys, amounts.map(BigInt), recipient],
133
+ payload: [mergedPubkeys, gweiAmounts, recipient],
131
134
  value: fee,
132
135
  });
133
136
  });
@@ -139,7 +142,7 @@ dashboardWrite
139
142
  .argument('<recipient>', 'address of the recipient', stringToAddress)
140
143
  .argument('<amountOfShares>', 'amount of shares to mint (in Shares)')
141
144
  .action(async (address, recipient, amountOfShares) => {
142
- const contract = getDashboardContract(address);
145
+ const contract = await getDashboardContract(address);
143
146
  const vault = await callReadMethod(contract, 'stakingVault');
144
147
  await mintShares(contract, recipient, parseEther(amountOfShares), vault, 'mintShares');
145
148
  });
@@ -150,7 +153,7 @@ dashboardWrite
150
153
  .argument('<recipient>', 'address of the recipient', stringToAddress)
151
154
  .argument('<amountOfSteth>', 'amount of stETH to mint')
152
155
  .action(async (address, recipient, amountOfSteth) => {
153
- const contract = getDashboardContract(address);
156
+ const contract = await getDashboardContract(address);
154
157
  const vault = await callReadMethod(contract, 'stakingVault');
155
158
  await mintSteth(contract, recipient, parseEther(amountOfSteth), vault);
156
159
  });
@@ -161,7 +164,7 @@ dashboardWrite
161
164
  .argument('<recipient>', 'address of the recipient', stringToAddress)
162
165
  .argument('<amountOfWsteth>', 'amount of wstETH to mint')
163
166
  .action(async (address, recipient, amountOfWsteth) => {
164
- const contract = getDashboardContract(address);
167
+ const contract = await getDashboardContract(address);
165
168
  const vault = await callReadMethod(contract, 'stakingVault');
166
169
  await mintShares(contract, recipient, parseEther(amountOfWsteth), vault, 'mintWstETH');
167
170
  });
@@ -172,7 +175,7 @@ dashboardWrite
172
175
  .argument('<address>', 'dashboard address', stringToAddress)
173
176
  .argument('<amountOfShares>', 'amount of shares to burn (in Shares)')
174
177
  .action(async (address, amountOfShares) => {
175
- const contract = getDashboardContract(address);
178
+ const contract = await getDashboardContract(address);
176
179
  const vault = await callReadMethod(contract, 'stakingVault');
177
180
  await burnShares(contract, parseEther(amountOfShares), vault, 'burnShares');
178
181
  });
@@ -182,7 +185,7 @@ dashboardWrite
182
185
  .argument('<address>', 'dashboard address', stringToAddress)
183
186
  .argument('<amountOfShares>', 'amount of shares to burn (in stETH)')
184
187
  .action(async (address, amountOfShares) => {
185
- const contract = getDashboardContract(address);
188
+ const contract = await getDashboardContract(address);
186
189
  const vault = await callReadMethod(contract, 'stakingVault');
187
190
  await burnSteth(contract, parseEther(amountOfShares), vault);
188
191
  });
@@ -192,7 +195,7 @@ dashboardWrite
192
195
  .argument('<address>', 'dashboard address', stringToAddress)
193
196
  .argument('<tokens>', 'amount of wstETH tokens to burn (in wstETH)')
194
197
  .action(async (address, tokens) => {
195
- const contract = getDashboardContract(address);
198
+ const contract = await getDashboardContract(address);
196
199
  const vault = await callReadMethod(contract, 'stakingVault');
197
200
  await burnShares(contract, parseEther(tokens), vault, 'burnWstETH');
198
201
  });
@@ -202,15 +205,16 @@ dashboardWrite
202
205
  .argument('<address>', 'dashboard address', stringToAddress)
203
206
  .argument('<ether>', 'amount of ether to rebalance (in ETH)', etherToWei)
204
207
  .action(async (address, ether) => {
205
- const contract = getDashboardContract(address);
208
+ const contract = await getDashboardContract(address);
206
209
  const vault = await callReadMethod(contract, 'stakingVault');
207
- const confirm = await confirmOperation(`Are you sure you want to rebalance the vault ${vault} with ${formatEther(ether)} ether?`);
210
+ const confirm = await confirmOperation(`Are you sure you want to rebalance the vault ${vault} with ${formatEther(ether)} ether by transferring?`);
208
211
  if (!confirm)
209
212
  return;
210
213
  await callWriteMethodWithReceipt({
211
214
  contract,
212
215
  methodName: 'rebalanceVaultWithEther',
213
216
  payload: [ether],
217
+ value: ether,
214
218
  });
215
219
  });
216
220
  dashboardWrite
@@ -219,7 +223,7 @@ dashboardWrite
219
223
  .argument('<address>', 'dashboard address', stringToAddress)
220
224
  .argument('<shares>', 'amount of shares to rebalance (in shares)', etherToWei)
221
225
  .action(async (address, shares) => {
222
- const contract = getDashboardContract(address);
226
+ const contract = await getDashboardContract(address);
223
227
  const vault = await callReadMethod(contract, 'stakingVault');
224
228
  const confirm = await confirmOperation(`Are you sure you want to rebalance the vault ${vault} with ${formatEther(shares)} shares?`);
225
229
  if (!confirm)
@@ -232,38 +236,38 @@ dashboardWrite
232
236
  });
233
237
  dashboardWrite
234
238
  .command('recover-erc20')
235
- .description('recovers ERC20 tokens or ether from the dashboard contract to sender')
236
- .argument('<address>', 'dashboard address', stringToAddress)
237
- .argument('<token>', 'Address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether')
238
- .argument('<recipient>', 'Address of the recovery recipient', stringToAddress)
239
- .argument('<amount>', 'amount of ether to recover (in ETH)')
240
- .action(async (address, token, recipient, amount) => {
241
- const contract = getDashboardContract(address);
242
- const confirm = await confirmOperation(`Are you sure you want to recover ${amount} ${token} from the dashboard contract ${address} to ${recipient}?`);
239
+ .description('recovers ERC20 tokens or ether from the dashboard contract to the recipient')
240
+ .argument('<address>', 'dashboard address', stringToAddress)
241
+ .argument('<token>', 'address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether (EIP-7528)', stringToAddress)
242
+ .argument('<amount>', 'amount of tokens or ether to recover (in ETH)', etherToWei)
243
+ .argument('<recipient>', 'address of the recovery recipient', stringToAddress)
244
+ .action(async (address, token, amount, recipient) => {
245
+ const contract = await getDashboardContract(address);
246
+ const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with amount ${formatEther(amount)} from the dashboard contract ${address} to ${recipient}?`);
243
247
  if (!confirm)
244
248
  return;
245
249
  await callWriteMethodWithReceipt({
246
250
  contract,
247
251
  methodName: 'recoverERC20',
248
- payload: [token, recipient, parseEther(amount)],
252
+ payload: [token, recipient, amount],
249
253
  });
250
254
  });
251
255
  dashboardWrite
252
- .command('recover-erc721')
253
- .description('Transfers a given token_id of an ERC721-compatible NFT (defined by the token contract address)')
256
+ .command('collect-erc20-from-vault')
257
+ .description('collects ERC20 tokens from vault contract balance to the recipient')
254
258
  .argument('<address>', 'dashboard address', stringToAddress)
255
- .argument('<token>', 'an ERC721-compatible token')
256
- .argument('<tokenId>', 'token id to recover')
257
- .argument('<recipient>', 'Address of the recovery recipient', stringToAddress)
258
- .action(async (address, token, tokenId, recipient) => {
259
- const contract = getDashboardContract(address);
260
- const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with id ${tokenId} from the dashboard contract ${address} to ${recipient}?`);
259
+ .argument('<token>', 'address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether (EIP-7528)', stringToAddress)
260
+ .argument('<amount>', 'amount of tokens or ether to recover (in ETH)', etherToWei)
261
+ .argument('<recipient>', 'address of the recovery recipient', stringToAddress)
262
+ .action(async (address, token, amount, recipient) => {
263
+ const contract = await getDashboardContract(address);
264
+ const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with amount ${formatEther(amount)} from the dashboard contract ${address} to ${recipient}?`);
261
265
  if (!confirm)
262
266
  return;
263
267
  await callWriteMethodWithReceipt({
264
268
  contract,
265
- methodName: 'recoverERC721',
266
- payload: [token, BigInt(tokenId), recipient],
269
+ methodName: 'collectERC20FromVault',
270
+ payload: [token, recipient, amount],
267
271
  });
268
272
  });
269
273
  dashboardWrite
@@ -271,7 +275,7 @@ dashboardWrite
271
275
  .description('Pauses beacon chain deposits on the staking vault.')
272
276
  .argument('<address>', 'dashboard address', stringToAddress)
273
277
  .action(async (address) => {
274
- const contract = getDashboardContract(address);
278
+ const contract = await getDashboardContract(address);
275
279
  const vault = await callReadMethod(contract, 'stakingVault');
276
280
  const confirm = await confirmOperation(`Are you sure you want to pause beacon chain deposits on the staking vault ${vault}?`);
277
281
  if (!confirm)
@@ -284,10 +288,10 @@ dashboardWrite
284
288
  });
285
289
  dashboardWrite
286
290
  .command('deposit-resume')
287
- .description('Mass-grants multiple roles to multiple accounts.')
291
+ .description('resumes deposits to beacon chain')
288
292
  .argument('<address>', 'dashboard address', stringToAddress)
289
293
  .action(async (address) => {
290
- const contract = getDashboardContract(address);
294
+ const contract = await getDashboardContract(address);
291
295
  const vault = await callReadMethod(contract, 'stakingVault');
292
296
  const confirm = await confirmOperation(`Are you sure you want to resume beacon chain deposits on the staking vault ${vault}?`);
293
297
  if (!confirm)
@@ -300,7 +304,7 @@ dashboardWrite
300
304
  });
301
305
  dashboardWrite
302
306
  .command('role-grant')
303
- .description('Mass-revokes multiple roles from multiple accounts.')
307
+ .description('mass-grants multiple roles to multiple accounts.')
304
308
  .argument('<address>', 'dashboard address', stringToAddress)
305
309
  .argument('<roleAssignmentJSON>', 'JSON array of role assignments', jsonToRoleAssignment)
306
310
  .addHelpText('after', `Role assignment format:
@@ -311,7 +315,7 @@ dashboardWrite
311
315
  {second role assignment}
312
316
  ...]`)
313
317
  .action(async (address, roleAssignment) => {
314
- const contract = getDashboardContract(address);
318
+ const contract = await getDashboardContract(address);
315
319
  if (!Array.isArray(roleAssignment)) {
316
320
  throw new Error('the 2nd argument should be an array of role assignments');
317
321
  }
@@ -327,7 +331,7 @@ dashboardWrite
327
331
  });
328
332
  dashboardWrite
329
333
  .command('role-revoke')
330
- .description('Resumes beacon chain deposits on the staking vault.')
334
+ .description('mass-revokes multiple roles from multiple accounts')
331
335
  .argument('<address>', 'dashboard address', stringToAddress)
332
336
  .argument('<roleAssignmentJSON>', 'JSON array of role assignments', jsonToRoleAssignment)
333
337
  .addHelpText('after', `Role assignment format:
@@ -338,7 +342,7 @@ dashboardWrite
338
342
  {second role assignment}
339
343
  ...]`)
340
344
  .action(async (address, roleAssignment) => {
341
- const contract = getDashboardContract(address);
345
+ const contract = await getDashboardContract(address);
342
346
  if (!Array.isArray(roleAssignment)) {
343
347
  throw new Error('the 2nd argument should be an array of role assignments');
344
348
  }
@@ -352,31 +356,14 @@ dashboardWrite
352
356
  payload: [roleAssignment],
353
357
  });
354
358
  });
355
- dashboardWrite
356
- .command('compensate-disproven-predeposit')
357
- .alias('compensate')
358
- .description('Compensates ether of disproven validator`s predeposit from PDG to the recipient')
359
- .argument('<address>', 'dashboard address', stringToAddress)
360
- .argument('<pubkey>', 'validator that was proven invalid in PDG')
361
- .argument('<recipient>', 'address to receive the `PDG.PREDEPOSIT_AMOUNT`', stringToAddress)
362
- .action(async (address, pubkey, recipient) => {
363
- const contract = getDashboardContract(address);
364
- const confirm = await confirmOperation(`Are you sure you want to compensate the disproven predeposit from the Predeposit Guarantee contract ${contract} with validator public key ${pubkey} to ${recipient}?`);
365
- if (!confirm)
366
- return;
367
- await callWriteMethodWithReceipt({
368
- contract,
369
- methodName: 'compensateDisprovenPredepositFromPDG',
370
- payload: [pubkey, recipient],
371
- });
372
- });
373
359
  dashboardWrite
374
360
  .command('unguaranteed-deposit-to-beacon-chain')
375
361
  .alias('unguaranteed-deposit')
376
- .description('Withdraws ether from vault and deposits directly to provided validators bypassing the default PDG process')
362
+ .description('withdraws ether from vault and deposits directly to provided validators bypassing the default PDG process')
377
363
  .argument('<address>', 'dashboard address', stringToAddress)
378
364
  .argument('<deposits>', 'array of IStakingVault.Deposit structs containing deposit data', parseDepositArray)
379
- .addHelpText('after', `Deposit format:
365
+ .option('--no-bls-check', 'skip bls signature check')
366
+ .addHelpText('after', `Deposit format (amount are in gwei):
380
367
  '[{
381
368
  "pubkey": "...",
382
369
  "signature": "...",
@@ -385,13 +372,16 @@ dashboardWrite
385
372
  }
386
373
  {second deposit}
387
374
  ...]'`)
388
- .action(async (address, deposits) => {
389
- const contract = getDashboardContract(address);
375
+ .action(async (address, deposits, { blsCheck }) => {
376
+ const contract = await getDashboardContract(address);
390
377
  const vault = await callReadMethod(contract, 'stakingVault');
378
+ const vaultContract = await getStakingVaultContract(vault);
391
379
  const confirm = await confirmOperation(`Are you sure you want to unguaranteed deposit ${deposits.length} deposits to the beacon chain in the staking vault ${vault}?
392
380
  Pubkeys: ${deposits.map((i) => i.pubkey).join(', ')}`);
393
381
  if (!confirm)
394
382
  return;
383
+ if (blsCheck)
384
+ await checkBLSDeposits(vaultContract, deposits);
395
385
  await callWriteMethodWithReceipt({
396
386
  contract,
397
387
  methodName: 'unguaranteedDepositToBeaconChain',
@@ -401,23 +391,19 @@ dashboardWrite
401
391
  dashboardWrite
402
392
  .command('prove-unknown-validators-to-pdg')
403
393
  .alias('prove-unknown-validators')
404
- .description('Proves validators with correct vault WC if they are unknown to PDG')
394
+ .description('proves validators with correct vault WC if they are unknown to PDG')
405
395
  .argument('<address>', 'dashboard address', stringToAddress)
406
396
  .argument('<validatorIndex...>', 'index of the validator to prove')
407
397
  .action(async (address, validatorIndexes) => {
408
- const account = await getAccount();
409
- const contract = getDashboardContract(address);
398
+ const contract = await getDashboardContract(address);
410
399
  const vault = await callReadMethod(contract, 'stakingVault');
411
- const vaultContract = getStakingVaultContract(vault);
400
+ const vaultContract = await getStakingVaultContract(vault);
412
401
  const pdgContract = await callReadMethodSilent(vaultContract, 'depositor');
413
402
  const payload = [];
414
- const PDG_PROVE_VALIDATOR_ROLE = await callReadMethodSilent(contract, 'PDG_PROVE_VALIDATOR_ROLE');
415
- const hasRole = await callReadMethodSilent(contract, 'hasRole', [
416
- PDG_PROVE_VALIDATOR_ROLE,
417
- account.address,
418
- ]);
419
- if (!hasRole) {
420
- throw new Error(`You do not have role (PDG_PROVE_VALIDATOR_ROLE - ${PDG_PROVE_VALIDATOR_ROLE}) to prove validators to PDG`);
403
+ const pdgPolicy = await callReadMethodSilent(contract, 'pdgPolicy');
404
+ const isAllowed = pdgPolicy === 2;
405
+ if (!isAllowed) {
406
+ throw new Error(`Dashboard PDG policy is not set to allow proving unknown validators to PDG`);
421
407
  }
422
408
  for (const validatorIndex of validatorIndexes) {
423
409
  const hideSpinner = showSpinner({
@@ -454,7 +440,7 @@ dashboardWrite
454
440
  .argument('<address>', 'dashboard address', stringToAddress)
455
441
  .argument('<newOwner>', 'new owner address', stringToAddress)
456
442
  .action(async (address, newOwner) => {
457
- const contract = getDashboardContract(address);
443
+ const contract = await getDashboardContract(address);
458
444
  const vault = await callReadMethod(contract, 'stakingVault');
459
445
  const confirm = await confirmOperation(`Are you sure you want to abandon the dashboard ${address} (vault: ${vault})?`);
460
446
  if (!confirm)
@@ -468,12 +454,15 @@ dashboardWrite
468
454
  dashboardWrite
469
455
  .command('connect-to-vault-hub')
470
456
  .alias('connect-hub')
471
- .description('connects to VaultHub, transferring ownership to VaultHub.')
457
+ .description('connects to VaultHub, transferring underlying StakingVault ownership to VaultHub.')
472
458
  .argument('<address>', 'dashboard address', stringToAddress)
459
+ .addHelpText('after', `Reverts if settledGrowth is not corrected after the vault is disconnected`)
473
460
  .action(async (address) => {
474
- const contract = getDashboardContract(address);
461
+ const contract = await getDashboardContract(address);
475
462
  const vault = await callReadMethod(contract, 'stakingVault');
476
- const confirm = await confirmOperation(`Are you sure you want to connect the dashboard ${address} (vault: ${vault}) to VaultHub?`);
463
+ const currentSettledGrowth = await callReadMethodSilent(contract, 'settledGrowth');
464
+ const confirm = await confirmOperation(`Are you sure you want to connect the dashboard ${address} (vault: ${vault}) to VaultHub?
465
+ Current settled growth: ${formatEther(currentSettledGrowth)}`);
477
466
  if (!confirm)
478
467
  return;
479
468
  await callWriteMethodWithReceipt({
@@ -487,10 +476,13 @@ dashboardWrite
487
476
  .alias('reconnect-hub')
488
477
  .description('accepts the ownership over the StakingVault and connects to VaultHub. Can be called to reconnect to the hub after voluntaryDisconnect()')
489
478
  .argument('<address>', 'dashboard address', stringToAddress)
479
+ .addHelpText('after', `Reverts if settledGrowth is not corrected after the vault is disconnected`)
490
480
  .action(async (address) => {
491
- const contract = getDashboardContract(address);
481
+ const contract = await getDashboardContract(address);
492
482
  const vault = await callReadMethod(contract, 'stakingVault');
493
- const confirm = await confirmOperation(`Are you sure you want to reconnect the dashboard ${address} (vault: ${vault}) to VaultHub?`);
483
+ const currentSettledGrowth = await callReadMethodSilent(contract, 'settledGrowth');
484
+ const confirm = await confirmOperation(`Are you sure you want to reconnect the dashboard ${address} (vault: ${vault}) to VaultHub?
485
+ Current settled growth: ${formatEther(currentSettledGrowth)}`);
494
486
  if (!confirm)
495
487
  return;
496
488
  await callWriteMethodWithReceipt({
@@ -506,51 +498,47 @@ dashboardWrite
506
498
  .argument('<address>', 'dashboard address', stringToAddress)
507
499
  .argument('<tier>', 'tier to change to', stringToBigInt)
508
500
  .argument('<requestedShareLimit>', 'requested new share limit for the vault (in shares)', etherToWei)
509
- .action(async (address, tier, requestedShareLimit) => {
510
- const contract = getDashboardContract(address);
501
+ .option('-f, --fund', 'optional fund the vault with 1 ETH', false)
502
+ .addHelpText('after', `Reverts if settledGrowth is not corrected after the vault is disconnected`)
503
+ .action(async (address, tier, requestedShareLimit, { fund }) => {
504
+ const contract = await getDashboardContract(address);
511
505
  const vault = await callReadMethod(contract, 'stakingVault');
506
+ const currentSettledGrowth = await callReadMethodSilent(contract, 'settledGrowth');
512
507
  const confirm = await confirmOperation(`Are you sure you want to change the tier of the vault ${vault} to ${tier} and connect to VaultHub?
513
- Requested share limit: ${formatEther(requestedShareLimit)}`);
508
+ Requested share limit: ${formatEther(requestedShareLimit)}
509
+ Current settled growth: ${formatEther(currentSettledGrowth)}`);
514
510
  if (!confirm)
515
511
  return;
516
512
  await callWriteMethodWithReceipt({
517
513
  contract,
518
514
  methodName: 'connectAndAcceptTier',
519
515
  payload: [tier, requestedShareLimit],
516
+ value: fund ? parseEther('1') : undefined,
520
517
  });
521
518
  });
522
519
  dashboardWrite
523
- .command('increase-rewards-adjustment')
524
- .description('increases rewards adjustment to correct fee calculation due to non-rewards ether on CL')
525
- .argument('<address>', 'dashboard address', stringToAddress)
526
- .argument('<amount>', 'amount to increase the rewards adjustment by (in ETH)', etherToWei)
527
- .action(async (address, amount) => {
528
- const contract = getDashboardContract(address);
529
- const confirm = await confirmOperation(`Are you sure you want to increase the rewards adjustment by ${formatEther(amount)} ETH?`);
530
- if (!confirm)
531
- return;
532
- await callWriteMethodWithReceipt({
533
- contract,
534
- methodName: 'increaseRewardsAdjustment',
535
- payload: [amount],
536
- });
537
- });
538
- dashboardWrite
539
- .command('set-rewards-adjustment')
540
- .description('set `rewardsAdjustment` to a new proposed value if `confirmingRoles()` agree')
541
- .argument('<address>', 'dashboard address', stringToAddress)
542
- .argument('<amount>', 'amount to set the accrued rewards adjustment to (in ETH)', etherToWei)
543
- .action(async (address, amount) => {
544
- const contract = getDashboardContract(address);
545
- const currentAdjustment = await callReadMethod(contract, 'rewardsAdjustment');
546
- const confirm = await confirmOperation(`Are you sure you want to set the rewards adjustment to ${formatEther(amount)} ETH?
547
- Current adjustment: ${formatEther(currentAdjustment[0])} ETH`);
520
+ .command('set-pdg-policy')
521
+ .description('set the PDG policy')
522
+ .argument('<address>', 'dashboard address', stringToAddress)
523
+ .argument('<policy>', 'policy to set the PDG policy to', stringToNumber)
524
+ .addHelpText('after', `Policy values:
525
+ 0: STRICT
526
+ 1: ALLOW_PROVE
527
+ 2: ALLOW_DEPOSIT_AND_PROVE`)
528
+ .action(async (address, policy) => {
529
+ const contract = await getDashboardContract(address);
530
+ const PDG_POLICY = {
531
+ 0: 'STRICT',
532
+ 1: 'ALLOW_PROVE',
533
+ 2: 'ALLOW_DEPOSIT_AND_PROVE',
534
+ };
535
+ const confirm = await confirmOperation(`Are you sure you want to set the PDG policy to ${policy} (${PDG_POLICY[policy]})?`);
548
536
  if (!confirm)
549
537
  return;
550
538
  await callWriteMethodWithReceipt({
551
539
  contract,
552
- methodName: 'setRewardsAdjustment',
553
- payload: [amount, currentAdjustment[0]],
540
+ methodName: 'setPDGPolicy',
541
+ payload: [policy],
554
542
  });
555
543
  });
556
544
  dashboardWrite
@@ -560,13 +548,13 @@ dashboardWrite
560
548
  .argument('<address>', 'dashboard address', stringToAddress)
561
549
  .argument('<recipient>', 'address of the new node operator fee recipient', stringToAddress)
562
550
  .action(async (address, recipient) => {
563
- const contract = getDashboardContract(address);
551
+ const contract = await getDashboardContract(address);
564
552
  const confirm = await confirmOperation(`Are you sure you want to set the node operator fee recipient to ${recipient}?`);
565
553
  if (!confirm)
566
554
  return;
567
555
  await callWriteMethodWithReceipt({
568
556
  contract,
569
- methodName: 'setNodeOperatorFeeRecipient',
557
+ methodName: 'setFeeRecipient',
570
558
  payload: [recipient],
571
559
  });
572
560
  });
@@ -575,14 +563,26 @@ dashboardWrite
575
563
  .description('Confirms a proposal')
576
564
  .argument('<address>', 'dashboard address', stringToAddress)
577
565
  .action(async (address) => {
578
- const contract = getDashboardContract(address);
579
- const log = await confirmProposal(contract);
566
+ const contract = await getDashboardContract(address);
567
+ const vault = await callReadMethodSilent(contract, 'stakingVault');
568
+ const operatorGridContract = await getOperatorGridContract();
569
+ const log = await confirmProposal({
570
+ contract: contract,
571
+ vault,
572
+ additionalContracts: [operatorGridContract],
573
+ });
580
574
  if (!log)
581
575
  return;
576
+ const isChangeTier = log.decodedData.functionName === 'changeTier';
577
+ // ChangeTier event from OperatorGrid has 3 args (vault, tierId, shareLimit), but we need only 2 (tierId, shareLimit)
578
+ let args = log.decodedData.args;
579
+ if (isChangeTier && args && args.length === 3) {
580
+ args = [args[1], args[2]];
581
+ }
582
582
  await callWriteMethodWithReceipt({
583
583
  contract,
584
584
  methodName: log.decodedData.functionName,
585
- payload: log.decodedData.args,
585
+ payload: args,
586
586
  });
587
587
  });
588
588
  dashboardWrite
@@ -591,7 +591,7 @@ dashboardWrite
591
591
  .argument('<address>', 'dashboard address', stringToAddress)
592
592
  .argument('<expiry>', 'expiry in seconds', stringToBigInt)
593
593
  .action(async (address, expiry) => {
594
- const contract = getDashboardContract(address);
594
+ const contract = await getDashboardContract(address);
595
595
  const hours = Number(expiry) / 3600;
596
596
  const confirm = await confirmOperation(`Are you sure you want to set the confirm expiry to ${expiry} seconds (${hours} hours)?`);
597
597
  if (!confirm)
@@ -608,14 +608,14 @@ dashboardWrite
608
608
  .argument('<address>', 'dashboard address', stringToAddress)
609
609
  .argument('<fee>', 'the new node operator fee rate in basis points', stringToBigInt)
610
610
  .action(async (address, fee) => {
611
- const contract = getDashboardContract(address);
611
+ const contract = await getDashboardContract(address);
612
612
  const percentage = formatBP(fee);
613
613
  const confirm = await confirmOperation(`Are you sure you want to set the node operator fee ${fee} in basis points (${percentage})?`);
614
614
  if (!confirm)
615
615
  return;
616
616
  await callWriteMethodWithReceipt({
617
617
  contract,
618
- methodName: 'setNodeOperatorFeeRate',
618
+ methodName: 'setFeeRate',
619
619
  payload: [fee],
620
620
  });
621
621
  });
@@ -624,14 +624,123 @@ dashboardWrite
624
624
  .description('transfers the node-operator`s accrued fee (if any) to nodeOperatorFeeRecipient')
625
625
  .argument('<address>', 'dashboard address', stringToAddress)
626
626
  .action(async (address) => {
627
- const contract = getDashboardContract(address);
628
- const nodeOperatorFeeRecipient = await callReadMethodSilent(contract, 'nodeOperatorFeeRecipient');
627
+ const contract = await getDashboardContract(address);
628
+ const nodeOperatorFeeRecipient = await callReadMethodSilent(contract, 'feeRecipient');
629
629
  const confirm = await confirmOperation(`Are you sure you want to transfer the node operator fee to ${nodeOperatorFeeRecipient}?`);
630
630
  if (!confirm)
631
631
  return;
632
632
  await callWriteMethodWithReceipt({
633
633
  contract,
634
- methodName: 'disburseNodeOperatorFee',
634
+ methodName: 'disburseFee',
635
+ payload: [],
636
+ });
637
+ });
638
+ dashboardWrite
639
+ .command('change-tier')
640
+ .alias('ct')
641
+ .description('vault tier change with multi-role confirmation')
642
+ .argument('<address>', 'dashboard address', stringToAddress)
643
+ .argument('<tierId>', 'tier id', stringToBigInt)
644
+ .argument('<requestedShareLimit>', 'requested share limit (in shares)', etherToWei)
645
+ .action(async (address, tierId, requestedShareLimit) => {
646
+ const contract = await getDashboardContract(address);
647
+ const vault = await callReadMethod(contract, 'stakingVault');
648
+ const confirm = await confirmOperation(`Are you sure you want to change the current tier to tier ID ${tierId} for vault ${vault} with share limit ${formatEther(requestedShareLimit)} shares?`);
649
+ if (!confirm)
650
+ return;
651
+ await callWriteMethodWithReceipt({
652
+ contract,
653
+ methodName: 'changeTier',
654
+ payload: [tierId, requestedShareLimit],
655
+ });
656
+ });
657
+ dashboardWrite
658
+ .command('sync-tier')
659
+ .alias('st')
660
+ .description('requests a sync of tier on the OperatorGrid')
661
+ .argument('<address>', 'dashboard address', stringToAddress)
662
+ .addHelpText('after', `Tier sync confirmation logic:
663
+ - Both vault owner (via this function) AND node operator confirmations are required
664
+ - First call returns false (pending), second call with both confirmations completes the sync
665
+ - Confirmations expire after the configured period (default: 1 day)`)
666
+ .action(async (address) => {
667
+ const contract = await getDashboardContract(address);
668
+ const vault = await callReadMethod(contract, 'stakingVault');
669
+ const confirm = await confirmOperation(`Are you sure you want to sync the tier of the vault ${vault}?`);
670
+ if (!confirm)
671
+ return;
672
+ await callWriteMethodWithReceipt({
673
+ contract,
674
+ methodName: 'syncTier',
675
+ payload: [],
676
+ });
677
+ });
678
+ dashboardWrite
679
+ .command('update-share-limit')
680
+ .alias('usl')
681
+ .description('requests a change of share limit on the OperatorGrid')
682
+ .argument('<address>', 'dashboard address', stringToAddress)
683
+ .argument('<shareLimit>', 'share limit', etherToWei)
684
+ .action(async (address, shareLimit) => {
685
+ const contract = await getDashboardContract(address);
686
+ const vault = await callReadMethod(contract, 'stakingVault');
687
+ const confirm = await confirmOperation(`Are you sure you want to request a change of share limit on the OperatorGrid for the vault ${vault} to ${formatEther(shareLimit)}?`);
688
+ if (!confirm)
689
+ return;
690
+ await callWriteMethodWithReceipt({
691
+ contract,
692
+ methodName: 'updateShareLimit',
693
+ payload: [shareLimit],
694
+ });
695
+ });
696
+ dashboardWrite
697
+ .command('disburse-abnormally-high-fee')
698
+ .description('Disburses an abnormally high fee as `DEFAULT_ADMIN_ROLE`. Before calling this function, the caller must ensure that the high fee is expected, and the settled growth (used as baseline for fee) is set correctly.')
699
+ .argument('<address>', 'dashboard address', stringToAddress)
700
+ .action(async (address) => {
701
+ const contract = await getDashboardContract(address);
702
+ const confirm = await confirmOperation('Are you sure you want to disburse an abnormally high fee as `DEFAULT_ADMIN_ROLE`?');
703
+ if (!confirm)
704
+ return;
705
+ await callWriteMethodWithReceipt({
706
+ contract,
707
+ methodName: 'disburseAbnormallyHighFee',
708
+ payload: [],
709
+ });
710
+ });
711
+ dashboardWrite
712
+ .command('correct-settled-growth')
713
+ .description('Manually corrects the settled growth value with dual confirmation.')
714
+ .argument('<address>', 'dashboard address', stringToAddress)
715
+ .argument('<newSettledGrowth>', 'new settled growth', etherToWei)
716
+ .action(async (address, newSettledGrowth) => {
717
+ const contract = await getDashboardContract(address);
718
+ const currentSettledGrowth = await callReadMethodSilent(contract, 'settledGrowth');
719
+ const confirm = await confirmOperation(`Are you sure you want to correct the settled growth to ${newSettledGrowth}?
720
+ Current settled growth: ${formatEther(currentSettledGrowth)}`);
721
+ if (!confirm)
722
+ return;
723
+ await callWriteMethodWithReceipt({
724
+ contract,
725
+ methodName: 'correctSettledGrowth',
726
+ payload: [newSettledGrowth, currentSettledGrowth],
727
+ });
728
+ });
729
+ dashboardWrite
730
+ .command('recover-fee-leftover')
731
+ .alias('rfl')
732
+ .description('Recovers the previously collected fees to the feeRecipient address')
733
+ .argument('<address>', 'dashboard address', stringToAddress)
734
+ .action(async (address) => {
735
+ const contract = await getDashboardContract(address);
736
+ const feeLeftover = await callReadMethodSilent(contract, 'feeLeftover');
737
+ const confirm = await confirmOperation(`Are you sure you want to recover the fee leftover from the dashboard contract ${address}?
738
+ Fee leftover: ${formatEther(feeLeftover)}`);
739
+ if (!confirm)
740
+ return;
741
+ await callWriteMethodWithReceipt({
742
+ contract,
743
+ methodName: 'recoverFeeLeftover',
635
744
  payload: [],
636
745
  });
637
746
  });