@lidofinance/lsv-cli 1.0.0 → 1.2.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 (499) hide show
  1. package/dist/abi/AccessControlConfirmable.d.ts +3 -2
  2. package/dist/abi/AccessControlConfirmable.js +3 -1
  3. package/dist/abi/AccessControlConfirmable.js.map +1 -1
  4. package/dist/abi/Dashboard.d.ts +87 -30
  5. package/dist/abi/Dashboard.js +46 -32
  6. package/dist/abi/Dashboard.js.map +1 -1
  7. package/dist/abi/LazyOracle.d.ts +408 -3
  8. package/dist/abi/LazyOracle.js +59 -3
  9. package/dist/abi/LazyOracle.js.map +1 -1
  10. package/dist/abi/OperatorGrid.d.ts +52 -0
  11. package/dist/abi/OperatorGrid.js +16 -0
  12. package/dist/abi/OperatorGrid.js.map +1 -1
  13. package/dist/abi/PredepositGuarantee.d.ts +28 -0
  14. package/dist/abi/StakingVault.d.ts +56 -0
  15. package/dist/abi/StakingVault.js +2 -0
  16. package/dist/abi/StakingVault.js.map +1 -1
  17. package/dist/abi/ValidatorConsolidationRequests.d.ts +121 -0
  18. package/dist/abi/ValidatorConsolidationRequests.js +159 -0
  19. package/dist/abi/ValidatorConsolidationRequests.js.map +1 -0
  20. package/dist/abi/VaultFactory.d.ts +48 -4
  21. package/dist/abi/VaultHub.d.ts +38 -0
  22. package/dist/abi/VaultHub.js +13 -0
  23. package/dist/abi/VaultHub.js.map +1 -1
  24. package/dist/abi/VaultViewer.d.ts +130 -196
  25. package/dist/abi/VaultViewer.js +169 -257
  26. package/dist/abi/VaultViewer.js.map +1 -1
  27. package/dist/abi/defi-wrapper/Distributor.d.ts +486 -0
  28. package/dist/abi/defi-wrapper/Distributor.js +633 -0
  29. package/dist/abi/defi-wrapper/Distributor.js.map +1 -0
  30. package/dist/abi/defi-wrapper/Factory.d.ts +1184 -0
  31. package/dist/abi/defi-wrapper/Factory.js +932 -0
  32. package/dist/abi/defi-wrapper/Factory.js.map +1 -0
  33. package/dist/abi/defi-wrapper/StvPool.d.ts +1079 -0
  34. package/dist/abi/defi-wrapper/StvPool.js +1410 -0
  35. package/dist/abi/defi-wrapper/StvPool.js.map +1 -0
  36. package/dist/abi/defi-wrapper/StvStETHPool.d.ts +1772 -0
  37. package/dist/abi/defi-wrapper/StvStETHPool.js +2316 -0
  38. package/dist/abi/defi-wrapper/StvStETHPool.js.map +1 -0
  39. package/dist/abi/defi-wrapper/WithdrawalQueue.d.ts +1265 -0
  40. package/dist/abi/defi-wrapper/WithdrawalQueue.js +1647 -0
  41. package/dist/abi/defi-wrapper/WithdrawalQueue.js.map +1 -0
  42. package/dist/abi/defi-wrapper/index.d.ts +5 -0
  43. package/dist/abi/defi-wrapper/index.js +6 -0
  44. package/dist/abi/defi-wrapper/index.js.map +1 -0
  45. package/dist/abi/index.d.ts +1 -0
  46. package/dist/abi/index.js +1 -0
  47. package/dist/abi/index.js.map +1 -1
  48. package/dist/configs/constants.d.ts +44 -2
  49. package/dist/configs/constants.js +2 -2
  50. package/dist/configs/constants.js.map +1 -1
  51. package/dist/configs/deployed.d.ts +2 -2
  52. package/dist/configs/deployed.js +48 -6
  53. package/dist/configs/deployed.js.map +1 -1
  54. package/dist/configs/utils.d.ts +2 -0
  55. package/dist/configs/utils.js +12 -0
  56. package/dist/configs/utils.js.map +1 -1
  57. package/dist/contracts/dashboard-impl.d.ts +4 -0
  58. package/dist/contracts/dashboard-impl.js +17 -0
  59. package/dist/contracts/dashboard-impl.js.map +1 -0
  60. package/dist/contracts/dashboard.d.ts +2 -2
  61. package/dist/contracts/dashboard.js +3 -2
  62. package/dist/contracts/dashboard.js.map +1 -1
  63. package/dist/contracts/defi-wrapper/distributor.d.ts +4 -0
  64. package/dist/contracts/defi-wrapper/distributor.js +12 -0
  65. package/dist/contracts/defi-wrapper/distributor.js.map +1 -0
  66. package/dist/contracts/defi-wrapper/factory.d.ts +4 -0
  67. package/dist/contracts/defi-wrapper/factory.js +12 -0
  68. package/dist/contracts/defi-wrapper/factory.js.map +1 -0
  69. package/dist/contracts/defi-wrapper/index.d.ts +5 -0
  70. package/dist/contracts/defi-wrapper/index.js +6 -0
  71. package/dist/contracts/defi-wrapper/index.js.map +1 -0
  72. package/dist/contracts/defi-wrapper/stv-pool.d.ts +4 -0
  73. package/dist/contracts/defi-wrapper/stv-pool.js +12 -0
  74. package/dist/contracts/defi-wrapper/stv-pool.js.map +1 -0
  75. package/dist/contracts/defi-wrapper/stv-steth-pool.d.ts +4 -0
  76. package/dist/contracts/defi-wrapper/stv-steth-pool.js +12 -0
  77. package/dist/contracts/defi-wrapper/stv-steth-pool.js.map +1 -0
  78. package/dist/contracts/defi-wrapper/withdrawal-queue.d.ts +4 -0
  79. package/dist/contracts/defi-wrapper/withdrawal-queue.js +12 -0
  80. package/dist/contracts/defi-wrapper/withdrawal-queue.js.map +1 -0
  81. package/dist/contracts/index.d.ts +2 -0
  82. package/dist/contracts/index.js +2 -0
  83. package/dist/contracts/index.js.map +1 -1
  84. package/dist/contracts/lazy-oracle.js +3 -2
  85. package/dist/contracts/lazy-oracle.js.map +1 -1
  86. package/dist/contracts/locator.d.ts +3 -9655
  87. package/dist/contracts/locator.js +4 -3
  88. package/dist/contracts/locator.js.map +1 -1
  89. package/dist/contracts/operator-grid.d.ts +1 -1
  90. package/dist/contracts/operator-grid.js +3 -2
  91. package/dist/contracts/operator-grid.js.map +1 -1
  92. package/dist/contracts/pdg.js +3 -2
  93. package/dist/contracts/pdg.js.map +1 -1
  94. package/dist/contracts/steth.d.ts +54 -54
  95. package/dist/contracts/steth.js +3 -2
  96. package/dist/contracts/steth.js.map +1 -1
  97. package/dist/contracts/validator-consolidation-requests.d.ts +5 -0
  98. package/dist/contracts/validator-consolidation-requests.js +13 -0
  99. package/dist/contracts/validator-consolidation-requests.js.map +1 -0
  100. package/dist/contracts/vault-factory.d.ts +3 -27674
  101. package/dist/contracts/vault-factory.js +4 -3
  102. package/dist/contracts/vault-factory.js.map +1 -1
  103. package/dist/contracts/vault-hub.js +3 -2
  104. package/dist/contracts/vault-hub.js.map +1 -1
  105. package/dist/contracts/vault-viewer.d.ts +3 -11789
  106. package/dist/contracts/vault-viewer.js +9 -7
  107. package/dist/contracts/vault-viewer.js.map +1 -1
  108. package/dist/contracts/vault.d.ts +2 -2
  109. package/dist/contracts/vault.js +3 -2
  110. package/dist/contracts/vault.js.map +1 -1
  111. package/dist/contracts/wsteth.d.ts +3 -24690
  112. package/dist/contracts/wsteth.js +4 -3
  113. package/dist/contracts/wsteth.js.map +1 -1
  114. package/dist/features/consolidation.d.ts +18 -0
  115. package/dist/features/consolidation.js +199 -0
  116. package/dist/features/consolidation.js.map +1 -0
  117. package/dist/features/defi-wrapper/create-vault.d.ts +17 -0
  118. package/dist/features/defi-wrapper/create-vault.js +137 -0
  119. package/dist/features/defi-wrapper/create-vault.js.map +1 -0
  120. package/dist/features/defi-wrapper/defi-wrapper-factory.d.ts +112 -0
  121. package/dist/features/defi-wrapper/defi-wrapper-factory.js +228 -0
  122. package/dist/features/defi-wrapper/defi-wrapper-factory.js.map +1 -0
  123. package/dist/features/defi-wrapper/index.d.ts +3 -0
  124. package/dist/features/defi-wrapper/index.js +4 -0
  125. package/dist/features/defi-wrapper/index.js.map +1 -0
  126. package/dist/features/defi-wrapper/pool-info.d.ts +35 -0
  127. package/dist/features/defi-wrapper/pool-info.js +97 -0
  128. package/dist/features/defi-wrapper/pool-info.js.map +1 -0
  129. package/dist/features/deposits/check-bls-deposits.d.ts +2 -1
  130. package/dist/features/deposits/check-bls-deposits.js +11 -2
  131. package/dist/features/deposits/check-bls-deposits.js.map +1 -1
  132. package/dist/features/deposits/index.d.ts +1 -0
  133. package/dist/features/deposits/index.js +1 -0
  134. package/dist/features/deposits/index.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/deposits/pdg.d.ts +2 -0
  142. package/dist/features/deposits/pdg.js +18 -0
  143. package/dist/features/deposits/pdg.js.map +1 -0
  144. package/dist/features/dev-tools/impersonate.d.ts +14 -0
  145. package/dist/features/dev-tools/impersonate.js +64 -0
  146. package/dist/features/dev-tools/impersonate.js.map +1 -0
  147. package/dist/features/dev-tools/index.d.ts +1 -0
  148. package/dist/features/dev-tools/index.js +2 -0
  149. package/dist/features/dev-tools/index.js.map +1 -0
  150. package/dist/features/index.d.ts +4 -0
  151. package/dist/features/index.js +4 -0
  152. package/dist/features/index.js.map +1 -1
  153. package/dist/features/metrics.d.ts +4 -0
  154. package/dist/features/metrics.js +48 -0
  155. package/dist/features/metrics.js.map +1 -0
  156. package/dist/features/mint-burn/allowance.js +1 -1
  157. package/dist/features/mint-burn/allowance.js.map +1 -1
  158. package/dist/features/pdg.d.ts +7 -0
  159. package/dist/features/pdg.js +9 -5
  160. package/dist/features/pdg.js.map +1 -1
  161. package/dist/features/utils/get-boolean.d.ts +1 -0
  162. package/dist/features/utils/get-boolean.js +13 -0
  163. package/dist/features/utils/get-boolean.js.map +1 -0
  164. package/dist/features/utils/index.d.ts +1 -0
  165. package/dist/features/utils/index.js +1 -0
  166. package/dist/features/utils/index.js.map +1 -1
  167. package/dist/features/utils/quarantine.d.ts +2 -0
  168. package/dist/features/utils/quarantine.js +2 -0
  169. package/dist/features/utils/quarantine.js.map +1 -1
  170. package/dist/features/utils/report-fresh.js +19 -3
  171. package/dist/features/utils/report-fresh.js.map +1 -1
  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-operations/create-vault.d.ts +4 -2
  176. package/dist/features/vault-operations/create-vault.js +13 -5
  177. package/dist/features/vault-operations/create-vault.js.map +1 -1
  178. package/dist/features/vault-operations/dashboard-by-vault.js +4 -4
  179. package/dist/features/vault-operations/dashboard-by-vault.js.map +1 -1
  180. package/dist/features/vault-operations/vault-info.js +2 -2
  181. package/dist/features/vault-operations/vault-info.js.map +1 -1
  182. package/dist/features/vault-operations/vault-overview.js +10 -12
  183. package/dist/features/vault-operations/vault-overview.js.map +1 -1
  184. package/dist/features/vault-operations/vault-roles.d.ts +2 -1
  185. package/dist/features/vault-operations/vault-roles.js +25 -23
  186. package/dist/features/vault-operations/vault-roles.js.map +1 -1
  187. package/dist/features/vault-operations/vaults-by-role.d.ts +5 -0
  188. package/dist/features/vault-operations/vaults-by-role.js +123 -36
  189. package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
  190. package/dist/features/vault.js +4 -2
  191. package/dist/features/vault.js.map +1 -1
  192. package/dist/index.js +13 -4
  193. package/dist/index.js.map +1 -1
  194. package/dist/programs/account/read.js +1 -1
  195. package/dist/programs/account/read.js.map +1 -1
  196. package/dist/programs/account/write.js +14 -0
  197. package/dist/programs/account/write.js.map +1 -1
  198. package/dist/programs/contracts/dashboard/config.js +4 -0
  199. package/dist/programs/contracts/dashboard/config.js.map +1 -1
  200. package/dist/programs/contracts/dashboard/read.js +7 -7
  201. package/dist/programs/contracts/dashboard/read.js.map +1 -1
  202. package/dist/programs/contracts/dashboard/write.js +85 -61
  203. package/dist/programs/contracts/dashboard/write.js.map +1 -1
  204. package/dist/programs/contracts/hub/config.js +0 -10
  205. package/dist/programs/contracts/hub/config.js.map +1 -1
  206. package/dist/programs/contracts/hub/read.js +63 -2
  207. package/dist/programs/contracts/hub/read.js.map +1 -1
  208. package/dist/programs/contracts/hub/write.js +1 -1
  209. package/dist/programs/contracts/hub/write.js.map +1 -1
  210. package/dist/programs/contracts/lazy-oracle/config.js +33 -0
  211. package/dist/programs/contracts/lazy-oracle/config.js.map +1 -1
  212. package/dist/programs/contracts/operator-grid/write.js +2 -75
  213. package/dist/programs/contracts/operator-grid/write.js.map +1 -1
  214. package/dist/programs/contracts/pdg/read.js +4 -6
  215. package/dist/programs/contracts/pdg/read.js.map +1 -1
  216. package/dist/programs/contracts/pdg/write.js +76 -10
  217. package/dist/programs/contracts/pdg/write.js.map +1 -1
  218. package/dist/programs/contracts/vault/write.js +34 -23
  219. package/dist/programs/contracts/vault/write.js.map +1 -1
  220. package/dist/programs/contracts/vault-factory/write.js +25 -15
  221. package/dist/programs/contracts/vault-factory/write.js.map +1 -1
  222. package/dist/programs/contracts/vault-viewer/config.js +102 -59
  223. package/dist/programs/contracts/vault-viewer/config.js.map +1 -1
  224. package/dist/programs/contracts/vault-viewer/read.js +22 -76
  225. package/dist/programs/contracts/vault-viewer/read.js.map +1 -1
  226. package/dist/programs/defi-wrapper/contracts/distributor/config.d.ts +3 -0
  227. package/dist/programs/defi-wrapper/contracts/distributor/config.js +44 -0
  228. package/dist/programs/defi-wrapper/contracts/distributor/config.js.map +1 -0
  229. package/dist/programs/defi-wrapper/contracts/distributor/index.d.ts +3 -0
  230. package/dist/programs/defi-wrapper/contracts/distributor/index.js +4 -0
  231. package/dist/programs/defi-wrapper/contracts/distributor/index.js.map +1 -0
  232. package/dist/programs/defi-wrapper/contracts/distributor/main.d.ts +1 -0
  233. package/dist/programs/defi-wrapper/contracts/distributor/main.js +5 -0
  234. package/dist/programs/defi-wrapper/contracts/distributor/main.js.map +1 -0
  235. package/dist/programs/defi-wrapper/contracts/distributor/read.d.ts +1 -0
  236. package/dist/programs/defi-wrapper/contracts/distributor/read.js +40 -0
  237. package/dist/programs/defi-wrapper/contracts/distributor/read.js.map +1 -0
  238. package/dist/programs/defi-wrapper/contracts/distributor/write.d.ts +1 -0
  239. package/dist/programs/defi-wrapper/contracts/distributor/write.js +70 -0
  240. package/dist/programs/defi-wrapper/contracts/distributor/write.js.map +1 -0
  241. package/dist/programs/defi-wrapper/contracts/factory/config.d.ts +3 -0
  242. package/dist/programs/defi-wrapper/contracts/factory/config.js +2 -0
  243. package/dist/programs/defi-wrapper/contracts/factory/config.js.map +1 -0
  244. package/dist/programs/defi-wrapper/contracts/factory/index.d.ts +3 -0
  245. package/dist/programs/defi-wrapper/contracts/factory/index.js +4 -0
  246. package/dist/programs/defi-wrapper/contracts/factory/index.js.map +1 -0
  247. package/dist/programs/defi-wrapper/contracts/factory/main.d.ts +1 -0
  248. package/dist/programs/defi-wrapper/contracts/factory/main.js +6 -0
  249. package/dist/programs/defi-wrapper/contracts/factory/main.js.map +1 -0
  250. package/dist/programs/defi-wrapper/contracts/factory/read.d.ts +1 -0
  251. package/dist/programs/defi-wrapper/contracts/factory/read.js +50 -0
  252. package/dist/programs/defi-wrapper/contracts/factory/read.js.map +1 -0
  253. package/dist/programs/defi-wrapper/contracts/factory/write.d.ts +1 -0
  254. package/dist/programs/defi-wrapper/contracts/factory/write.js +144 -0
  255. package/dist/programs/defi-wrapper/contracts/factory/write.js.map +1 -0
  256. package/dist/programs/defi-wrapper/contracts/index.d.ts +6 -0
  257. package/dist/programs/defi-wrapper/contracts/index.js +7 -0
  258. package/dist/programs/defi-wrapper/contracts/index.js.map +1 -0
  259. package/dist/programs/defi-wrapper/contracts/main.d.ts +1 -0
  260. package/dist/programs/defi-wrapper/contracts/main.js +6 -0
  261. package/dist/programs/defi-wrapper/contracts/main.js.map +1 -0
  262. package/dist/programs/defi-wrapper/contracts/stv-pool/config.d.ts +3 -0
  263. package/dist/programs/defi-wrapper/contracts/stv-pool/config.js +73 -0
  264. package/dist/programs/defi-wrapper/contracts/stv-pool/config.js.map +1 -0
  265. package/dist/programs/defi-wrapper/contracts/stv-pool/index.d.ts +3 -0
  266. package/dist/programs/defi-wrapper/contracts/stv-pool/index.js +4 -0
  267. package/dist/programs/defi-wrapper/contracts/stv-pool/index.js.map +1 -0
  268. package/dist/programs/defi-wrapper/contracts/stv-pool/main.d.ts +1 -0
  269. package/dist/programs/defi-wrapper/contracts/stv-pool/main.js +6 -0
  270. package/dist/programs/defi-wrapper/contracts/stv-pool/main.js.map +1 -0
  271. package/dist/programs/defi-wrapper/contracts/stv-pool/read.d.ts +1 -0
  272. package/dist/programs/defi-wrapper/contracts/stv-pool/read.js +70 -0
  273. package/dist/programs/defi-wrapper/contracts/stv-pool/read.js.map +1 -0
  274. package/dist/programs/defi-wrapper/contracts/stv-pool/write.d.ts +1 -0
  275. package/dist/programs/defi-wrapper/contracts/stv-pool/write.js +138 -0
  276. package/dist/programs/defi-wrapper/contracts/stv-pool/write.js.map +1 -0
  277. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/config.d.ts +3 -0
  278. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/config.js +120 -0
  279. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/config.js.map +1 -0
  280. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/index.d.ts +3 -0
  281. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/index.js +4 -0
  282. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/index.js.map +1 -0
  283. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/main.d.ts +1 -0
  284. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/main.js +6 -0
  285. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/main.js.map +1 -0
  286. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.d.ts +1 -0
  287. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js +70 -0
  288. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js.map +1 -0
  289. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/write.d.ts +1 -0
  290. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/write.js +173 -0
  291. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/write.js.map +1 -0
  292. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/config.d.ts +3 -0
  293. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/config.js +66 -0
  294. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/config.js.map +1 -0
  295. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/index.d.ts +3 -0
  296. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/index.js +4 -0
  297. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/index.js.map +1 -0
  298. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/main.d.ts +1 -0
  299. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/main.js +6 -0
  300. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/main.js.map +1 -0
  301. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.d.ts +1 -0
  302. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js +65 -0
  303. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js.map +1 -0
  304. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.d.ts +1 -0
  305. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js +171 -0
  306. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js.map +1 -0
  307. package/dist/programs/defi-wrapper/index.d.ts +3 -0
  308. package/dist/programs/defi-wrapper/index.js +4 -0
  309. package/dist/programs/defi-wrapper/index.js.map +1 -0
  310. package/dist/programs/defi-wrapper/main.d.ts +1 -0
  311. package/dist/programs/defi-wrapper/main.js +6 -0
  312. package/dist/programs/defi-wrapper/main.js.map +1 -0
  313. package/dist/programs/defi-wrapper/use-cases/health/index.d.ts +3 -0
  314. package/dist/programs/defi-wrapper/use-cases/health/index.js +4 -0
  315. package/dist/programs/defi-wrapper/use-cases/health/index.js.map +1 -0
  316. package/dist/programs/defi-wrapper/use-cases/health/main.d.ts +1 -0
  317. package/dist/programs/defi-wrapper/use-cases/health/main.js +6 -0
  318. package/dist/programs/defi-wrapper/use-cases/health/main.js.map +1 -0
  319. package/dist/programs/defi-wrapper/use-cases/health/read.d.ts +1 -0
  320. package/dist/programs/defi-wrapper/use-cases/health/read.js +338 -0
  321. package/dist/programs/defi-wrapper/use-cases/health/read.js.map +1 -0
  322. package/dist/programs/defi-wrapper/use-cases/health/utils.d.ts +56 -0
  323. package/dist/programs/defi-wrapper/use-cases/health/utils.js +389 -0
  324. package/dist/programs/defi-wrapper/use-cases/health/utils.js.map +1 -0
  325. package/dist/programs/defi-wrapper/use-cases/health/write.d.ts +1 -0
  326. package/dist/programs/defi-wrapper/use-cases/health/write.js +254 -0
  327. package/dist/programs/defi-wrapper/use-cases/health/write.js.map +1 -0
  328. package/dist/programs/defi-wrapper/use-cases/index.d.ts +3 -0
  329. package/dist/programs/defi-wrapper/use-cases/index.js +4 -0
  330. package/dist/programs/defi-wrapper/use-cases/index.js.map +1 -0
  331. package/dist/programs/defi-wrapper/use-cases/main.d.ts +1 -0
  332. package/dist/programs/defi-wrapper/use-cases/main.js +6 -0
  333. package/dist/programs/defi-wrapper/use-cases/main.js.map +1 -0
  334. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.d.ts +1 -0
  335. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js +143 -0
  336. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js.map +1 -0
  337. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.d.ts +3 -0
  338. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js +5 -0
  339. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js.map +1 -0
  340. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/main.d.ts +1 -0
  341. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/main.js +6 -0
  342. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/main.js.map +1 -0
  343. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.d.ts +1 -0
  344. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js +130 -0
  345. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js.map +1 -0
  346. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.d.ts +1 -0
  347. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js +13 -0
  348. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js.map +1 -0
  349. package/dist/programs/dev-tools/anvil/index.d.ts +2 -0
  350. package/dist/programs/dev-tools/anvil/index.js +3 -0
  351. package/dist/programs/dev-tools/anvil/index.js.map +1 -0
  352. package/dist/programs/dev-tools/anvil/main.d.ts +1 -0
  353. package/dist/programs/dev-tools/anvil/main.js +5 -0
  354. package/dist/programs/dev-tools/anvil/main.js.map +1 -0
  355. package/dist/programs/dev-tools/anvil/write.d.ts +1 -0
  356. package/dist/programs/dev-tools/anvil/write.js +122 -0
  357. package/dist/programs/dev-tools/anvil/write.js.map +1 -0
  358. package/dist/programs/dev-tools/defi-wrapper/index.d.ts +2 -0
  359. package/dist/programs/dev-tools/defi-wrapper/index.js +3 -0
  360. package/dist/programs/dev-tools/defi-wrapper/index.js.map +1 -0
  361. package/dist/programs/dev-tools/defi-wrapper/main.d.ts +1 -0
  362. package/dist/programs/dev-tools/defi-wrapper/main.js +6 -0
  363. package/dist/programs/dev-tools/defi-wrapper/main.js.map +1 -0
  364. package/dist/programs/dev-tools/defi-wrapper/write.d.ts +1 -0
  365. package/dist/programs/dev-tools/defi-wrapper/write.js +77 -0
  366. package/dist/programs/dev-tools/defi-wrapper/write.js.map +1 -0
  367. package/dist/programs/dev-tools/index.d.ts +3 -0
  368. package/dist/programs/dev-tools/index.js +4 -0
  369. package/dist/programs/dev-tools/index.js.map +1 -0
  370. package/dist/programs/dev-tools/main.d.ts +1 -0
  371. package/dist/programs/dev-tools/main.js +6 -0
  372. package/dist/programs/dev-tools/main.js.map +1 -0
  373. package/dist/programs/index.d.ts +2 -0
  374. package/dist/programs/index.js +2 -0
  375. package/dist/programs/index.js.map +1 -1
  376. package/dist/programs/pdg-helpers.js +22 -18
  377. package/dist/programs/pdg-helpers.js.map +1 -1
  378. package/dist/programs/use-cases/consolidation/index.d.ts +2 -0
  379. package/dist/programs/use-cases/consolidation/index.js +3 -0
  380. package/dist/programs/use-cases/consolidation/index.js.map +1 -0
  381. package/dist/programs/use-cases/consolidation/main.d.ts +1 -0
  382. package/dist/programs/use-cases/consolidation/main.js +5 -0
  383. package/dist/programs/use-cases/consolidation/main.js.map +1 -0
  384. package/dist/programs/use-cases/consolidation/write.d.ts +1 -0
  385. package/dist/programs/use-cases/consolidation/write.js +78 -0
  386. package/dist/programs/use-cases/consolidation/write.js.map +1 -0
  387. package/dist/programs/use-cases/deposits/read.js +8 -4
  388. package/dist/programs/use-cases/deposits/read.js.map +1 -1
  389. package/dist/programs/use-cases/deposits/write.js +141 -16
  390. package/dist/programs/use-cases/deposits/write.js.map +1 -1
  391. package/dist/programs/use-cases/index.d.ts +1 -0
  392. package/dist/programs/use-cases/index.js +1 -0
  393. package/dist/programs/use-cases/index.js.map +1 -1
  394. package/dist/programs/use-cases/metrics/read.js +38 -33
  395. package/dist/programs/use-cases/metrics/read.js.map +1 -1
  396. package/dist/programs/use-cases/report/write.js +3 -0
  397. package/dist/programs/use-cases/report/write.js.map +1 -1
  398. package/dist/programs/use-cases/vault-operations/create-vault.js +13 -7
  399. package/dist/programs/use-cases/vault-operations/create-vault.js.map +1 -1
  400. package/dist/providers/wallet.d.ts +6986 -171
  401. package/dist/providers/wallet.js +15 -5
  402. package/dist/providers/wallet.js.map +1 -1
  403. package/dist/tests/utils/bigInt.test.d.ts +1 -0
  404. package/dist/tests/utils/bigInt.test.js +61 -0
  405. package/dist/tests/utils/bigInt.test.js.map +1 -0
  406. package/dist/types/config.d.ts +1 -0
  407. package/dist/utils/arguments.d.ts +8 -0
  408. package/dist/utils/arguments.js +56 -4
  409. package/dist/utils/arguments.js.map +1 -1
  410. package/dist/utils/bigInt.d.ts +2 -0
  411. package/dist/utils/bigInt.js +3 -0
  412. package/dist/utils/bigInt.js.map +1 -0
  413. package/dist/utils/bls.d.ts +2 -2
  414. package/dist/utils/bls.js +8 -7
  415. package/dist/utils/bls.js.map +1 -1
  416. package/dist/utils/cache.d.ts +30 -0
  417. package/dist/utils/cache.js +140 -3
  418. package/dist/utils/cache.js.map +1 -1
  419. package/dist/utils/calculate-overview-v2.js +1 -2
  420. package/dist/utils/calculate-overview-v2.js.map +1 -1
  421. package/dist/utils/calculate-overview.js +1 -2
  422. package/dist/utils/calculate-overview.js.map +1 -1
  423. package/dist/utils/charts/blessed/charts-apr.js +8 -18
  424. package/dist/utils/charts/blessed/charts-apr.js.map +1 -1
  425. package/dist/utils/charts/blessed/charts-rewards.js +7 -17
  426. package/dist/utils/charts/blessed/charts-rewards.js.map +1 -1
  427. package/dist/utils/charts/blessed/datasets/prepare-metrics.d.ts +5 -5
  428. package/dist/utils/charts/blessed/datasets/prepare-metrics.js +11 -11
  429. package/dist/utils/charts/blessed/datasets/prepare-metrics.js.map +1 -1
  430. package/dist/utils/charts/simple/simple-charts.js +8 -18
  431. package/dist/utils/charts/simple/simple-charts.js.map +1 -1
  432. package/dist/utils/commands/confirmations.js +1 -1
  433. package/dist/utils/commands/confirmations.js.map +1 -1
  434. package/dist/utils/commands/report.d.ts +1 -1
  435. package/dist/utils/commands/report.js +3 -2
  436. package/dist/utils/commands/report.js.map +1 -1
  437. package/dist/utils/consolidation/checks.d.ts +7 -0
  438. package/dist/utils/consolidation/checks.js +40 -0
  439. package/dist/utils/consolidation/checks.js.map +1 -0
  440. package/dist/utils/consolidation/confirms.d.ts +4 -0
  441. package/dist/utils/consolidation/confirms.js +41 -0
  442. package/dist/utils/consolidation/confirms.js.map +1 -0
  443. package/dist/utils/consolidation/index.d.ts +6 -0
  444. package/dist/utils/consolidation/index.js +7 -0
  445. package/dist/utils/consolidation/index.js.map +1 -0
  446. package/dist/utils/consolidation/logs.d.ts +3 -0
  447. package/dist/utils/consolidation/logs.js +41 -0
  448. package/dist/utils/consolidation/logs.js.map +1 -0
  449. package/dist/utils/consolidation/pubkeys.d.ts +8 -0
  450. package/dist/utils/consolidation/pubkeys.js +40 -0
  451. package/dist/utils/consolidation/pubkeys.js.map +1 -0
  452. package/dist/utils/consolidation/types.d.ts +11 -0
  453. package/dist/utils/consolidation/types.js +2 -0
  454. package/dist/utils/consolidation/types.js.map +1 -0
  455. package/dist/utils/consolidation/validator-info.d.ts +4 -0
  456. package/dist/utils/consolidation/validator-info.js +34 -0
  457. package/dist/utils/consolidation/validator-info.js.map +1 -0
  458. package/dist/utils/consolidation/validators-checks.d.ts +10 -0
  459. package/dist/utils/consolidation/validators-checks.js +58 -0
  460. package/dist/utils/consolidation/validators-checks.js.map +1 -0
  461. package/dist/utils/fetchCL.d.ts +36 -19
  462. package/dist/utils/fetchCL.js +82 -11
  463. package/dist/utils/fetchCL.js.map +1 -1
  464. package/dist/utils/health/health-utils.d.ts +54 -54
  465. package/dist/utils/health/health-utils.js +1 -1
  466. package/dist/utils/health/health-utils.js.map +1 -1
  467. package/dist/utils/index.d.ts +1 -0
  468. package/dist/utils/index.js +1 -0
  469. package/dist/utils/index.js.map +1 -1
  470. package/dist/utils/proof/constants.d.ts +6 -0
  471. package/dist/utils/proof/constants.js +7 -0
  472. package/dist/utils/proof/constants.js.map +1 -0
  473. package/dist/utils/proof/first-validator-gindex.js +0 -4
  474. package/dist/utils/proof/first-validator-gindex.js.map +1 -1
  475. package/dist/utils/proof/proofs.d.ts +7 -8
  476. package/dist/utils/proof/proofs.js +36 -28
  477. package/dist/utils/proof/proofs.js.map +1 -1
  478. package/dist/utils/read-programs-by-abi.d.ts +1 -1
  479. package/dist/utils/read-programs-by-abi.js +4 -18
  480. package/dist/utils/read-programs-by-abi.js.map +1 -1
  481. package/dist/utils/report/report.js +1 -1
  482. package/dist/utils/report/report.js.map +1 -1
  483. package/dist/utils/report/statistic-data.js +3 -3
  484. package/dist/utils/report/statistic-data.js.map +1 -1
  485. package/dist/utils/statistic/report-statistic.d.ts +6 -5
  486. package/dist/utils/statistic/report-statistic.js +15 -16
  487. package/dist/utils/statistic/report-statistic.js.map +1 -1
  488. package/dist/utils/transactions/tx-private-key.d.ts +2 -2
  489. package/dist/utils/transactions/tx-private-key.js +14 -9
  490. package/dist/utils/transactions/tx-private-key.js.map +1 -1
  491. package/dist/utils/transactions/tx-wc.d.ts +32 -2
  492. package/dist/utils/transactions/tx-wc.js +61 -33
  493. package/dist/utils/transactions/tx-wc.js.map +1 -1
  494. package/dist/utils/transactions/types.d.ts +4 -2
  495. package/dist/utils/wallet-connect.d.ts +4 -7664
  496. package/dist/utils/wallet-connect.js +17 -5
  497. package/dist/utils/wallet-connect.js.map +1 -1
  498. package/dist/version/index.js +1 -1
  499. package/package.json +5 -6
@@ -0,0 +1,171 @@
1
+ import { Option } from 'commander';
2
+ import { logInfo, getCommandsJson, stringToAddress, callWriteMethodWithReceipt, confirmOperation, stringToBigInt, stringToBigIntArray, } from '../../../../utils/index.js';
3
+ import { withdrawalQueue } from './main.js';
4
+ import { getWithdrawalQueueContract } from '../../../../contracts/defi-wrapper/index.js';
5
+ const withdrawalQueueWrite = withdrawalQueue
6
+ .command('write')
7
+ .alias('w')
8
+ .description('withdrawal queue write commands');
9
+ withdrawalQueueWrite.addOption(new Option('-cmd2json'));
10
+ withdrawalQueueWrite.on('option:-cmd2json', function () {
11
+ logInfo(getCommandsJson(withdrawalQueueWrite));
12
+ process.exit();
13
+ });
14
+ withdrawalQueueWrite
15
+ .command('pause')
16
+ .description('pause withdrawal requests placement and finalization')
17
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
18
+ .action(async (address) => {
19
+ const contract = await getWithdrawalQueueContract(address);
20
+ const confirmationMessage = `Are you sure you want to pause withdrawal requests placement and finalization for the withdrawal queue ${address}?`;
21
+ const confirm = await confirmOperation(confirmationMessage);
22
+ if (!confirm)
23
+ return;
24
+ await callWriteMethodWithReceipt({
25
+ contract,
26
+ methodName: 'pauseWithdrawals',
27
+ payload: [],
28
+ });
29
+ });
30
+ withdrawalQueueWrite
31
+ .command('resume')
32
+ .description('resume withdrawal requests placement and finalization')
33
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
34
+ .action(async (address) => {
35
+ const contract = await getWithdrawalQueueContract(address);
36
+ const confirmationMessage = `Are you sure you want to resume withdrawal requests placement and finalization for the withdrawal queue ${address}?`;
37
+ const confirm = await confirmOperation(confirmationMessage);
38
+ if (!confirm)
39
+ return;
40
+ await callWriteMethodWithReceipt({
41
+ contract,
42
+ methodName: 'resumeWithdrawals',
43
+ payload: [],
44
+ });
45
+ });
46
+ withdrawalQueueWrite
47
+ .command('pause-finalization')
48
+ .description('pause withdrawal requests finalization')
49
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
50
+ .action(async (address) => {
51
+ const contract = await getWithdrawalQueueContract(address);
52
+ const confirmationMessage = `Are you sure you want to pause withdrawal requests finalization for the withdrawal queue ${address}?`;
53
+ const confirm = await confirmOperation(confirmationMessage);
54
+ if (!confirm)
55
+ return;
56
+ await callWriteMethodWithReceipt({
57
+ contract,
58
+ methodName: 'pauseFinalization',
59
+ payload: [],
60
+ });
61
+ });
62
+ withdrawalQueueWrite
63
+ .command('resume-finalization')
64
+ .description('resume withdrawal requests finalization')
65
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
66
+ .action(async (address) => {
67
+ const contract = await getWithdrawalQueueContract(address);
68
+ const confirmationMessage = `Are you sure you want to resume withdrawal requests finalization for the withdrawal queue ${address}?`;
69
+ const confirm = await confirmOperation(confirmationMessage);
70
+ if (!confirm)
71
+ return;
72
+ await callWriteMethodWithReceipt({
73
+ contract,
74
+ methodName: 'resumeFinalization',
75
+ payload: [],
76
+ });
77
+ });
78
+ withdrawalQueueWrite
79
+ .command('request-withdrawals')
80
+ .description('request multiple withdrawals for a user')
81
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
82
+ .argument('<stv>', 'array of amounts of stv to withdraw', stringToBigIntArray)
83
+ .argument('<steth>', 'array of amounts of stETH shares to rebalance', stringToBigIntArray)
84
+ .argument('<address>', 'address that will be able to claim the created request', stringToAddress)
85
+ .action(async (address, stvToWithdraw, stethSharesToRebalance, owner) => {
86
+ const contract = await getWithdrawalQueueContract(address);
87
+ const confirmationMessage = `Are you sure you want to request multiple withdrawals for ${owner} with ${stvToWithdraw.join(', ')} stv and ${stethSharesToRebalance.join(', ')} steth shares for the withdrawal queue ${address}?`;
88
+ const confirm = await confirmOperation(confirmationMessage);
89
+ if (!confirm)
90
+ return;
91
+ await callWriteMethodWithReceipt({
92
+ contract,
93
+ methodName: 'requestWithdrawalBatch',
94
+ payload: [owner, stvToWithdraw, stethSharesToRebalance],
95
+ });
96
+ });
97
+ withdrawalQueueWrite
98
+ .command('request-withdrawal')
99
+ .description('request a withdrawal for a user')
100
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
101
+ .argument('<stv>', 'amount of stv to withdraw', stringToBigInt)
102
+ .argument('<steth>', 'amount of steth shares to rebalance', stringToBigInt)
103
+ .argument('<address>', 'address that will be able to claim the created request', stringToAddress)
104
+ .action(async (address, stvToWithdraw, stethSharesToRebalance, owner) => {
105
+ const contract = await getWithdrawalQueueContract(address);
106
+ const confirmationMessage = `Are you sure you want to request a withdrawal for ${owner} with ${stvToWithdraw} stv and ${stethSharesToRebalance} steth shares for the withdrawal queue ${address}?`;
107
+ const confirm = await confirmOperation(confirmationMessage);
108
+ if (!confirm)
109
+ return;
110
+ await callWriteMethodWithReceipt({
111
+ contract,
112
+ methodName: 'requestWithdrawal',
113
+ payload: [owner, stvToWithdraw, stethSharesToRebalance],
114
+ });
115
+ });
116
+ withdrawalQueueWrite
117
+ .command('finalize')
118
+ .description('finalize withdrawal requests')
119
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
120
+ .argument('<maxRequests>', 'the maximum number of requests to finalize', stringToBigInt)
121
+ .argument('<gasCostCoverageRecipient>', 'address to receive gas cost coverage', stringToAddress)
122
+ .action(async (address, maxRequests, gasCostCoverageRecipient) => {
123
+ const contract = await getWithdrawalQueueContract(address);
124
+ const confirmationMessage = `Are you sure you want to finalize up to ${maxRequests} withdrawal requests for the withdrawal queue ${address} to ${gasCostCoverageRecipient}?`;
125
+ const confirm = await confirmOperation(confirmationMessage);
126
+ if (!confirm)
127
+ return;
128
+ await callWriteMethodWithReceipt({
129
+ contract,
130
+ methodName: 'finalize',
131
+ payload: [maxRequests, gasCostCoverageRecipient],
132
+ });
133
+ });
134
+ withdrawalQueueWrite
135
+ .command('claim-withdrawal')
136
+ .description('claim one `_requestId` request once finalized sending locked ether to the owner')
137
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
138
+ .argument('<requestId>', 'request id to claim', stringToBigInt)
139
+ .argument('<recipient>', 'address where claimed ether will be sent to', stringToAddress)
140
+ .action(async (address, requestId, recipient) => {
141
+ const contract = await getWithdrawalQueueContract(address);
142
+ const confirmationMessage = `Are you sure you want to claim request ${requestId} and send the claimed ether to ${recipient} for the withdrawal queue ${address}?`;
143
+ const confirm = await confirmOperation(confirmationMessage);
144
+ if (!confirm)
145
+ return;
146
+ await callWriteMethodWithReceipt({
147
+ contract,
148
+ methodName: 'claimWithdrawal',
149
+ payload: [recipient, requestId],
150
+ });
151
+ });
152
+ withdrawalQueueWrite
153
+ .command('claim-withdrawals')
154
+ .description('claim one `_requestId` request once finalized sending locked ether to the owner')
155
+ .argument('<address>', 'withdrawal queue address', stringToAddress)
156
+ .argument('<requestIds>', 'array of request ids to claim', stringToBigIntArray)
157
+ .argument('<hints>', 'checkpoint hints. can be found with `findCheckpointHints(_requestIds, 1, getLastCheckpointIndex())`', stringToBigIntArray)
158
+ .argument('<recipient>', 'address where claimed ether will be sent to', stringToAddress)
159
+ .action(async (address, requestIds, hints, recipient) => {
160
+ const contract = await getWithdrawalQueueContract(address);
161
+ const confirmationMessage = `Are you sure you want to claim requests ${requestIds.join(', ')} and send the claimed ether to ${recipient} for the withdrawal queue ${address}?`;
162
+ const confirm = await confirmOperation(confirmationMessage);
163
+ if (!confirm)
164
+ return;
165
+ await callWriteMethodWithReceipt({
166
+ contract,
167
+ methodName: 'claimWithdrawalBatch',
168
+ payload: [recipient, requestIds, hints],
169
+ });
170
+ });
171
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../../programs/defi-wrapper/contracts/withdrawal-queue/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './main.js';
2
+ export * from './contracts/index.js';
3
+ export * from './use-cases/index.js';
@@ -0,0 +1,4 @@
1
+ export * from './main.js';
2
+ export * from './contracts/index.js';
3
+ export * from './use-cases/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../programs/defi-wrapper/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const defiWrapper: import("commander").Command;
@@ -0,0 +1,6 @@
1
+ import { program } from '../../command/index.js';
2
+ export const defiWrapper = program
3
+ .command('defi-wrapper')
4
+ .alias('dw')
5
+ .description('defi wrapper commands');
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../programs/defi-wrapper/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO;KAC/B,OAAO,CAAC,cAAc,CAAC;KACvB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './main.js';
2
+ export * from './read.js';
3
+ export * from './write.js';
@@ -0,0 +1,4 @@
1
+ export * from './main.js';
2
+ export * from './read.js';
3
+ export * from './write.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../programs/defi-wrapper/use-cases/health/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const health: import("commander").Command;
@@ -0,0 +1,6 @@
1
+ import { useCases } from '../main.js';
2
+ export const health = useCases
3
+ .command('health')
4
+ .alias('h')
5
+ .description('health monitoring commands for stv-steth-pool positions');
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../programs/defi-wrapper/use-cases/health/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ;KAC3B,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,yDAAyD,CAAC,CAAC"}
@@ -0,0 +1,338 @@
1
+ import { formatEther, formatUnits } from 'viem';
2
+ import { health } from './main.js';
3
+ import { getStvStethPoolContract } from '../../../../contracts/defi-wrapper/index.js';
4
+ import { getStethContract } from '../../../../contracts/index.js';
5
+ import { stringToAddress, logTable, logInfo, callReadMethodSilent, stringToNumber, formatBP, } from '../../../../utils/index.js';
6
+ import { getPublicClient } from '../../../../providers/index.js';
7
+ import { isThresholdBreached, calculateEffectiveLTV, calculateThresholdExcess, calculateBalancesFromEvents, } from './utils.js';
8
+ const healthRead = health
9
+ .command('read')
10
+ .aliases(['r'])
11
+ .description('health read commands');
12
+ healthRead
13
+ .command('list-unhealthy')
14
+ .description('list all unhealthy positions in the pool')
15
+ .argument('<address>', 'stv-steth-pool address', stringToAddress)
16
+ .option('--from-block <number>', 'from block number', stringToNumber)
17
+ .option('--to-block <number>', 'to block number (default: latest)', stringToNumber)
18
+ .option('--batch-size <number>', 'max blocks per RPC call (default: 30000)', stringToNumber)
19
+ .option('--verbose', 'show verbose output', false)
20
+ .action(async (address, options) => {
21
+ const poolContract = await getStvStethPoolContract(address);
22
+ const stethContract = await getStethContract();
23
+ logInfo('Fetching pool configuration...');
24
+ // Get pool configuration
25
+ const [forcedRebalanceThresholdBP, name, symbol] = await Promise.all([
26
+ callReadMethodSilent(poolContract, 'forcedRebalanceThresholdBP'),
27
+ callReadMethodSilent(poolContract, 'name'),
28
+ callReadMethodSilent(poolContract, 'symbol'),
29
+ ]);
30
+ logInfo(`Pool: ${name} (${symbol}) at ${address}\nForced Rebalance Threshold: ${formatBP(forcedRebalanceThresholdBP)}\n`);
31
+ // Check health for each account
32
+ const unhealthyPositions = [];
33
+ // Calculate balances from indexed events
34
+ logInfo('📊 Calculating balances from indexed events');
35
+ const balances = await calculateBalancesFromEvents({
36
+ poolAddress: address,
37
+ fromBlock: options.fromBlock,
38
+ toBlock: options.toBlock,
39
+ batchSize: options.batchSize,
40
+ });
41
+ logInfo(`Found ${balances.size} accounts with positions. Checking health...\n`);
42
+ for (const [account, balance] of balances) {
43
+ try {
44
+ const stvBalance = balance.stvBalance;
45
+ const debtShares = balance.debtShares;
46
+ // Still check contract's isHealthy for comparison
47
+ const isHealthy = await callReadMethodSilent(poolContract, 'isHealthyOf', [account]);
48
+ if (options.verbose) {
49
+ logInfo(`Account: ${account}
50
+ stvBalance: ${formatUnits(stvBalance, 27)} STV
51
+ debtShares: ${formatEther(debtShares)} shares
52
+ isHealthy (from contract): ${isHealthy}
53
+ `);
54
+ }
55
+ // Skip accounts with no position
56
+ if (stvBalance === 0n && debtShares === 0n) {
57
+ if (options.verbose) {
58
+ logInfo(` Skipping account ${account} - no position\n`);
59
+ }
60
+ continue;
61
+ }
62
+ // Calculate values in ETH
63
+ const stvInEth = stvBalance > 0n
64
+ ? await callReadMethodSilent(poolContract, 'previewRedeem', [
65
+ stvBalance,
66
+ ])
67
+ : 0n;
68
+ const debtInEth = debtShares > 0n
69
+ ? await callReadMethodSilent(stethContract, 'getPooledEthBySharesRoundUp', [debtShares])
70
+ : 0n;
71
+ if (options.verbose) {
72
+ logInfo(` stvInEth: ${formatEther(stvInEth)} ETH`);
73
+ logInfo(` debtInEth: ${formatEther(debtInEth)} ETH`);
74
+ logInfo(` forcedRebalanceThresholdBP: ${formatBP(forcedRebalanceThresholdBP)}`);
75
+ }
76
+ // Use contract-accurate threshold check
77
+ const thresholdBreached = isThresholdBreached({
78
+ assets: stvInEth,
79
+ stethShares: debtShares,
80
+ debtInEth,
81
+ forcedRebalanceThresholdBP,
82
+ verbose: options.verbose,
83
+ });
84
+ // Calculate display metrics
85
+ const ltvRatio = calculateEffectiveLTV({
86
+ assets: stvInEth,
87
+ debtInEth,
88
+ });
89
+ const thresholdExcess = calculateThresholdExcess({
90
+ assets: stvInEth,
91
+ stethShares: debtShares,
92
+ debtInEth,
93
+ forcedRebalanceThresholdBP,
94
+ verbose: options.verbose,
95
+ });
96
+ if (options.verbose) {
97
+ logInfo(` thresholdBreached (our calc): ${thresholdBreached}
98
+ ltvRatio: ${ltvRatio / 100}%
99
+ thresholdExcess: ${thresholdExcess / 100}%
100
+ `);
101
+ }
102
+ // Sanity check: contract's isHealthy should be inverse of our thresholdBreached
103
+ // isHealthy = true means healthy, thresholdBreached = false means healthy
104
+ if (isHealthy === thresholdBreached) {
105
+ logInfo(` ⚠️ MISMATCH: Contract isHealthy=${isHealthy}, our thresholdBreached=${thresholdBreached}`);
106
+ logInfo(`⚠️ WARNING: Health check mismatch for ${account}! Contract isHealthy=${isHealthy}, but our thresholdBreached=${thresholdBreached}`);
107
+ }
108
+ else {
109
+ if (options.verbose) {
110
+ logInfo(' ✅ Health check matches contract');
111
+ }
112
+ }
113
+ if (!isHealthy && stvBalance > 0n) {
114
+ unhealthyPositions.push({
115
+ account,
116
+ stvBalance,
117
+ stvInEth,
118
+ debtShares,
119
+ debtInEth,
120
+ ltvRatio,
121
+ isHealthy,
122
+ thresholdExcess,
123
+ });
124
+ }
125
+ }
126
+ catch (error) {
127
+ logInfo(`Error checking account ${account}: ${error}`);
128
+ }
129
+ }
130
+ // Sort by threshold excess descending (most critical first)
131
+ unhealthyPositions.sort((a, b) => b.thresholdExcess - a.thresholdExcess);
132
+ if (unhealthyPositions.length === 0) {
133
+ logInfo('✅ No unhealthy positions found!');
134
+ return;
135
+ }
136
+ logInfo('⚠️ Unhealthy Positions Report\n');
137
+ const tableData = unhealthyPositions.map((p) => [
138
+ p.account,
139
+ `${formatUnits(p.stvBalance, 27)} STV`,
140
+ `${formatEther(p.debtShares)} shares`,
141
+ `${formatEther(p.debtInEth)} ETH`,
142
+ `${(p.ltvRatio / 100).toFixed(2)}%`, // Display LTV
143
+ `+${(p.thresholdExcess / 100).toFixed(2)}%`, // How much over threshold
144
+ p.thresholdExcess > 1000 // > 10% over threshold
145
+ ? '🚨 CRITICAL'
146
+ : '⚠️ UNHEALTHY',
147
+ ]);
148
+ logTable({
149
+ params: {
150
+ head: [
151
+ 'Account',
152
+ 'STV Balance',
153
+ 'Debt (shares)',
154
+ 'Debt (ETH)',
155
+ 'LTV Ratio',
156
+ 'Over Threshold',
157
+ 'Status',
158
+ ],
159
+ },
160
+ data: tableData,
161
+ });
162
+ logInfo(`\nTotal Unhealthy Accounts: ${unhealthyPositions.length}`);
163
+ logInfo(`Threshold: ${(Number(forcedRebalanceThresholdBP) / 100).toFixed(2)}%`);
164
+ });
165
+ healthRead
166
+ .command('calculate-rebalance-need')
167
+ .description('calculate total ETH needed to rebalance all unhealthy positions')
168
+ .argument('<address>', 'stv-steth-pool address', stringToAddress)
169
+ .option('--from-block <number>', 'from block number', stringToNumber)
170
+ .option('--batch-size <number>', 'max blocks per RPC call (default: 30000)', stringToNumber)
171
+ .option('--verbose', 'show verbose output', false)
172
+ .action(async (address, options) => {
173
+ const poolContract = await getStvStethPoolContract(address);
174
+ const stethContract = await getStethContract();
175
+ logInfo('Calculating rebalance requirements...\n');
176
+ // Get pool info
177
+ const [name, symbol, totalExceedingMintedSteth, vaultAddress] = await Promise.all([
178
+ callReadMethodSilent(poolContract, 'name'),
179
+ callReadMethodSilent(poolContract, 'symbol'),
180
+ callReadMethodSilent(poolContract, 'totalExceedingMintedSteth'),
181
+ callReadMethodSilent(poolContract, 'VAULT'),
182
+ ]);
183
+ logInfo(`Pool: ${name} (${symbol}) at ${address}\n`);
184
+ // Calculate balances from indexed events
185
+ const balances = await calculateBalancesFromEvents({
186
+ poolAddress: address,
187
+ fromBlock: options.fromBlock,
188
+ batchSize: options.batchSize,
189
+ });
190
+ const rebalanceRequirements = [];
191
+ let totalStethRequired = 0n;
192
+ for (const [account, balance] of balances) {
193
+ try {
194
+ // Skip accounts with no position
195
+ if (balance.stvBalance === 0n && balance.debtShares === 0n) {
196
+ continue;
197
+ }
198
+ const isHealthy = await callReadMethodSilent(poolContract, 'isHealthyOf', [account]);
199
+ if (!isHealthy) {
200
+ // Call previewForceRebalance
201
+ const [stethShares, stvToBurn, isUndercollateralized] = await callReadMethodSilent(poolContract, 'previewForceRebalance', [account]);
202
+ if (stvToBurn > 0n) {
203
+ // Convert stETH shares to ETH
204
+ const stethInEth = await callReadMethodSilent(stethContract, 'getPooledEthBySharesRoundUp', [stethShares]);
205
+ rebalanceRequirements.push({
206
+ account,
207
+ stvToBurn,
208
+ stethShares,
209
+ stethInEth,
210
+ isUndercollateralized,
211
+ });
212
+ totalStethRequired += stethInEth;
213
+ }
214
+ }
215
+ }
216
+ catch (error) {
217
+ logInfo(`Error processing account ${account}: ${error}`);
218
+ }
219
+ }
220
+ // Get vault balance
221
+ const publicClient = await getPublicClient();
222
+ const vaultEthBalance = await publicClient.getBalance({
223
+ address: vaultAddress,
224
+ });
225
+ // Calculate adjusted requirement after exceeding stETH
226
+ // "Exceeding minted stETH" is already available in the pool and can be used
227
+ // for rebalancing WITHOUT providing additional ETH.
228
+ // So we subtract it from total required to get the REAL ETH need.
229
+ const adjustedRequirement = totalStethRequired > totalExceedingMintedSteth
230
+ ? totalStethRequired - totalExceedingMintedSteth
231
+ : 0n;
232
+ // Calculate ETH shortfall: how much MORE ETH is needed beyond vault balance
233
+ const ethShortfall = adjustedRequirement > vaultEthBalance
234
+ ? adjustedRequirement - vaultEthBalance
235
+ : 0n;
236
+ // Output summary
237
+ logInfo('═'.repeat(70));
238
+ logInfo('REBALANCE REQUIREMENTS REPORT');
239
+ logInfo('═'.repeat(70) + '\n');
240
+ logTable({
241
+ data: [
242
+ ['Pool', address],
243
+ ['Pool Name', `${name} (${symbol})`],
244
+ ['', ''],
245
+ ['📊 Unhealthy Accounts', rebalanceRequirements.length.toString()],
246
+ ['', ''],
247
+ ['═══ REBALANCE NEEDS ═══', ''],
248
+ [
249
+ '1️⃣ Total stETH Required (raw)',
250
+ `${formatEther(totalStethRequired)} ETH`,
251
+ ],
252
+ [
253
+ '2️⃣ Exceeding Minted stETH (available)',
254
+ totalExceedingMintedSteth > 0n
255
+ ? `${formatEther(totalExceedingMintedSteth)} ETH ✅`
256
+ : `${formatEther(totalExceedingMintedSteth)} ETH`,
257
+ ],
258
+ [
259
+ '3️⃣ After Exceeding Adjustment',
260
+ adjustedRequirement > 0n
261
+ ? `${formatEther(adjustedRequirement)} ETH (real need)`
262
+ : `${formatEther(adjustedRequirement)} ETH ✅ (covered by exceeding)`,
263
+ ],
264
+ ['', ''],
265
+ ['═══ VAULT RESOURCES ═══', ''],
266
+ ['💰 Vault ETH Balance', `${formatEther(vaultEthBalance)} ETH`],
267
+ [
268
+ '🎯 ETH Shortfall',
269
+ ethShortfall > 0n
270
+ ? `⚠️ ${formatEther(ethShortfall)} ETH (NEED MORE)`
271
+ : `✅ ${formatEther(ethShortfall)} ETH (SUFFICIENT)`,
272
+ ],
273
+ ],
274
+ });
275
+ if (options.verbose && rebalanceRequirements.length > 0) {
276
+ logInfo('\n' + '─'.repeat(70));
277
+ logInfo('DETAILED BREAKDOWN BY ACCOUNT');
278
+ logInfo('─'.repeat(70) + '\n');
279
+ const detailedData = rebalanceRequirements.map((r) => [
280
+ r.account,
281
+ formatUnits(r.stvToBurn, 27),
282
+ formatEther(r.stethShares),
283
+ formatEther(r.stethInEth),
284
+ r.isUndercollateralized ? '⚠️ Yes' : 'No',
285
+ ]);
286
+ logTable({
287
+ params: {
288
+ head: [
289
+ 'Account',
290
+ 'STV to Burn',
291
+ 'stETH Shares',
292
+ 'stETH (ETH)',
293
+ 'Undercollateralized',
294
+ ],
295
+ },
296
+ data: detailedData,
297
+ });
298
+ }
299
+ // Action items
300
+ logInfo('\n' + '═'.repeat(70));
301
+ logInfo('ACTION ITEMS');
302
+ logInfo('═'.repeat(70) + '\n');
303
+ if (rebalanceRequirements.length === 0) {
304
+ logInfo('✅ No rebalance needed - all positions are healthy!\n');
305
+ }
306
+ else {
307
+ // Explain the rebalance strategy
308
+ if (totalExceedingMintedSteth > 0n) {
309
+ logInfo(`1. 🔄 Can rebalance using exceeding stETH: ${formatEther(totalExceedingMintedSteth)} ETH`);
310
+ logInfo(` This stETH is already in the pool and doesn't require external ETH`);
311
+ }
312
+ else {
313
+ logInfo(`1. 🔄 No exceeding stETH available - will need to provide ETH externally`);
314
+ }
315
+ if (ethShortfall > 0n) {
316
+ logInfo(`\n2. ⚠️ Need to provide ${formatEther(ethShortfall)} ETH from external source`);
317
+ logInfo(` Command: yarn start dw stv-steth w rebalance-unassigned-liability-with-ether \\`);
318
+ logInfo(` ${address} ${formatEther(ethShortfall)}`);
319
+ }
320
+ else if (adjustedRequirement > 0n) {
321
+ logInfo(`\n2. ✅ Vault has sufficient ETH balance (${formatEther(vaultEthBalance)} ETH available)`);
322
+ }
323
+ else {
324
+ logInfo('\n2. ✅ Exceeding stETH fully covers all rebalance needs - no ETH required!');
325
+ }
326
+ logInfo(`\n3. 🎯 Execute rebalances for each account:`);
327
+ logInfo(` Command: yarn start dw uc h force-rebalance ${address} <account-address>`);
328
+ const undercollateralizedCount = rebalanceRequirements.filter((r) => r.isUndercollateralized).length;
329
+ if (undercollateralizedCount > 0) {
330
+ logInfo(`\n⚠️ CRITICAL: ${undercollateralizedCount} of ${rebalanceRequirements.length} accounts are UNDERCOLLATERALIZED!`);
331
+ logInfo(' These positions have debt > collateral and will cause LOSSES.');
332
+ logInfo(' Requires: LOSS_SOCIALIZER_ROLE to execute');
333
+ logInfo(` Command: yarn start dw uc h force-rebalance-and-socialize-loss ${address} <account-address>`);
334
+ }
335
+ logInfo('');
336
+ }
337
+ });
338
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../programs/defi-wrapper/use-cases/health/read.ts"],"names":[],"mappings":"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"}