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