@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.
- package/dist/abi/Dashboard.d.ts +24 -0
- package/dist/abi/PredepositGuarantee.d.ts +48 -0
- package/dist/abi/PredepositGuarantee.js +32 -0
- package/dist/abi/PredepositGuarantee.js.map +1 -1
- package/dist/abi/StEth.d.ts +1175 -59
- package/dist/abi/StEth.js +885 -320
- package/dist/abi/StEth.js.map +1 -1
- package/dist/abi/defi-wrapper/Factory.d.ts +532 -657
- package/dist/abi/defi-wrapper/Factory.js +1083 -647
- package/dist/abi/defi-wrapper/Factory.js.map +1 -1
- package/dist/abi/defi-wrapper/OssifiableProxy.d.ts +71 -0
- package/dist/abi/defi-wrapper/OssifiableProxy.js +93 -0
- package/dist/abi/defi-wrapper/OssifiableProxy.js.map +1 -0
- package/dist/abi/defi-wrapper/StvStETHPool.d.ts +38 -32
- package/dist/abi/defi-wrapper/StvStETHPool.js +50 -42
- package/dist/abi/defi-wrapper/StvStETHPool.js.map +1 -1
- package/dist/abi/defi-wrapper/TimeLock.d.ts +770 -0
- package/dist/abi/defi-wrapper/TimeLock.js +999 -0
- package/dist/abi/defi-wrapper/TimeLock.js.map +1 -0
- package/dist/abi/defi-wrapper/index.d.ts +2 -0
- package/dist/abi/defi-wrapper/index.js +2 -0
- package/dist/abi/defi-wrapper/index.js.map +1 -1
- package/dist/contracts/defi-wrapper/index.d.ts +2 -0
- package/dist/contracts/defi-wrapper/index.js +2 -0
- package/dist/contracts/defi-wrapper/index.js.map +1 -1
- package/dist/contracts/defi-wrapper/ossifiable-proxy.d.ts +4 -0
- package/dist/contracts/defi-wrapper/ossifiable-proxy.js +12 -0
- package/dist/contracts/defi-wrapper/ossifiable-proxy.js.map +1 -0
- package/dist/contracts/defi-wrapper/timelock.d.ts +4 -0
- package/dist/contracts/defi-wrapper/timelock.js +12 -0
- package/dist/contracts/defi-wrapper/timelock.js.map +1 -0
- package/dist/contracts/steth.d.ts +4 -27706
- package/dist/contracts/steth.js +2 -2
- package/dist/contracts/steth.js.map +1 -1
- package/dist/features/consolidation.js +19 -3
- package/dist/features/consolidation.js.map +1 -1
- package/dist/features/defi-wrapper/create-vault.js +16 -13
- package/dist/features/defi-wrapper/create-vault.js.map +1 -1
- package/dist/features/defi-wrapper/defi-wrapper-factory.d.ts +10 -27
- package/dist/features/defi-wrapper/defi-wrapper-factory.js +105 -15
- package/dist/features/defi-wrapper/defi-wrapper-factory.js.map +1 -1
- package/dist/features/defi-wrapper/distributor.d.ts +24 -0
- package/dist/features/defi-wrapper/distributor.js +300 -0
- package/dist/features/defi-wrapper/distributor.js.map +1 -0
- package/dist/features/defi-wrapper/index.d.ts +1 -0
- package/dist/features/defi-wrapper/index.js +1 -0
- package/dist/features/defi-wrapper/index.js.map +1 -1
- package/dist/features/defi-wrapper/pool-info.d.ts +17 -2
- package/dist/features/defi-wrapper/pool-info.js +63 -13
- package/dist/features/defi-wrapper/pool-info.js.map +1 -1
- package/dist/features/defi-wrapper/timelock.d.ts +19 -0
- package/dist/features/defi-wrapper/timelock.js +198 -0
- package/dist/features/defi-wrapper/timelock.js.map +1 -0
- package/dist/features/deposits/check-bls-deposits.js +15 -3
- package/dist/features/deposits/check-bls-deposits.js.map +1 -1
- package/dist/features/deposits/make-pdg-proof.js +15 -3
- package/dist/features/deposits/make-pdg-proof.js.map +1 -1
- package/dist/features/deposits/no-pdg.js +50 -14
- package/dist/features/deposits/no-pdg.js.map +1 -1
- package/dist/features/deposits/pdg.js +5 -1
- package/dist/features/deposits/pdg.js.map +1 -1
- package/dist/features/dev-tools/impersonate.js +5 -1
- package/dist/features/dev-tools/impersonate.js.map +1 -1
- package/dist/features/metrics.js +24 -6
- package/dist/features/metrics.js.map +1 -1
- package/dist/features/mint-burn/allowance.js +15 -6
- package/dist/features/mint-burn/allowance.js.map +1 -1
- package/dist/features/mint-burn/burn-steth.js +5 -1
- package/dist/features/mint-burn/burn-steth.js.map +1 -1
- package/dist/features/mint-burn/index.d.ts +1 -0
- package/dist/features/mint-burn/index.js +1 -0
- package/dist/features/mint-burn/index.js.map +1 -1
- package/dist/features/mint-burn/mint-limit.d.ts +9 -0
- package/dist/features/mint-burn/mint-limit.js +31 -0
- package/dist/features/mint-burn/mint-limit.js.map +1 -0
- package/dist/features/mint-burn/mint-steth.js +5 -1
- package/dist/features/mint-burn/mint-steth.js.map +1 -1
- package/dist/features/pdg.js +5 -1
- package/dist/features/pdg.js.map +1 -1
- package/dist/features/utils/connection.js +5 -1
- package/dist/features/utils/connection.js.map +1 -1
- package/dist/features/utils/index.d.ts +1 -0
- package/dist/features/utils/index.js +1 -0
- package/dist/features/utils/index.js.map +1 -1
- package/dist/features/utils/liability-shares.js +5 -1
- package/dist/features/utils/liability-shares.js.map +1 -1
- package/dist/features/utils/minting-capacity.js +4 -3
- package/dist/features/utils/minting-capacity.js.map +1 -1
- package/dist/features/utils/quarantine.js +5 -1
- package/dist/features/utils/quarantine.js.map +1 -1
- package/dist/features/utils/report-fresh.js +15 -3
- package/dist/features/utils/report-fresh.js.map +1 -1
- package/dist/features/utils/try-fetch.d.ts +5 -0
- package/dist/features/utils/try-fetch.js +26 -0
- package/dist/features/utils/try-fetch.js.map +1 -0
- package/dist/features/vault-factory.js +15 -3
- package/dist/features/vault-factory.js.map +1 -1
- package/dist/features/vault-operations/connect-vault.js +10 -2
- package/dist/features/vault-operations/connect-vault.js.map +1 -1
- package/dist/features/vault-operations/dashboard-by-vault.js +10 -2
- package/dist/features/vault-operations/dashboard-by-vault.js.map +1 -1
- package/dist/features/vault-operations/roles.js +10 -2
- package/dist/features/vault-operations/roles.js.map +1 -1
- package/dist/features/vault-operations/vault-health.js +5 -1
- package/dist/features/vault-operations/vault-health.js.map +1 -1
- package/dist/features/vault-operations/vault-info.js +10 -2
- package/dist/features/vault-operations/vault-info.js.map +1 -1
- package/dist/features/vault-operations/vault-overview.js +25 -5
- package/dist/features/vault-operations/vault-overview.js.map +1 -1
- package/dist/features/vault-operations/vault-roles.js +10 -2
- package/dist/features/vault-operations/vault-roles.js.map +1 -1
- package/dist/features/vault-operations/vaults-by-role.d.ts +24 -0
- package/dist/features/vault-operations/vaults-by-role.js +78 -27
- package/dist/features/vault-operations/vaults-by-role.js.map +1 -1
- package/dist/index.js +9 -5
- package/dist/index.js.map +1 -1
- package/dist/programs/account/read.js +10 -5
- package/dist/programs/account/read.js.map +1 -1
- package/dist/programs/contracts/dashboard/read.js +15 -3
- package/dist/programs/contracts/dashboard/read.js.map +1 -1
- package/dist/programs/contracts/dashboard/write.js +212 -38
- package/dist/programs/contracts/dashboard/write.js.map +1 -1
- package/dist/programs/contracts/hub/read.js +15 -5
- package/dist/programs/contracts/hub/read.js.map +1 -1
- package/dist/programs/contracts/hub/write.js +10 -2
- package/dist/programs/contracts/hub/write.js.map +1 -1
- package/dist/programs/contracts/operator-grid/read.js +5 -1
- package/dist/programs/contracts/operator-grid/read.js.map +1 -1
- package/dist/programs/contracts/operator-grid/write.js +5 -1
- package/dist/programs/contracts/operator-grid/write.js.map +1 -1
- package/dist/programs/contracts/pdg/read.js +5 -1
- package/dist/programs/contracts/pdg/read.js.map +1 -1
- package/dist/programs/contracts/pdg/write.js +33 -3
- package/dist/programs/contracts/pdg/write.js.map +1 -1
- package/dist/programs/contracts/vault/write.js +5 -1
- package/dist/programs/contracts/vault/write.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/distributor/read.js +17 -5
- package/dist/programs/defi-wrapper/contracts/distributor/read.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/factory/read.js +73 -13
- package/dist/programs/defi-wrapper/contracts/factory/read.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/factory/write.js +171 -65
- package/dist/programs/defi-wrapper/contracts/factory/write.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/stv-pool/read.js +62 -18
- package/dist/programs/defi-wrapper/contracts/stv-pool/read.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js +62 -18
- package/dist/programs/defi-wrapper/contracts/stv-steth-pool/read.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js +64 -16
- package/dist/programs/defi-wrapper/contracts/withdrawal-queue/read.js.map +1 -1
- package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js +33 -6
- package/dist/programs/defi-wrapper/contracts/withdrawal-queue/write.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/distributor/index.d.ts +3 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/index.js +4 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/read.js +86 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/read.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/write.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/write.js +191 -0
- package/dist/programs/defi-wrapper/use-cases/distributor/write.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/health/read.js +71 -21
- package/dist/programs/defi-wrapper/use-cases/health/read.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/health/utils.js +10 -2
- package/dist/programs/defi-wrapper/use-cases/health/utils.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/health/write.js +65 -22
- package/dist/programs/defi-wrapper/use-cases/health/write.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/index.d.ts +2 -0
- package/dist/programs/defi-wrapper/use-cases/index.js +2 -0
- package/dist/programs/defi-wrapper/use-cases/index.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/index.d.ts +3 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/index.js +4 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.js +362 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/read.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.js +86 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/common/write.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/index.d.ts +2 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/index.js +3 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.js +369 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/dashboard/write.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/index.d.ts +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/index.js +7 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/index.d.ts +2 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/index.js +3 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/write.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/write.js +184 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/pool/write.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/index.d.ts +3 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/index.js +4 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/read.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/read.js +80 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/read.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/write.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/write.js +139 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/proxy/write.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/index.d.ts +2 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/index.js +3 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/index.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/main.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/main.js +6 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/main.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/write.d.ts +1 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/write.js +118 -0
- package/dist/programs/defi-wrapper/use-cases/timelock-governance/withdrawal-queue/write.js.map +1 -0
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.d.ts +1 -1
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js +1 -2
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/index.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js +333 -11
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/read.js.map +1 -1
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js +463 -2
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/write.js.map +1 -1
- package/dist/programs/dev-tools/defi-wrapper/write.js +41 -11
- package/dist/programs/dev-tools/defi-wrapper/write.js.map +1 -1
- package/dist/programs/pdg-helpers.js +55 -19
- package/dist/programs/pdg-helpers.js.map +1 -1
- package/dist/programs/use-cases/consolidation/write.js +5 -1
- package/dist/programs/use-cases/consolidation/write.js.map +1 -1
- package/dist/programs/use-cases/deposits/read.js +40 -8
- package/dist/programs/use-cases/deposits/read.js.map +1 -1
- package/dist/programs/use-cases/deposits/write.js +15 -3
- package/dist/programs/use-cases/deposits/write.js.map +1 -1
- package/dist/programs/use-cases/metrics/read.js +25 -5
- package/dist/programs/use-cases/metrics/read.js.map +1 -1
- package/dist/programs/use-cases/report/read.js +25 -5
- package/dist/programs/use-cases/report/read.js.map +1 -1
- package/dist/programs/use-cases/report/write.js +10 -2
- package/dist/programs/use-cases/report/write.js.map +1 -1
- package/dist/programs/use-cases/vault-operations/write.js +30 -6
- package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/tests/utils/rate-limit.test.d.ts +1 -0
- package/dist/tests/utils/rate-limit.test.js +246 -0
- package/dist/tests/utils/rate-limit.test.js.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/utils/arguments.d.ts +14 -0
- package/dist/utils/arguments.js +28 -0
- package/dist/utils/arguments.js.map +1 -1
- package/dist/utils/cache.d.ts +6 -4
- package/dist/utils/cache.js +14 -11
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/charts/blessed/charts-apr.js +5 -1
- package/dist/utils/charts/blessed/charts-apr.js.map +1 -1
- package/dist/utils/charts/blessed/charts-rewards.js +5 -1
- package/dist/utils/charts/blessed/charts-rewards.js.map +1 -1
- package/dist/utils/charts/simple/simple-charts.js +5 -1
- package/dist/utils/charts/simple/simple-charts.js.map +1 -1
- package/dist/utils/commands/report.d.ts +5 -2
- package/dist/utils/commands/report.js +21 -7
- package/dist/utils/commands/report.js.map +1 -1
- package/dist/utils/consts.d.ts +1 -0
- package/dist/utils/consts.js +5 -0
- package/dist/utils/consts.js.map +1 -1
- package/dist/utils/fetchCL.d.ts +10 -0
- package/dist/utils/fetchCL.js +19 -0
- package/dist/utils/fetchCL.js.map +1 -1
- package/dist/utils/health/health-utils.d.ts +2 -27707
- package/dist/utils/health/health-utils.js +26 -8
- package/dist/utils/health/health-utils.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/prompts/operations.js +1 -3
- package/dist/utils/prompts/operations.js.map +1 -1
- package/dist/utils/rate-limit.d.ts +10 -0
- package/dist/utils/rate-limit.js +30 -0
- package/dist/utils/rate-limit.js.map +1 -0
- package/dist/utils/read-programs-by-abi.js +22 -4
- package/dist/utils/read-programs-by-abi.js.map +1 -1
- package/dist/utils/report/statistic-data.js +8 -2
- package/dist/utils/report/statistic-data.js.map +1 -1
- package/dist/utils/share-rate.js +16 -4
- package/dist/utils/share-rate.js.map +1 -1
- package/dist/utils/sleep.js.map +1 -1
- package/dist/utils/transactions/tx-private-key.d.ts +3 -5
- package/dist/utils/transactions/tx-private-key.js +13 -10
- package/dist/utils/transactions/tx-private-key.js.map +1 -1
- package/dist/utils/transactions/types.d.ts +7 -0
- package/dist/utils/transactions/utils.js +2 -2
- package/dist/utils/transactions/utils.js.map +1 -1
- package/dist/version/index.js +1 -1
- package/package.json +3 -12
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js +0 -180
- package/dist/programs/defi-wrapper/use-cases/wrapper-operations/create-pool.js.map +0 -1
- /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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|