@lidofinance/lsv-cli 1.4.0 → 1.5.1

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 (309) hide show
  1. package/dist/abi/Dashboard.d.ts +24 -0
  2. package/dist/abi/PredepositGuarantee.d.ts +48 -0
  3. package/dist/abi/PredepositGuarantee.js +32 -0
  4. package/dist/abi/PredepositGuarantee.js.map +1 -1
  5. package/dist/abi/StEth.d.ts +1175 -59
  6. package/dist/abi/StEth.js +885 -320
  7. package/dist/abi/StEth.js.map +1 -1
  8. package/dist/abi/defi-wrapper/Factory.d.ts +532 -657
  9. package/dist/abi/defi-wrapper/Factory.js +1083 -647
  10. package/dist/abi/defi-wrapper/Factory.js.map +1 -1
  11. package/dist/abi/defi-wrapper/OssifiableProxy.d.ts +71 -0
  12. package/dist/abi/defi-wrapper/OssifiableProxy.js +93 -0
  13. package/dist/abi/defi-wrapper/OssifiableProxy.js.map +1 -0
  14. package/dist/abi/defi-wrapper/StvStETHPool.d.ts +38 -32
  15. package/dist/abi/defi-wrapper/StvStETHPool.js +50 -42
  16. package/dist/abi/defi-wrapper/StvStETHPool.js.map +1 -1
  17. package/dist/abi/defi-wrapper/TimeLock.d.ts +770 -0
  18. package/dist/abi/defi-wrapper/TimeLock.js +999 -0
  19. package/dist/abi/defi-wrapper/TimeLock.js.map +1 -0
  20. package/dist/abi/defi-wrapper/index.d.ts +2 -0
  21. package/dist/abi/defi-wrapper/index.js +2 -0
  22. package/dist/abi/defi-wrapper/index.js.map +1 -1
  23. package/dist/contracts/defi-wrapper/index.d.ts +2 -0
  24. package/dist/contracts/defi-wrapper/index.js +2 -0
  25. package/dist/contracts/defi-wrapper/index.js.map +1 -1
  26. package/dist/contracts/defi-wrapper/ossifiable-proxy.d.ts +4 -0
  27. package/dist/contracts/defi-wrapper/ossifiable-proxy.js +12 -0
  28. package/dist/contracts/defi-wrapper/ossifiable-proxy.js.map +1 -0
  29. package/dist/contracts/defi-wrapper/timelock.d.ts +4 -0
  30. package/dist/contracts/defi-wrapper/timelock.js +12 -0
  31. package/dist/contracts/defi-wrapper/timelock.js.map +1 -0
  32. package/dist/contracts/steth.d.ts +4 -27706
  33. package/dist/contracts/steth.js +2 -2
  34. package/dist/contracts/steth.js.map +1 -1
  35. package/dist/features/consolidation.js +19 -3
  36. package/dist/features/consolidation.js.map +1 -1
  37. package/dist/features/defi-wrapper/create-vault.js +16 -13
  38. package/dist/features/defi-wrapper/create-vault.js.map +1 -1
  39. package/dist/features/defi-wrapper/defi-wrapper-factory.d.ts +10 -27
  40. package/dist/features/defi-wrapper/defi-wrapper-factory.js +105 -15
  41. package/dist/features/defi-wrapper/defi-wrapper-factory.js.map +1 -1
  42. package/dist/features/defi-wrapper/distributor.d.ts +24 -0
  43. package/dist/features/defi-wrapper/distributor.js +300 -0
  44. package/dist/features/defi-wrapper/distributor.js.map +1 -0
  45. package/dist/features/defi-wrapper/index.d.ts +1 -0
  46. package/dist/features/defi-wrapper/index.js +1 -0
  47. package/dist/features/defi-wrapper/index.js.map +1 -1
  48. package/dist/features/defi-wrapper/pool-info.d.ts +17 -2
  49. package/dist/features/defi-wrapper/pool-info.js +63 -13
  50. package/dist/features/defi-wrapper/pool-info.js.map +1 -1
  51. package/dist/features/defi-wrapper/timelock.d.ts +19 -0
  52. package/dist/features/defi-wrapper/timelock.js +198 -0
  53. package/dist/features/defi-wrapper/timelock.js.map +1 -0
  54. package/dist/features/deposits/check-bls-deposits.js +15 -3
  55. package/dist/features/deposits/check-bls-deposits.js.map +1 -1
  56. package/dist/features/deposits/make-pdg-proof.js +15 -3
  57. package/dist/features/deposits/make-pdg-proof.js.map +1 -1
  58. package/dist/features/deposits/no-pdg.js +50 -14
  59. package/dist/features/deposits/no-pdg.js.map +1 -1
  60. package/dist/features/deposits/pdg.js +5 -1
  61. package/dist/features/deposits/pdg.js.map +1 -1
  62. package/dist/features/dev-tools/impersonate.js +5 -1
  63. package/dist/features/dev-tools/impersonate.js.map +1 -1
  64. package/dist/features/metrics.js +24 -6
  65. package/dist/features/metrics.js.map +1 -1
  66. package/dist/features/mint-burn/allowance.js +15 -6
  67. package/dist/features/mint-burn/allowance.js.map +1 -1
  68. package/dist/features/mint-burn/burn-steth.js +5 -1
  69. package/dist/features/mint-burn/burn-steth.js.map +1 -1
  70. package/dist/features/mint-burn/index.d.ts +1 -0
  71. package/dist/features/mint-burn/index.js +1 -0
  72. package/dist/features/mint-burn/index.js.map +1 -1
  73. package/dist/features/mint-burn/mint-limit.d.ts +9 -0
  74. package/dist/features/mint-burn/mint-limit.js +31 -0
  75. package/dist/features/mint-burn/mint-limit.js.map +1 -0
  76. package/dist/features/mint-burn/mint-steth.js +5 -1
  77. package/dist/features/mint-burn/mint-steth.js.map +1 -1
  78. package/dist/features/pdg.js +5 -1
  79. package/dist/features/pdg.js.map +1 -1
  80. package/dist/features/utils/connection.js +5 -1
  81. package/dist/features/utils/connection.js.map +1 -1
  82. package/dist/features/utils/index.d.ts +1 -0
  83. package/dist/features/utils/index.js +1 -0
  84. package/dist/features/utils/index.js.map +1 -1
  85. package/dist/features/utils/liability-shares.js +5 -1
  86. package/dist/features/utils/liability-shares.js.map +1 -1
  87. package/dist/features/utils/minting-capacity.js +4 -3
  88. package/dist/features/utils/minting-capacity.js.map +1 -1
  89. package/dist/features/utils/quarantine.js +5 -1
  90. package/dist/features/utils/quarantine.js.map +1 -1
  91. package/dist/features/utils/report-fresh.js +15 -3
  92. package/dist/features/utils/report-fresh.js.map +1 -1
  93. package/dist/features/utils/try-fetch.d.ts +5 -0
  94. package/dist/features/utils/try-fetch.js +26 -0
  95. package/dist/features/utils/try-fetch.js.map +1 -0
  96. package/dist/features/vault-factory.js +15 -3
  97. package/dist/features/vault-factory.js.map +1 -1
  98. package/dist/features/vault-operations/connect-vault.js +10 -2
  99. package/dist/features/vault-operations/connect-vault.js.map +1 -1
  100. package/dist/features/vault-operations/dashboard-by-vault.js +10 -2
  101. package/dist/features/vault-operations/dashboard-by-vault.js.map +1 -1
  102. package/dist/features/vault-operations/roles.js +10 -2
  103. package/dist/features/vault-operations/roles.js.map +1 -1
  104. package/dist/features/vault-operations/vault-health.js +5 -1
  105. package/dist/features/vault-operations/vault-health.js.map +1 -1
  106. package/dist/features/vault-operations/vault-info.js +10 -2
  107. package/dist/features/vault-operations/vault-info.js.map +1 -1
  108. package/dist/features/vault-operations/vault-overview.js +25 -5
  109. package/dist/features/vault-operations/vault-overview.js.map +1 -1
  110. package/dist/features/vault-operations/vault-roles.js +10 -2
  111. package/dist/features/vault-operations/vault-roles.js.map +1 -1
  112. package/dist/features/vault-operations/vaults-by-role.d.ts +24 -0
  113. package/dist/features/vault-operations/vaults-by-role.js +78 -27
  114. package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
  115. package/dist/index.js +9 -5
  116. package/dist/index.js.map +1 -1
  117. package/dist/programs/account/read.js +10 -5
  118. package/dist/programs/account/read.js.map +1 -1
  119. package/dist/programs/contracts/dashboard/read.js +15 -3
  120. package/dist/programs/contracts/dashboard/read.js.map +1 -1
  121. package/dist/programs/contracts/dashboard/write.js +212 -38
  122. package/dist/programs/contracts/dashboard/write.js.map +1 -1
  123. package/dist/programs/contracts/hub/read.js +15 -5
  124. package/dist/programs/contracts/hub/read.js.map +1 -1
  125. package/dist/programs/contracts/hub/write.js +10 -2
  126. package/dist/programs/contracts/hub/write.js.map +1 -1
  127. package/dist/programs/contracts/operator-grid/read.js +5 -1
  128. package/dist/programs/contracts/operator-grid/read.js.map +1 -1
  129. package/dist/programs/contracts/operator-grid/write.js +5 -1
  130. package/dist/programs/contracts/operator-grid/write.js.map +1 -1
  131. package/dist/programs/contracts/pdg/read.js +5 -1
  132. package/dist/programs/contracts/pdg/read.js.map +1 -1
  133. package/dist/programs/contracts/pdg/write.js +33 -3
  134. package/dist/programs/contracts/pdg/write.js.map +1 -1
  135. package/dist/programs/contracts/vault/write.js +5 -1
  136. package/dist/programs/contracts/vault/write.js.map +1 -1
  137. package/dist/programs/defi-wrapper/contracts/distributor/read.js +17 -5
  138. package/dist/programs/defi-wrapper/contracts/distributor/read.js.map +1 -1
  139. package/dist/programs/defi-wrapper/contracts/factory/read.js +73 -13
  140. package/dist/programs/defi-wrapper/contracts/factory/read.js.map +1 -1
  141. package/dist/programs/defi-wrapper/contracts/factory/write.js +171 -65
  142. package/dist/programs/defi-wrapper/contracts/factory/write.js.map +1 -1
  143. package/dist/programs/defi-wrapper/contracts/stv-pool/read.js +62 -18
  144. package/dist/programs/defi-wrapper/contracts/stv-pool/read.js.map +1 -1
  145. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js +62 -18
  146. package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js.map +1 -1
  147. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js +64 -16
  148. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js.map +1 -1
  149. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js +33 -6
  150. package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js.map +1 -1
  151. package/dist/programs/defi-wrapper/use-cases/distributor/index.d.ts +3 -0
  152. package/dist/programs/defi-wrapper/use-cases/distributor/index.js +4 -0
  153. package/dist/programs/defi-wrapper/use-cases/distributor/index.js.map +1 -0
  154. package/dist/programs/defi-wrapper/use-cases/distributor/main.d.ts +1 -0
  155. package/dist/programs/defi-wrapper/use-cases/distributor/main.js +6 -0
  156. package/dist/programs/defi-wrapper/use-cases/distributor/main.js.map +1 -0
  157. package/dist/programs/defi-wrapper/use-cases/distributor/read.js +86 -0
  158. package/dist/programs/defi-wrapper/use-cases/distributor/read.js.map +1 -0
  159. package/dist/programs/defi-wrapper/use-cases/distributor/write.d.ts +1 -0
  160. package/dist/programs/defi-wrapper/use-cases/distributor/write.js +191 -0
  161. package/dist/programs/defi-wrapper/use-cases/distributor/write.js.map +1 -0
  162. package/dist/programs/defi-wrapper/use-cases/health/read.js +71 -21
  163. package/dist/programs/defi-wrapper/use-cases/health/read.js.map +1 -1
  164. package/dist/programs/defi-wrapper/use-cases/health/utils.js +10 -2
  165. package/dist/programs/defi-wrapper/use-cases/health/utils.js.map +1 -1
  166. package/dist/programs/defi-wrapper/use-cases/health/write.js +65 -22
  167. package/dist/programs/defi-wrapper/use-cases/health/write.js.map +1 -1
  168. package/dist/programs/defi-wrapper/use-cases/index.d.ts +2 -0
  169. package/dist/programs/defi-wrapper/use-cases/index.js +2 -0
  170. package/dist/programs/defi-wrapper/use-cases/index.js.map +1 -1
  171. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/index.d.ts +3 -0
  172. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/index.js +4 -0
  173. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/index.js.map +1 -0
  174. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/main.d.ts +1 -0
  175. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/main.js +6 -0
  176. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/main.js.map +1 -0
  177. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.d.ts +1 -0
  178. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.js +362 -0
  179. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.js.map +1 -0
  180. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.d.ts +1 -0
  181. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.js +86 -0
  182. package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.js.map +1 -0
  183. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/index.d.ts +2 -0
  184. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/index.js +3 -0
  185. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/index.js.map +1 -0
  186. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/main.d.ts +1 -0
  187. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/main.js +6 -0
  188. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/main.js.map +1 -0
  189. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.d.ts +1 -0
  190. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.js +369 -0
  191. package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.js.map +1 -0
  192. package/dist/programs/defi-wrapper/use-cases/timelock-governance/index.d.ts +6 -0
  193. package/dist/programs/defi-wrapper/use-cases/timelock-governance/index.js +7 -0
  194. package/dist/programs/defi-wrapper/use-cases/timelock-governance/index.js.map +1 -0
  195. package/dist/programs/defi-wrapper/use-cases/timelock-governance/main.d.ts +1 -0
  196. package/dist/programs/defi-wrapper/use-cases/timelock-governance/main.js +6 -0
  197. package/dist/programs/defi-wrapper/use-cases/timelock-governance/main.js.map +1 -0
  198. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/index.d.ts +2 -0
  199. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/index.js +3 -0
  200. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/index.js.map +1 -0
  201. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/main.d.ts +1 -0
  202. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/main.js +6 -0
  203. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/main.js.map +1 -0
  204. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/write.d.ts +1 -0
  205. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/write.js +184 -0
  206. package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/write.js.map +1 -0
  207. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/index.d.ts +3 -0
  208. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/index.js +4 -0
  209. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/index.js.map +1 -0
  210. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/main.d.ts +1 -0
  211. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/main.js +6 -0
  212. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/main.js.map +1 -0
  213. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/read.d.ts +1 -0
  214. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/read.js +80 -0
  215. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/read.js.map +1 -0
  216. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/write.d.ts +1 -0
  217. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/write.js +139 -0
  218. package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/write.js.map +1 -0
  219. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/index.d.ts +2 -0
  220. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/index.js +3 -0
  221. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/index.js.map +1 -0
  222. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/main.d.ts +1 -0
  223. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/main.js +6 -0
  224. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/main.js.map +1 -0
  225. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/write.d.ts +1 -0
  226. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/write.js +118 -0
  227. package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/write.js.map +1 -0
  228. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.d.ts +1 -1
  229. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js +1 -2
  230. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js.map +1 -1
  231. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js +333 -11
  232. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js.map +1 -1
  233. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js +463 -2
  234. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js.map +1 -1
  235. package/dist/programs/dev-tools/defi-wrapper/write.js +41 -11
  236. package/dist/programs/dev-tools/defi-wrapper/write.js.map +1 -1
  237. package/dist/programs/pdg-helpers.js +55 -19
  238. package/dist/programs/pdg-helpers.js.map +1 -1
  239. package/dist/programs/use-cases/consolidation/write.js +5 -1
  240. package/dist/programs/use-cases/consolidation/write.js.map +1 -1
  241. package/dist/programs/use-cases/deposits/read.js +40 -8
  242. package/dist/programs/use-cases/deposits/read.js.map +1 -1
  243. package/dist/programs/use-cases/deposits/write.js +15 -3
  244. package/dist/programs/use-cases/deposits/write.js.map +1 -1
  245. package/dist/programs/use-cases/metrics/read.js +25 -5
  246. package/dist/programs/use-cases/metrics/read.js.map +1 -1
  247. package/dist/programs/use-cases/report/read.js +25 -5
  248. package/dist/programs/use-cases/report/read.js.map +1 -1
  249. package/dist/programs/use-cases/report/write.js +10 -2
  250. package/dist/programs/use-cases/report/write.js.map +1 -1
  251. package/dist/programs/use-cases/vault-operations/write.js +30 -6
  252. package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
  253. package/dist/providers/index.d.ts +1 -1
  254. package/dist/providers/index.js +1 -1
  255. package/dist/tests/utils/rate-limit.test.d.ts +1 -0
  256. package/dist/tests/utils/rate-limit.test.js +246 -0
  257. package/dist/tests/utils/rate-limit.test.js.map +1 -0
  258. package/dist/types/index.d.ts +2 -2
  259. package/dist/types/index.js +2 -2
  260. package/dist/utils/arguments.d.ts +14 -0
  261. package/dist/utils/arguments.js +28 -0
  262. package/dist/utils/arguments.js.map +1 -1
  263. package/dist/utils/cache.d.ts +6 -4
  264. package/dist/utils/cache.js +14 -11
  265. package/dist/utils/cache.js.map +1 -1
  266. package/dist/utils/charts/blessed/charts-apr.js +5 -1
  267. package/dist/utils/charts/blessed/charts-apr.js.map +1 -1
  268. package/dist/utils/charts/blessed/charts-rewards.js +5 -1
  269. package/dist/utils/charts/blessed/charts-rewards.js.map +1 -1
  270. package/dist/utils/charts/simple/simple-charts.js +5 -1
  271. package/dist/utils/charts/simple/simple-charts.js.map +1 -1
  272. package/dist/utils/commands/report.d.ts +5 -2
  273. package/dist/utils/commands/report.js +21 -7
  274. package/dist/utils/commands/report.js.map +1 -1
  275. package/dist/utils/consts.d.ts +1 -0
  276. package/dist/utils/consts.js +5 -0
  277. package/dist/utils/consts.js.map +1 -1
  278. package/dist/utils/fetchCL.d.ts +10 -0
  279. package/dist/utils/fetchCL.js +19 -0
  280. package/dist/utils/fetchCL.js.map +1 -1
  281. package/dist/utils/health/health-utils.d.ts +2 -27707
  282. package/dist/utils/health/health-utils.js +26 -8
  283. package/dist/utils/health/health-utils.js.map +1 -1
  284. package/dist/utils/index.d.ts +1 -0
  285. package/dist/utils/index.js +1 -0
  286. package/dist/utils/index.js.map +1 -1
  287. package/dist/utils/prompts/operations.js +1 -3
  288. package/dist/utils/prompts/operations.js.map +1 -1
  289. package/dist/utils/rate-limit.d.ts +10 -0
  290. package/dist/utils/rate-limit.js +30 -0
  291. package/dist/utils/rate-limit.js.map +1 -0
  292. package/dist/utils/read-programs-by-abi.js +22 -4
  293. package/dist/utils/read-programs-by-abi.js.map +1 -1
  294. package/dist/utils/report/statistic-data.js +8 -2
  295. package/dist/utils/report/statistic-data.js.map +1 -1
  296. package/dist/utils/share-rate.js +16 -4
  297. package/dist/utils/share-rate.js.map +1 -1
  298. package/dist/utils/sleep.js.map +1 -1
  299. package/dist/utils/transactions/tx-private-key.d.ts +3 -5
  300. package/dist/utils/transactions/tx-private-key.js +13 -10
  301. package/dist/utils/transactions/tx-private-key.js.map +1 -1
  302. package/dist/utils/transactions/types.d.ts +7 -0
  303. package/dist/utils/transactions/utils.js +2 -2
  304. package/dist/utils/transactions/utils.js.map +1 -1
  305. package/dist/version/index.js +1 -1
  306. package/package.json +3 -12
  307. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js +0 -180
  308. package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js.map +0 -1
  309. /package/dist/programs/defi-wrapper/use-cases/{wrapper-operations/create-pool.d.ts → distributor/read.d.ts} +0 -0
@@ -0,0 +1,369 @@
1
+ import { Option } from 'commander';
2
+ import { proposeOperation, executeOperation, processSalt, TIMELOCK_ARGUMENT, getPromptTimelock, ACCOUNT_GRANT_ARGUMENT, SALT_OPTION, ROLE_ARGUMENT, ACCOUNT_REVOKE_ARGUMENT, promptRole, promptAccount, } from '../../../../../features/defi-wrapper/index.js';
3
+ import { logInfo, getCommandsJson, stringToAddress, addressPrompt, textPrompt, } from '../../../../../utils/index.js';
4
+ import { dashboardTimelockGovernance } from './main.js';
5
+ import { encodeFunctionData } from 'viem';
6
+ import { getDashboardContract } from '../../../../../contracts/index.js';
7
+ import { DashboardAbi } from '../../../../../abi/index.js';
8
+ // local helpers
9
+ const DASHBOARD_ARGUMENT = [
10
+ '[dashboard]',
11
+ 'dashboard contract address',
12
+ stringToAddress,
13
+ ];
14
+ const promptDashboard = async (dashboardAddress) => {
15
+ if (!dashboardAddress) {
16
+ const dashboardPrompt = await addressPrompt('Enter dashboard contract address', 'dashboard');
17
+ dashboardAddress = dashboardPrompt.dashboard;
18
+ }
19
+ return getDashboardContract(dashboardAddress);
20
+ };
21
+ // command definitions
22
+ const dashboardWrite = dashboardTimelockGovernance
23
+ .command('write')
24
+ .alias('w')
25
+ .description('dashboard timelock write commands');
26
+ dashboardWrite.addOption(new Option('-cmd2json'));
27
+ dashboardWrite.on('option:-cmd2json', function () {
28
+ logInfo(getCommandsJson(dashboardWrite));
29
+ process.exit();
30
+ });
31
+ // propose-grant-role
32
+ dashboardWrite
33
+ .command('propose-grant-role')
34
+ .description('propose granting a role on Dashboard via Timelock')
35
+ .argument(...TIMELOCK_ARGUMENT)
36
+ .argument(...DASHBOARD_ARGUMENT)
37
+ .argument(...ROLE_ARGUMENT)
38
+ .argument(...ACCOUNT_GRANT_ARGUMENT)
39
+ .option(...SALT_OPTION)
40
+ .action(async (timelock, dashboardAddress, roleInput, accountInput, options) => {
41
+ const timelockContract = await getPromptTimelock(timelock);
42
+ const dashboardContract = await promptDashboard(dashboardAddress);
43
+ const role = await promptRole(roleInput, dashboardContract);
44
+ const account = await promptAccount(accountInput, 'Enter account address to grant role to');
45
+ const finalSalt = processSalt(options?.salt);
46
+ const data = encodeFunctionData({
47
+ abi: DashboardAbi,
48
+ functionName: 'grantRole',
49
+ args: [role, account],
50
+ });
51
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `grantRole(${role}, ${account})`, `Are you sure you want to propose granting role ${role} to ${account} on dashboard ${dashboardContract.address}?`);
52
+ });
53
+ // execute-grant-role
54
+ dashboardWrite
55
+ .command('execute-grant-role')
56
+ .description('execute granting a role on Dashboard via Timelock')
57
+ .argument(...TIMELOCK_ARGUMENT)
58
+ .argument(...DASHBOARD_ARGUMENT)
59
+ .argument(...ROLE_ARGUMENT)
60
+ .argument(...ACCOUNT_GRANT_ARGUMENT)
61
+ .option(...SALT_OPTION)
62
+ .action(async (timelock, dashboardAddress, roleInput, accountInput, options) => {
63
+ const timelockContract = await getPromptTimelock(timelock);
64
+ const dashboardContract = await promptDashboard(dashboardAddress);
65
+ const role = await promptRole(roleInput, dashboardContract);
66
+ const finalSalt = processSalt(options?.salt);
67
+ const account = await promptAccount(accountInput, 'Enter account address to grant role to');
68
+ const data = encodeFunctionData({
69
+ abi: DashboardAbi,
70
+ functionName: 'grantRole',
71
+ args: [role, account],
72
+ });
73
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `grantRole(${role}, ${account})`, `Are you sure you want to execute granting role ${role} to ${account} on dashboard ${dashboardContract.address}?`);
74
+ });
75
+ // propose-revoke-role
76
+ dashboardWrite
77
+ .command('propose-revoke-role')
78
+ .description('propose revoking a role on Dashboard via Timelock')
79
+ .argument(...TIMELOCK_ARGUMENT)
80
+ .argument(...DASHBOARD_ARGUMENT)
81
+ .argument(...ROLE_ARGUMENT)
82
+ .argument(...ACCOUNT_REVOKE_ARGUMENT)
83
+ .option(...SALT_OPTION)
84
+ .action(async (timelock, dashboardAddress, roleInput, accountInput, options) => {
85
+ const timelockContract = await getPromptTimelock(timelock);
86
+ const dashboardContract = await promptDashboard(dashboardAddress);
87
+ const role = await promptRole(roleInput, dashboardContract);
88
+ const finalSalt = processSalt(options?.salt);
89
+ const account = await promptAccount(accountInput, 'Enter account address to revoke role from');
90
+ const data = encodeFunctionData({
91
+ abi: DashboardAbi,
92
+ functionName: 'revokeRole',
93
+ args: [role, account],
94
+ });
95
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `revokeRole(${role}, ${account})`, `Are you sure you want to propose revoking role ${role} from ${account} on dashboard ${dashboardContract.address}?`);
96
+ });
97
+ // execute-revoke-role
98
+ dashboardWrite
99
+ .command('execute-revoke-role')
100
+ .description('execute revoking a role on Dashboard via Timelock')
101
+ .argument(...TIMELOCK_ARGUMENT)
102
+ .argument(...DASHBOARD_ARGUMENT)
103
+ .argument(...ROLE_ARGUMENT)
104
+ .argument(...ACCOUNT_REVOKE_ARGUMENT)
105
+ .option(...SALT_OPTION)
106
+ .action(async (timelock, dashboardAddress, roleInput, accountInput, options) => {
107
+ const timelockContract = await getPromptTimelock(timelock);
108
+ const dashboardContract = await promptDashboard(dashboardAddress);
109
+ const role = await promptRole(roleInput, dashboardContract);
110
+ const finalSalt = processSalt(options?.salt);
111
+ const account = await promptAccount(accountInput, 'Enter account address to revoke role from');
112
+ const data = encodeFunctionData({
113
+ abi: DashboardAbi,
114
+ functionName: 'revokeRole',
115
+ args: [role, account],
116
+ });
117
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `revokeRole(${role}, ${account})`, `Are you sure you want to execute revoking role ${role} from ${account} on dashboard ${dashboardContract.address}?`);
118
+ });
119
+ // propose-change-tier
120
+ dashboardWrite
121
+ .command('propose-change-tier')
122
+ .description('propose changing tier on Dashboard via Timelock')
123
+ .argument(...TIMELOCK_ARGUMENT)
124
+ .argument(...DASHBOARD_ARGUMENT)
125
+ .argument('[tierId]', 'tier ID (uint256)')
126
+ .argument('[shareLimit]', 'share limit (uint256)')
127
+ .option(...SALT_OPTION)
128
+ .action(async (timelock, dashboardAddress, tierIdInput, shareLimitInput, options) => {
129
+ const timelockContract = await getPromptTimelock(timelock);
130
+ const dashboardContract = await promptDashboard(dashboardAddress);
131
+ if (!tierIdInput) {
132
+ const tierIdPrompt = await textPrompt('Enter tier ID (uint256)', 'tierId');
133
+ tierIdInput = tierIdPrompt.tierId;
134
+ }
135
+ if (!shareLimitInput) {
136
+ const shareLimitPrompt = await textPrompt('Enter share limit (uint256)', 'shareLimit');
137
+ shareLimitInput = shareLimitPrompt.shareLimit;
138
+ }
139
+ const tierId = BigInt(tierIdInput);
140
+ const shareLimit = BigInt(shareLimitInput);
141
+ const finalSalt = processSalt(options?.salt);
142
+ const data = encodeFunctionData({
143
+ abi: DashboardAbi,
144
+ functionName: 'changeTier',
145
+ args: [tierId, shareLimit],
146
+ });
147
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `changeTier(${tierId}, ${shareLimit})`, `Are you sure you want to propose changing tier ${tierId} with share limit ${shareLimit} on dashboard ${dashboardContract.address}?`);
148
+ });
149
+ // execute-change-tier
150
+ dashboardWrite
151
+ .command('execute-change-tier')
152
+ .description('execute changing tier on Dashboard via Timelock')
153
+ .argument(...TIMELOCK_ARGUMENT)
154
+ .argument(...DASHBOARD_ARGUMENT)
155
+ .argument('[tierId]', 'tier ID (uint256)')
156
+ .argument('[shareLimit]', 'share limit (uint256)')
157
+ .option(...SALT_OPTION)
158
+ .action(async (timelock, dashboardAddress, tierIdInput, shareLimitInput, options) => {
159
+ const timelockContract = await getPromptTimelock(timelock);
160
+ const dashboardContract = await promptDashboard(dashboardAddress);
161
+ if (!tierIdInput) {
162
+ const tierIdPrompt = await textPrompt('Enter tier ID (uint256)', 'tierId');
163
+ tierIdInput = tierIdPrompt.tierId;
164
+ }
165
+ if (!shareLimitInput) {
166
+ const shareLimitPrompt = await textPrompt('Enter share limit (uint256)', 'shareLimit');
167
+ shareLimitInput = shareLimitPrompt.shareLimit;
168
+ }
169
+ const tierId = BigInt(tierIdInput);
170
+ const shareLimit = BigInt(shareLimitInput);
171
+ const finalSalt = processSalt(options?.salt);
172
+ const data = encodeFunctionData({
173
+ abi: DashboardAbi,
174
+ functionName: 'changeTier',
175
+ args: [tierId, shareLimit],
176
+ });
177
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `changeTier(${tierId}, ${shareLimit})`, `Are you sure you want to execute changing tier ${tierId} with share limit ${shareLimit} on dashboard ${dashboardContract.address}?`);
178
+ });
179
+ // propose-sync-tier
180
+ dashboardWrite
181
+ .command('propose-sync-tier')
182
+ .description('propose syncing tier on Dashboard via Timelock')
183
+ .argument(...TIMELOCK_ARGUMENT)
184
+ .argument(...DASHBOARD_ARGUMENT)
185
+ .option(...SALT_OPTION)
186
+ .action(async (timelock, dashboardAddress, options) => {
187
+ const timelockContract = await getPromptTimelock(timelock);
188
+ const dashboardContract = await promptDashboard(dashboardAddress);
189
+ const finalSalt = processSalt(options?.salt);
190
+ const data = encodeFunctionData({
191
+ abi: DashboardAbi,
192
+ functionName: 'syncTier',
193
+ args: [],
194
+ });
195
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, 'syncTier()', `Are you sure you want to propose syncing tier on dashboard ${dashboardContract.address}?`);
196
+ });
197
+ // execute-sync-tier
198
+ dashboardWrite
199
+ .command('execute-sync-tier')
200
+ .description('execute syncing tier on Dashboard via Timelock')
201
+ .argument(...TIMELOCK_ARGUMENT)
202
+ .argument(...DASHBOARD_ARGUMENT)
203
+ .option(...SALT_OPTION)
204
+ .action(async (timelock, dashboardAddress, options) => {
205
+ const timelockContract = await getPromptTimelock(timelock);
206
+ const dashboardContract = await promptDashboard(dashboardAddress);
207
+ const finalSalt = processSalt(options?.salt);
208
+ const data = encodeFunctionData({
209
+ abi: DashboardAbi,
210
+ functionName: 'syncTier',
211
+ args: [],
212
+ });
213
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, 'syncTier()', `Are you sure you want to execute syncing tier on dashboard ${dashboardContract.address}?`);
214
+ });
215
+ // propose-update-share-limit
216
+ dashboardWrite
217
+ .command('propose-update-share-limit')
218
+ .description('propose updating share limit on Dashboard via Timelock')
219
+ .argument(...TIMELOCK_ARGUMENT)
220
+ .argument(...DASHBOARD_ARGUMENT)
221
+ .argument('[shareLimit]', 'share limit (uint256)')
222
+ .option(...SALT_OPTION)
223
+ .action(async (timelock, dashboardAddress, shareLimitInput, options) => {
224
+ const timelockContract = await getPromptTimelock(timelock);
225
+ const dashboardContract = await promptDashboard(dashboardAddress);
226
+ if (!shareLimitInput) {
227
+ const shareLimitPrompt = await textPrompt('Enter share limit (uint256)', 'shareLimit');
228
+ shareLimitInput = shareLimitPrompt.shareLimit;
229
+ }
230
+ const shareLimit = BigInt(shareLimitInput);
231
+ const finalSalt = processSalt(options?.salt);
232
+ const data = encodeFunctionData({
233
+ abi: DashboardAbi,
234
+ functionName: 'updateShareLimit',
235
+ args: [shareLimit],
236
+ });
237
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `updateShareLimit(${shareLimit})`, `Are you sure you want to propose updating share limit to ${shareLimit} on dashboard ${dashboardContract.address}?`);
238
+ });
239
+ // execute-update-share-limit
240
+ dashboardWrite
241
+ .command('execute-update-share-limit')
242
+ .description('execute updating share limit on Dashboard via Timelock')
243
+ .argument(...TIMELOCK_ARGUMENT)
244
+ .argument(...DASHBOARD_ARGUMENT)
245
+ .argument('[shareLimit]', 'share limit (uint256)')
246
+ .option(...SALT_OPTION)
247
+ .action(async (timelock, dashboardAddress, shareLimitInput, options) => {
248
+ const timelockContract = await getPromptTimelock(timelock);
249
+ const dashboardContract = await promptDashboard(dashboardAddress);
250
+ if (!shareLimitInput) {
251
+ const shareLimitPrompt = await textPrompt('Enter share limit (uint256)', 'shareLimit');
252
+ shareLimitInput = shareLimitPrompt.shareLimit;
253
+ }
254
+ const shareLimit = BigInt(shareLimitInput);
255
+ const finalSalt = processSalt(options?.salt);
256
+ const data = encodeFunctionData({
257
+ abi: DashboardAbi,
258
+ functionName: 'updateShareLimit',
259
+ args: [shareLimit],
260
+ });
261
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `updateShareLimit(${shareLimit})`, `Are you sure you want to execute updating share limit to ${shareLimit} on dashboard ${dashboardContract.address}?`);
262
+ });
263
+ // propose-set-pdg-policy
264
+ dashboardWrite
265
+ .command('propose-set-pdg-policy')
266
+ .description('propose setting PDG policy on Dashboard via Timelock (0=STRICT, 1=ALLOW_PROVE, 2=ALLOW_DEPOSIT_AND_PROVE)')
267
+ .argument(...TIMELOCK_ARGUMENT)
268
+ .argument(...DASHBOARD_ARGUMENT)
269
+ .argument('[policy]', 'PDG policy (uint8: 0=STRICT, 1=ALLOW_PROVE, 2=ALLOW_DEPOSIT_AND_PROVE)')
270
+ .option(...SALT_OPTION)
271
+ .action(async (timelock, dashboardAddress, policyInput, options) => {
272
+ const timelockContract = await getPromptTimelock(timelock);
273
+ const dashboardContract = await promptDashboard(dashboardAddress);
274
+ if (!policyInput) {
275
+ const policyPrompt = await textPrompt('Enter PDG policy (uint8: 0=STRICT, 1=ALLOW_PROVE, 2=ALLOW_DEPOSIT_AND_PROVE)', 'policy');
276
+ policyInput = policyPrompt.policy;
277
+ }
278
+ const policy = Number(policyInput);
279
+ if (policy < 0 || policy > 2) {
280
+ throw new Error('PDG policy must be 0, 1, or 2');
281
+ }
282
+ const finalSalt = processSalt(options?.salt);
283
+ const data = encodeFunctionData({
284
+ abi: DashboardAbi,
285
+ functionName: 'setPDGPolicy',
286
+ args: [policy],
287
+ });
288
+ const policyNames = ['STRICT', 'ALLOW_PROVE', 'ALLOW_DEPOSIT_AND_PROVE'];
289
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `setPDGPolicy(${policy})`, `Are you sure you want to propose setting PDG policy to ${policy} (${policyNames[policy]}) on dashboard ${dashboardContract.address}?`);
290
+ });
291
+ // execute-set-pdg-policy
292
+ dashboardWrite
293
+ .command('execute-set-pdg-policy')
294
+ .description('execute setting PDG policy on Dashboard via Timelock')
295
+ .argument(...TIMELOCK_ARGUMENT)
296
+ .argument(...DASHBOARD_ARGUMENT)
297
+ .argument('[policy]', 'PDG policy (uint8: 0=STRICT, 1=ALLOW_PROVE, 2=ALLOW_DEPOSIT_AND_PROVE)')
298
+ .option(...SALT_OPTION)
299
+ .action(async (timelock, dashboardAddress, policyInput, options) => {
300
+ const timelockContract = await getPromptTimelock(timelock);
301
+ const dashboardContract = await promptDashboard(dashboardAddress);
302
+ if (!policyInput) {
303
+ const policyPrompt = await textPrompt('Enter PDG policy (uint8: 0=STRICT, 1=ALLOW_PROVE, 2=ALLOW_DEPOSIT_AND_PROVE)', 'policy');
304
+ policyInput = policyPrompt.policy;
305
+ }
306
+ const policy = Number(policyInput);
307
+ if (policy < 0 || policy > 2) {
308
+ throw new Error('PDG policy must be 0, 1, or 2');
309
+ }
310
+ const finalSalt = processSalt(options?.salt);
311
+ const data = encodeFunctionData({
312
+ abi: DashboardAbi,
313
+ functionName: 'setPDGPolicy',
314
+ args: [policy],
315
+ });
316
+ const policyNames = ['STRICT', 'ALLOW_PROVE', 'ALLOW_DEPOSIT_AND_PROVE'];
317
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `setPDGPolicy(${policy})`, `Are you sure you want to execute setting PDG policy to ${policy} (${policyNames[policy]}) on dashboard ${dashboardContract.address}?`);
318
+ });
319
+ // propose-transfer-vault-ownership
320
+ dashboardWrite
321
+ .command('propose-transfer-vault-ownership')
322
+ .description('propose transferring vault ownership on Dashboard via Timelock')
323
+ .argument(...TIMELOCK_ARGUMENT)
324
+ .argument(...DASHBOARD_ARGUMENT)
325
+ .argument('[newOwner]', 'new owner address')
326
+ .option(...SALT_OPTION)
327
+ .action(async (timelock, dashboardAddress, newOwnerInput, options) => {
328
+ const timelockContract = await getPromptTimelock(timelock);
329
+ const dashboardContract = await promptDashboard(dashboardAddress);
330
+ if (!newOwnerInput) {
331
+ const newOwnerPrompt = await addressPrompt('Enter new owner address', 'newOwner');
332
+ newOwnerInput = newOwnerPrompt.newOwner;
333
+ }
334
+ const newOwner = stringToAddress(newOwnerInput);
335
+ const finalSalt = processSalt(options?.salt);
336
+ const data = encodeFunctionData({
337
+ abi: DashboardAbi,
338
+ functionName: 'transferVaultOwnership',
339
+ args: [newOwner],
340
+ });
341
+ logInfo('⚠️ WARNING: transferVaultOwnership requires confirmation through confirmingRoles()');
342
+ await proposeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `transferVaultOwnership(${newOwner})`, `Are you sure you want to propose transferring vault ownership to ${newOwner} on dashboard ${dashboardContract.address}?`);
343
+ });
344
+ // execute-transfer-vault-ownership
345
+ dashboardWrite
346
+ .command('execute-transfer-vault-ownership')
347
+ .description('execute transferring vault ownership on Dashboard via Timelock')
348
+ .argument(...TIMELOCK_ARGUMENT)
349
+ .argument(...DASHBOARD_ARGUMENT)
350
+ .argument('[newOwner]', 'new owner address')
351
+ .option(...SALT_OPTION)
352
+ .action(async (timelock, dashboardAddress, newOwnerInput, options) => {
353
+ const timelockContract = await getPromptTimelock(timelock);
354
+ const dashboardContract = await promptDashboard(dashboardAddress);
355
+ if (!newOwnerInput) {
356
+ const newOwnerPrompt = await addressPrompt('Enter new owner address', 'newOwner');
357
+ newOwnerInput = newOwnerPrompt.newOwner;
358
+ }
359
+ const newOwner = stringToAddress(newOwnerInput);
360
+ const finalSalt = processSalt(options?.salt);
361
+ const data = encodeFunctionData({
362
+ abi: DashboardAbi,
363
+ functionName: 'transferVaultOwnership',
364
+ args: [newOwner],
365
+ });
366
+ logInfo('⚠️ WARNING: transferVaultOwnership requires confirmation through confirmingRoles()');
367
+ await executeOperation(timelockContract.address, dashboardContract.address, data, finalSalt, `transferVaultOwnership(${newOwner})`, `Are you sure you want to execute transferring vault ownership to ${newOwner} on dashboard ${dashboardContract.address}?`);
368
+ });
369
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../../../programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './main.js';
2
+ export * from './common/index.js';
3
+ export * from './pool/index.js';
4
+ export * from './dashboard/index.js';
5
+ export * from './withdrawal-queue/index.js';
6
+ export * from './proxy/index.js';
@@ -0,0 +1,7 @@
1
+ export * from './main.js';
2
+ export * from './common/index.js';
3
+ export * from './pool/index.js';
4
+ export * from './dashboard/index.js';
5
+ export * from './withdrawal-queue/index.js';
6
+ export * from './proxy/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../programs/defi-wrapper/use-cases/timelock-governance/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const timelockGovernance: import("commander").Command;
@@ -0,0 +1,6 @@
1
+ import { useCases } from '../main.js';
2
+ export const timelockGovernance = useCases
3
+ .command('timelock-governance')
4
+ .alias('tg')
5
+ .description('timelock governance helpers');
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../programs/defi-wrapper/use-cases/timelock-governance/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ;KACvC,OAAO,CAAC,qBAAqB,CAAC;KAC9B,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,6BAA6B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './main.js';
2
+ export * from './write.js';
@@ -0,0 +1,3 @@
1
+ export * from './main.js';
2
+ export * from './write.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../programs/defi-wrapper/use-cases/timelock-governance/pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const pool: import("commander").Command;
@@ -0,0 +1,6 @@
1
+ import { timelockGovernance } from '../main.js';
2
+ export const pool = timelockGovernance
3
+ .command('pool')
4
+ .alias('p')
5
+ .description('pool timelock governance commands');
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../../../programs/defi-wrapper/use-cases/timelock-governance/pool/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB;KACnC,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,mCAAmC,CAAC,CAAC"}
@@ -0,0 +1,184 @@
1
+ import { Option } from 'commander';
2
+ import { ACCOUNT_GRANT_ARGUMENT, ACCOUNT_REVOKE_ARGUMENT, executeOperation, getPromptTimelock, processSalt, promptAccount, promptRole, proposeOperation, ROLE_ARGUMENT, SALT_OPTION, TIMELOCK_ARGUMENT, } from '../../../../../features/defi-wrapper/index.js';
3
+ import { logInfo, getCommandsJson, stringToAddress, addressPrompt, textPrompt, } from '../../../../../utils/index.js';
4
+ import { pool } from './main.js';
5
+ import { encodeFunctionData, maxUint16 } from 'viem';
6
+ import { getStvStethPoolContract } from '../../../../../contracts/defi-wrapper/index.js';
7
+ import { StvPoolAbi, StvStETHPoolAbi } from '../../../../../abi/defi-wrapper/index.js';
8
+ // Common helpers
9
+ const POOL_ARGUMENT = [
10
+ '[pool]',
11
+ 'pool contract address',
12
+ stringToAddress,
13
+ ];
14
+ const MAX_SOCIALIZABLE_PORTION_BP_ARGUMENT = [
15
+ '[maxSocializablePortionBP]',
16
+ 'max socializable portion in basis points (uint16)',
17
+ (v) => (v ? Number(v) : undefined),
18
+ ];
19
+ const promptPool = async (poolAddress) => {
20
+ if (!poolAddress) {
21
+ const poolPrompt = await addressPrompt('Enter pool contract address', 'pool');
22
+ poolAddress = poolPrompt.pool;
23
+ }
24
+ return getStvStethPoolContract(poolAddress);
25
+ };
26
+ const promptMaxSocializablePortionBP = async (maxSocializablePortionBPInput) => {
27
+ let maxSocializablePortionBP;
28
+ if (maxSocializablePortionBPInput === undefined) {
29
+ const bpPrompt = await textPrompt('Enter max socializable portion in basis points (uint16, e.g., 100 = 1%)', 'maxSocializablePortionBP');
30
+ maxSocializablePortionBP = Number(bpPrompt.maxSocializablePortionBP);
31
+ }
32
+ else {
33
+ maxSocializablePortionBP = maxSocializablePortionBPInput;
34
+ }
35
+ if (maxSocializablePortionBP < 0 || maxSocializablePortionBP > maxUint16) {
36
+ throw new Error(`maxSocializablePortionBP must be between 0 and ${maxUint16} (uint16)`);
37
+ }
38
+ return maxSocializablePortionBP;
39
+ };
40
+ // Command definitions
41
+ const poolWrite = pool
42
+ .command('write')
43
+ .alias('w')
44
+ .description('pool timelock write commands');
45
+ poolWrite.addOption(new Option('-cmd2json'));
46
+ poolWrite.on('option:-cmd2json', function () {
47
+ logInfo(getCommandsJson(poolWrite));
48
+ process.exit();
49
+ });
50
+ poolWrite
51
+ .command('propose-grant-role')
52
+ .description('propose granting a role on Pool via Timelock')
53
+ .argument(...TIMELOCK_ARGUMENT)
54
+ .argument(...POOL_ARGUMENT)
55
+ .argument(...ROLE_ARGUMENT)
56
+ .argument(...ACCOUNT_GRANT_ARGUMENT)
57
+ .option(...SALT_OPTION)
58
+ .action(async (timelock, poolAddress, roleInput, accountInput, options) => {
59
+ // Interactive prompts for missing parameters
60
+ const timelockContract = await getPromptTimelock(timelock);
61
+ const poolContract = await promptPool(poolAddress);
62
+ const role = await promptRole(roleInput, poolContract);
63
+ const finalSalt = processSalt(options?.salt);
64
+ const account = await promptAccount(accountInput, 'Enter account address to grant role to');
65
+ // Encode grantRole call
66
+ const data = encodeFunctionData({
67
+ abi: StvPoolAbi,
68
+ functionName: 'grantRole',
69
+ args: [role, account],
70
+ });
71
+ await proposeOperation(timelockContract.address, poolContract.address, data, finalSalt, 'grantRole', `Are you sure you want to propose granting role ${role} to ${account} on pool ${poolContract.address}?`);
72
+ });
73
+ poolWrite
74
+ .command('execute-grant-role')
75
+ .description('execute granting a role on Pool via Timelock')
76
+ .argument(...TIMELOCK_ARGUMENT)
77
+ .argument(...POOL_ARGUMENT)
78
+ .argument(...ROLE_ARGUMENT)
79
+ .argument(...ACCOUNT_GRANT_ARGUMENT)
80
+ .option(...SALT_OPTION)
81
+ .action(async (timelock, poolAddress, roleInput, accountInput, options) => {
82
+ // Interactive prompts for missing parameters
83
+ const timelockContract = await getPromptTimelock(timelock);
84
+ const poolContract = await promptPool(poolAddress);
85
+ const role = await promptRole(roleInput, poolContract);
86
+ const finalSalt = processSalt(options?.salt);
87
+ const account = await promptAccount(accountInput, 'Enter account address to grant role to');
88
+ // Encode grantRole call (same as in propose)
89
+ const data = encodeFunctionData({
90
+ abi: StvPoolAbi,
91
+ functionName: 'grantRole',
92
+ args: [role, account],
93
+ });
94
+ await executeOperation(timelockContract.address, poolContract.address, data, finalSalt, 'grantRole', `Are you sure you want to execute granting role ${role} to ${account} on pool ${poolContract.address}?`);
95
+ });
96
+ poolWrite
97
+ .command('propose-revoke-role')
98
+ .description('propose revoking a role on Pool via Timelock')
99
+ .argument(...TIMELOCK_ARGUMENT)
100
+ .argument(...POOL_ARGUMENT)
101
+ .argument(...ROLE_ARGUMENT)
102
+ .argument(...ACCOUNT_REVOKE_ARGUMENT)
103
+ .option(...SALT_OPTION)
104
+ .action(async (timelock, poolAddress, roleInput, accountInput, options) => {
105
+ // Interactive prompts for missing parameters
106
+ const timelockContract = await getPromptTimelock(timelock);
107
+ const poolContract = await promptPool(poolAddress);
108
+ const role = await promptRole(roleInput, poolContract);
109
+ const finalSalt = processSalt(options?.salt);
110
+ const account = await promptAccount(accountInput, 'Enter account address to revoke role from');
111
+ // Encode revokeRole call
112
+ const data = encodeFunctionData({
113
+ abi: StvPoolAbi,
114
+ functionName: 'revokeRole',
115
+ args: [role, account],
116
+ });
117
+ await proposeOperation(timelockContract.address, poolContract.address, data, finalSalt, 'revokeRole', `Are you sure you want to propose revoking role ${role} from ${account} on pool ${poolContract.address}?`);
118
+ });
119
+ poolWrite
120
+ .command('execute-revoke-role')
121
+ .description('execute revoking a role on Pool via Timelock')
122
+ .argument(...TIMELOCK_ARGUMENT)
123
+ .argument(...POOL_ARGUMENT)
124
+ .argument(...ROLE_ARGUMENT)
125
+ .argument(...ACCOUNT_REVOKE_ARGUMENT)
126
+ .option(...SALT_OPTION)
127
+ .action(async (timelock, poolAddress, roleInput, accountInput, options) => {
128
+ // Interactive prompts for missing parameters
129
+ const timelockContract = await getPromptTimelock(timelock);
130
+ const poolContract = await promptPool(poolAddress);
131
+ const role = await promptRole(roleInput, poolContract);
132
+ const finalSalt = processSalt(options?.salt);
133
+ const account = await promptAccount(accountInput, 'Enter account address to revoke role from');
134
+ // Encode revokeRole call
135
+ const data = encodeFunctionData({
136
+ abi: StvPoolAbi,
137
+ functionName: 'revokeRole',
138
+ args: [role, account],
139
+ });
140
+ await executeOperation(timelockContract.address, poolContract.address, data, finalSalt, 'revokeRole', `Are you sure you want to execute revoking role ${role} from ${account} on pool ${poolContract.address}?`);
141
+ });
142
+ poolWrite
143
+ .command('propose-set-max-loss-socialization-bp')
144
+ .description('propose setting maxLossSocializationBP on StvStETHPool via Timelock')
145
+ .argument(...TIMELOCK_ARGUMENT)
146
+ .argument(...POOL_ARGUMENT)
147
+ .argument(...MAX_SOCIALIZABLE_PORTION_BP_ARGUMENT)
148
+ .option(...SALT_OPTION)
149
+ .action(async (timelock, poolAddress, maxSocializablePortionBPInput, options) => {
150
+ // Interactive prompts for missing parameters
151
+ const timelockContract = await getPromptTimelock(timelock);
152
+ const poolContract = await promptPool(poolAddress);
153
+ const maxSocializablePortionBP = await promptMaxSocializablePortionBP(maxSocializablePortionBPInput);
154
+ const finalSalt = processSalt(options?.salt);
155
+ // Encode setMaxLossSocializationBP call
156
+ const data = encodeFunctionData({
157
+ abi: StvStETHPoolAbi,
158
+ functionName: 'setMaxLossSocializationBP',
159
+ args: [maxSocializablePortionBP],
160
+ });
161
+ await proposeOperation(timelockContract.address, poolContract.address, data, finalSalt, `setMaxLossSocializationBP(${maxSocializablePortionBP})`, `Are you sure you want to propose setting maxLossSocializationBP to ${maxSocializablePortionBP} BP on pool ${poolContract.address}?`);
162
+ });
163
+ poolWrite
164
+ .command('execute-set-max-loss-socialization-bp')
165
+ .description('execute setting maxLossSocializationBP on StvStETHPool via Timelock')
166
+ .argument(...TIMELOCK_ARGUMENT)
167
+ .argument(...POOL_ARGUMENT)
168
+ .argument(...MAX_SOCIALIZABLE_PORTION_BP_ARGUMENT)
169
+ .option(...SALT_OPTION)
170
+ .action(async (timelock, poolAddress, maxSocializablePortionBPInput, options) => {
171
+ // Interactive prompts for missing parameters
172
+ const timelockContract = await getPromptTimelock(timelock);
173
+ const poolContract = await promptPool(poolAddress);
174
+ const maxSocializablePortionBP = await promptMaxSocializablePortionBP(maxSocializablePortionBPInput);
175
+ const finalSalt = processSalt(options?.salt);
176
+ // Encode setMaxLossSocializationBP call (same as in propose)
177
+ const data = encodeFunctionData({
178
+ abi: StvStETHPoolAbi,
179
+ functionName: 'setMaxLossSocializationBP',
180
+ args: [maxSocializablePortionBP],
181
+ });
182
+ await proposeOperation(timelockContract.address, poolContract.address, data, finalSalt, `setMaxLossSocializationBP(${maxSocializablePortionBP})`, `Are you sure you want to execute setting maxLossSocializationBP to ${maxSocializablePortionBP} BP on pool ${poolContract.address}?`);
183
+ });
184
+ //# sourceMappingURL=write.js.map