@lidofinance/lsv-cli 1.0.0-alpha.3 → 1.0.0-alpha.31
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/README.md +102 -1
- package/dist/abi/BlsHarness.d.ts +178 -0
- package/dist/abi/BlsHarness.js +232 -0
- package/dist/abi/BlsHarness.js.map +1 -0
- package/dist/abi/CLProofVerifier.d.ts +188 -0
- package/dist/abi/CLProofVerifier.js +247 -0
- package/dist/abi/CLProofVerifier.js.map +1 -0
- package/dist/abi/Dashboard.d.ts +1486 -0
- package/dist/abi/Dashboard.js +1920 -0
- package/dist/abi/Dashboard.js.map +1 -0
- package/dist/abi/LidoLocator.d.ts +330 -0
- package/dist/abi/LidoLocator.js +426 -0
- package/dist/abi/LidoLocator.js.map +1 -0
- package/dist/abi/OperatorGrid.d.ts +914 -0
- package/dist/abi/OperatorGrid.js +1185 -0
- package/dist/abi/OperatorGrid.js.map +1 -0
- package/dist/abi/PredepositGuarantee.d.ts +1382 -0
- package/dist/abi/PredepositGuarantee.js +1789 -0
- package/dist/abi/PredepositGuarantee.js.map +1 -0
- package/dist/abi/ReportChecker.d.ts +83 -0
- package/dist/abi/ReportChecker.js +109 -0
- package/dist/abi/ReportChecker.js.map +1 -0
- package/dist/abi/StEth.d.ts +372 -0
- package/dist/abi/StEth.js +493 -0
- package/dist/abi/StEth.js.map +1 -0
- package/dist/abi/StakingVault.d.ts +864 -0
- package/dist/abi/StakingVault.js +1112 -0
- package/dist/abi/StakingVault.js.map +1 -0
- package/dist/abi/TokenManager.d.ts +577 -0
- package/dist/abi/TokenManager.js +756 -0
- package/dist/abi/TokenManager.js.map +1 -0
- package/dist/abi/VaultFactory.d.ts +160 -0
- package/dist/abi/VaultFactory.js +209 -0
- package/dist/abi/VaultFactory.js.map +1 -0
- package/dist/abi/VaultHub.d.ts +1309 -0
- package/dist/abi/VaultHub.js +1245 -436
- package/dist/abi/VaultHub.js.map +1 -1
- package/dist/abi/VaultViewer.d.ts +223 -0
- package/dist/abi/VaultViewer.js +297 -0
- package/dist/abi/VaultViewer.js.map +1 -0
- package/dist/abi/Voting.d.ts +676 -0
- package/dist/abi/Voting.js +884 -0
- package/dist/abi/Voting.js.map +1 -0
- package/dist/abi/WstEth.d.ts +362 -0
- package/dist/abi/WstEth.js +478 -0
- package/dist/abi/WstEth.js.map +1 -0
- package/dist/abi/index.d.ts +15 -0
- package/dist/abi/index.js +17 -0
- package/dist/abi/index.js.map +1 -0
- package/dist/command/index.d.ts +2 -0
- package/dist/command/index.js +4 -5
- package/dist/command/index.js.map +1 -1
- package/dist/configs/constants.d.ts +36 -0
- package/dist/configs/constants.js +3 -0
- package/dist/configs/constants.js.map +1 -0
- package/dist/configs/deployed.d.ts +17 -0
- package/dist/configs/deployed.js +87 -52
- package/dist/configs/deployed.js.map +1 -1
- package/dist/configs/envs.d.ts +2 -0
- package/dist/configs/envs.js +8 -37
- package/dist/configs/envs.js.map +1 -1
- package/dist/configs/index.d.ts +3 -0
- package/dist/configs/index.js +3 -18
- package/dist/configs/index.js.map +1 -1
- package/dist/configs/utils.d.ts +4 -0
- package/dist/configs/utils.js +22 -0
- package/dist/configs/utils.js.map +1 -0
- package/dist/contracts/blsHarness.d.ts +947 -0
- package/dist/contracts/blsHarness.js +24 -0
- package/dist/contracts/blsHarness.js.map +1 -0
- package/dist/contracts/clProofVerifier.d.ts +2647 -0
- package/dist/contracts/clProofVerifier.js +23 -0
- package/dist/contracts/clProofVerifier.js.map +1 -0
- package/dist/contracts/dashboard.d.ts +4 -0
- package/dist/contracts/dashboard.js +11 -0
- package/dist/contracts/dashboard.js.map +1 -0
- package/dist/contracts/index.d.ts +15 -0
- package/dist/contracts/index.js +15 -17
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/locator.d.ts +6935 -0
- package/dist/contracts/locator.js +16 -0
- package/dist/contracts/locator.js.map +1 -0
- package/dist/contracts/operator-grid.d.ts +3 -0
- package/dist/contracts/operator-grid.js +17 -0
- package/dist/contracts/operator-grid.js.map +1 -0
- package/dist/contracts/pdg.d.ts +3 -0
- package/dist/contracts/pdg.js +17 -0
- package/dist/contracts/pdg.js.map +1 -0
- package/dist/contracts/reportChecker.d.ts +758 -0
- package/dist/contracts/reportChecker.js +23 -0
- package/dist/contracts/reportChecker.js.map +1 -0
- package/dist/contracts/steth.d.ts +27706 -0
- package/dist/contracts/steth.js +18 -0
- package/dist/contracts/steth.js.map +1 -0
- package/dist/contracts/token-manager.d.ts +3 -0
- package/dist/contracts/token-manager.js +13 -0
- package/dist/contracts/token-manager.js.map +1 -0
- package/dist/contracts/vault-factory.d.ts +2678 -0
- package/dist/contracts/vault-factory.js +14 -0
- package/dist/contracts/vault-factory.js.map +1 -0
- package/dist/contracts/vault-hub.d.ts +3 -0
- package/dist/contracts/vault-hub.js +14 -16
- package/dist/contracts/vault-hub.js.map +1 -1
- package/dist/contracts/vault-viewer.d.ts +2681 -0
- package/dist/contracts/vault-viewer.js +23 -0
- package/dist/contracts/vault-viewer.js.map +1 -0
- package/dist/contracts/vault.d.ts +3 -0
- package/dist/contracts/vault.js +11 -0
- package/dist/contracts/vault.js.map +1 -0
- package/dist/contracts/voting.d.ts +6 -0
- package/dist/contracts/voting.js +19 -0
- package/dist/contracts/voting.js.map +1 -0
- package/dist/contracts/wsteth.d.ts +24690 -0
- package/dist/contracts/wsteth.js +18 -0
- package/dist/contracts/wsteth.js.map +1 -0
- package/dist/features/advanced-config.d.ts +5 -0
- package/dist/features/advanced-config.js +17 -0
- package/dist/features/advanced-config.js.map +1 -0
- package/dist/features/dashboard.d.ts +5 -0
- package/dist/features/dashboard.js +210 -0
- package/dist/features/dashboard.js.map +1 -0
- package/dist/features/index.d.ts +8 -0
- package/dist/features/index.js +9 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/operator-grid.d.ts +2 -0
- package/dist/features/operator-grid.js +57 -0
- package/dist/features/operator-grid.js.map +1 -0
- package/dist/features/pdg.d.ts +2 -0
- package/dist/features/pdg.js +79 -0
- package/dist/features/pdg.js.map +1 -0
- package/dist/features/token-manager.d.ts +0 -0
- package/dist/features/token-manager.js +7 -0
- package/dist/features/token-manager.js.map +1 -0
- package/dist/features/vault-factory.d.ts +8 -0
- package/dist/features/vault-factory.js +52 -0
- package/dist/features/vault-factory.js.map +1 -0
- package/dist/features/vault-hub.d.ts +2 -0
- package/dist/features/vault-hub.js +81 -0
- package/dist/features/vault-hub.js.map +1 -0
- package/dist/features/vault.d.ts +2 -0
- package/dist/features/vault.js +54 -0
- package/dist/features/vault.js.map +1 -0
- package/dist/features/voting.d.ts +7 -0
- package/dist/features/voting.js +125 -0
- package/dist/features/voting.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/programs/account.d.ts +1 -0
- package/dist/programs/account.js +135 -0
- package/dist/programs/account.js.map +1 -0
- package/dist/programs/config.d.ts +1 -0
- package/dist/programs/config.js +31 -0
- package/dist/programs/config.js.map +1 -0
- package/dist/programs/dashboard/config.d.ts +2 -0
- package/dist/programs/dashboard/config.js +111 -0
- package/dist/programs/dashboard/config.js.map +1 -0
- package/dist/programs/dashboard/index.d.ts +3 -0
- package/dist/programs/dashboard/index.js +4 -0
- package/dist/programs/dashboard/index.js.map +1 -0
- package/dist/programs/dashboard/main.d.ts +1 -0
- package/dist/programs/dashboard/main.js +5 -0
- package/dist/programs/dashboard/main.js.map +1 -0
- package/dist/programs/dashboard/read.d.ts +1 -0
- package/dist/programs/dashboard/read.js +76 -0
- package/dist/programs/dashboard/read.js.map +1 -0
- package/dist/programs/dashboard/write.d.ts +1 -0
- package/dist/programs/dashboard/write.js +408 -0
- package/dist/programs/dashboard/write.js.map +1 -0
- package/dist/programs/hub/config.d.ts +2 -0
- package/dist/programs/hub/config.js +123 -0
- package/dist/programs/hub/config.js.map +1 -0
- package/dist/programs/hub/index.d.ts +3 -0
- package/dist/programs/hub/index.js +4 -0
- package/dist/programs/hub/index.js.map +1 -0
- package/dist/programs/hub/main.d.ts +1 -0
- package/dist/programs/hub/main.js +5 -0
- package/dist/programs/hub/main.js.map +1 -0
- package/dist/programs/hub/read.d.ts +1 -0
- package/dist/programs/hub/read.js +57 -0
- package/dist/programs/hub/read.js.map +1 -0
- package/dist/programs/hub/write.d.ts +1 -0
- package/dist/programs/hub/write.js +217 -0
- package/dist/programs/hub/write.js.map +1 -0
- package/dist/programs/index.d.ts +11 -0
- package/dist/programs/index.js +11 -17
- package/dist/programs/index.js.map +1 -1
- package/dist/programs/operator-grid/config.d.ts +2 -0
- package/dist/programs/operator-grid/config.js +81 -0
- package/dist/programs/operator-grid/config.js.map +1 -0
- package/dist/programs/operator-grid/index.d.ts +3 -0
- package/dist/programs/operator-grid/index.js +4 -0
- package/dist/programs/operator-grid/index.js.map +1 -0
- package/dist/programs/operator-grid/main.d.ts +1 -0
- package/dist/programs/operator-grid/main.js +5 -0
- package/dist/programs/operator-grid/main.js.map +1 -0
- package/dist/programs/operator-grid/read.d.ts +1 -0
- package/dist/programs/operator-grid/read.js +24 -0
- package/dist/programs/operator-grid/read.js.map +1 -0
- package/dist/programs/operator-grid/write.d.ts +1 -0
- package/dist/programs/operator-grid/write.js +109 -0
- package/dist/programs/operator-grid/write.js.map +1 -0
- package/dist/programs/pdg/config.d.ts +2 -0
- package/dist/programs/pdg/config.js +133 -0
- package/dist/programs/pdg/config.js.map +1 -0
- package/dist/programs/pdg/index.d.ts +3 -0
- package/dist/programs/pdg/index.js +4 -0
- package/dist/programs/pdg/index.js.map +1 -0
- package/dist/programs/pdg/main.d.ts +1 -0
- package/dist/programs/pdg/main.js +5 -0
- package/dist/programs/pdg/main.js.map +1 -0
- package/dist/programs/pdg/read.d.ts +1 -0
- package/dist/programs/pdg/read.js +24 -0
- package/dist/programs/pdg/read.js.map +1 -0
- package/dist/programs/pdg/write.d.ts +1 -0
- package/dist/programs/pdg/write.js +311 -0
- package/dist/programs/pdg/write.js.map +1 -0
- package/dist/programs/pdg-helpers.d.ts +1 -0
- package/dist/programs/pdg-helpers.js +207 -0
- package/dist/programs/pdg-helpers.js.map +1 -0
- package/dist/programs/report.d.ts +1 -0
- package/dist/programs/report.js +89 -0
- package/dist/programs/report.js.map +1 -0
- package/dist/programs/vault/config.d.ts +2 -0
- package/dist/programs/vault/config.js +70 -0
- package/dist/programs/vault/config.js.map +1 -0
- package/dist/programs/vault/index.d.ts +3 -0
- package/dist/programs/vault/index.js +4 -0
- package/dist/programs/vault/index.js.map +1 -0
- package/dist/programs/vault/main.d.ts +1 -0
- package/dist/programs/vault/main.js +3 -0
- package/dist/programs/vault/main.js.map +1 -0
- package/dist/programs/vault/read.d.ts +1 -0
- package/dist/programs/vault/read.js +25 -0
- package/dist/programs/vault/read.js.map +1 -0
- package/dist/programs/vault/write.d.ts +1 -0
- package/dist/programs/vault/write.js +203 -0
- package/dist/programs/vault/write.js.map +1 -0
- package/dist/programs/vault-factory/config.d.ts +2 -0
- package/dist/programs/vault-factory/config.js +2 -0
- package/dist/programs/vault-factory/config.js.map +1 -0
- package/dist/programs/vault-factory/index.d.ts +3 -0
- package/dist/programs/vault-factory/index.js +4 -0
- package/dist/programs/vault-factory/index.js.map +1 -0
- package/dist/programs/vault-factory/main.d.ts +1 -0
- package/dist/programs/vault-factory/main.js +5 -0
- package/dist/programs/vault-factory/main.js.map +1 -0
- package/dist/programs/vault-factory/read.d.ts +1 -0
- package/dist/programs/vault-factory/read.js +24 -0
- package/dist/programs/vault-factory/read.js.map +1 -0
- package/dist/programs/vault-factory/write.d.ts +1 -0
- package/dist/programs/vault-factory/write.js +72 -0
- package/dist/programs/vault-factory/write.js.map +1 -0
- package/dist/programs/vault-viewer/config.d.ts +2 -0
- package/dist/programs/vault-viewer/config.js +85 -0
- package/dist/programs/vault-viewer/config.js.map +1 -0
- package/dist/programs/vault-viewer/index.d.ts +2 -0
- package/dist/programs/vault-viewer/index.js +3 -0
- package/dist/programs/vault-viewer/index.js.map +1 -0
- package/dist/programs/vault-viewer/main.d.ts +1 -0
- package/dist/programs/vault-viewer/main.js +10 -0
- package/dist/programs/vault-viewer/main.js.map +1 -0
- package/dist/programs/vault-viewer/read.d.ts +1 -0
- package/dist/programs/vault-viewer/read.js +55 -0
- package/dist/programs/vault-viewer/read.js.map +1 -0
- package/dist/programs/voting.d.ts +1 -0
- package/dist/programs/voting.js +18 -0
- package/dist/programs/voting.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.js +1 -17
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/wallet.d.ts +6897 -0
- package/dist/providers/wallet.js +20 -29
- package/dist/providers/wallet.js.map +1 -1
- package/dist/types/common.d.ts +31 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/config.d.ts +23 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/arguments.d.ts +13 -0
- package/dist/utils/arguments.js +67 -0
- package/dist/utils/arguments.js.map +1 -0
- package/dist/utils/bls.d.ts +21 -0
- package/dist/utils/bls.js +101 -0
- package/dist/utils/bls.js.map +1 -0
- package/dist/utils/calculate-overview.d.ts +19 -0
- package/dist/utils/calculate-overview.js +55 -0
- package/dist/utils/calculate-overview.js.map +1 -0
- package/dist/utils/commands/dashboard.d.ts +6 -0
- package/dist/utils/commands/dashboard.js +103 -0
- package/dist/utils/commands/dashboard.js.map +1 -0
- package/dist/utils/commands/index.d.ts +1 -0
- package/dist/utils/commands/index.js +2 -0
- package/dist/utils/commands/index.js.map +1 -0
- package/dist/utils/contract.d.ts +25 -0
- package/dist/utils/contract.js +138 -0
- package/dist/utils/contract.js.map +1 -0
- package/dist/utils/data-validators.d.ts +6 -0
- package/dist/utils/data-validators.js +54 -0
- package/dist/utils/data-validators.js.map +1 -0
- package/dist/utils/error-handler.d.ts +1 -0
- package/dist/utils/error-handler.js +13 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/fetchCL.d.ts +14 -0
- package/dist/utils/fetchCL.js +57 -0
- package/dist/utils/fetchCL.js.map +1 -0
- package/dist/utils/get-commands.d.ts +2 -0
- package/dist/utils/get-commands.js +11 -0
- package/dist/utils/get-commands.js.map +1 -0
- package/dist/utils/get-deposit-data-root.d.ts +7 -0
- package/dist/utils/get-deposit-data-root.js +40 -0
- package/dist/utils/get-deposit-data-root.js.map +1 -0
- package/dist/utils/get-value.d.ts +1 -0
- package/dist/utils/get-value.js +5 -11
- package/dist/utils/get-value.js.map +1 -1
- package/dist/utils/health.d.ts +27748 -0
- package/dist/utils/health.js +84 -0
- package/dist/utils/health.js.map +1 -0
- package/dist/utils/index.d.ts +22 -0
- package/dist/utils/index.js +22 -17
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ipfs.d.ts +6 -0
- package/dist/utils/ipfs.js +54 -0
- package/dist/utils/ipfs.js.map +1 -0
- package/dist/utils/logging/console.d.ts +7 -0
- package/dist/utils/logging/console.js +23 -0
- package/dist/utils/logging/console.js.map +1 -0
- package/dist/utils/logging/constants.d.ts +2 -0
- package/dist/utils/logging/constants.js +12 -0
- package/dist/utils/logging/constants.js.map +1 -0
- package/dist/utils/logging/index.d.ts +1 -0
- package/dist/utils/logging/index.js +2 -0
- package/dist/utils/logging/index.js.map +1 -0
- package/dist/utils/prompts/dashboard.d.ts +29 -0
- package/dist/utils/prompts/dashboard.js +63 -0
- package/dist/utils/prompts/dashboard.js.map +1 -0
- package/dist/utils/prompts/default.d.ts +3 -0
- package/dist/utils/prompts/default.js +17 -0
- package/dist/utils/prompts/default.js.map +1 -0
- package/dist/utils/prompts/index.d.ts +5 -0
- package/dist/utils/prompts/index.js +6 -0
- package/dist/utils/prompts/index.js.map +1 -0
- package/dist/utils/prompts/operations.d.ts +9 -0
- package/dist/utils/prompts/operations.js +41 -0
- package/dist/utils/prompts/operations.js.map +1 -0
- package/dist/utils/prompts/predeposit-guarantee.d.ts +3 -0
- package/dist/utils/prompts/predeposit-guarantee.js +22 -0
- package/dist/utils/prompts/predeposit-guarantee.js.map +1 -0
- package/dist/utils/prompts/vault.d.ts +2 -0
- package/dist/utils/prompts/vault.js +14 -0
- package/dist/utils/prompts/vault.js.map +1 -0
- package/dist/utils/proof/create-proof.d.ts +11 -0
- package/dist/utils/proof/create-proof.js +38 -0
- package/dist/utils/proof/create-proof.js.map +1 -0
- package/dist/utils/proof/first-validator-gindex.d.ts +1 -0
- package/dist/utils/proof/first-validator-gindex.js +27 -0
- package/dist/utils/proof/first-validator-gindex.js.map +1 -0
- package/dist/utils/proof/index.d.ts +4 -0
- package/dist/utils/proof/index.js +5 -0
- package/dist/utils/proof/index.js.map +1 -0
- package/dist/utils/proof/merkle-utils.d.ts +54 -0
- package/dist/utils/proof/merkle-utils.js +173 -0
- package/dist/utils/proof/merkle-utils.js.map +1 -0
- package/dist/utils/proof/proofs.d.ts +305 -0
- package/dist/utils/proof/proofs.js +52 -0
- package/dist/utils/proof/proofs.js.map +1 -0
- package/dist/utils/proof/report-proof.d.ts +5 -0
- package/dist/utils/proof/report-proof.js +26 -0
- package/dist/utils/proof/report-proof.js.map +1 -0
- package/dist/utils/read-programs-by-abi.d.ts +18 -0
- package/dist/utils/read-programs-by-abi.js +87 -0
- package/dist/utils/read-programs-by-abi.js.map +1 -0
- package/dist/utils/report.d.ts +75 -0
- package/dist/utils/report.js +68 -0
- package/dist/utils/report.js.map +1 -0
- package/dist/utils/required-lock.d.ts +5 -0
- package/dist/utils/required-lock.js +21 -0
- package/dist/utils/required-lock.js.map +1 -0
- package/dist/utils/resolve-path.d.ts +1 -0
- package/dist/utils/resolve-path.js +10 -0
- package/dist/utils/resolve-path.js.map +1 -0
- package/dist/utils/sleep.d.ts +1 -0
- package/dist/utils/sleep.js +4 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/spinner/index.d.ts +1 -0
- package/dist/utils/spinner/index.js +2 -0
- package/dist/utils/spinner/index.js.map +1 -0
- package/dist/utils/spinner/spinners.d.ts +7 -0
- package/dist/utils/spinner/spinners.js +16 -0
- package/dist/utils/spinner/spinners.js.map +1 -0
- package/dist/utils/spinner/spinners.json +119 -0
- package/dist/version/index.d.ts +1 -0
- package/dist/version/index.js +1 -0
- package/dist/version/index.js.map +1 -0
- package/package.json +61 -12
- package/dist/programs/vault-hub.js +0 -137
- package/dist/programs/vault-hub.js.map +0 -1
package/dist/providers/wallet.js
CHANGED
|
@@ -1,36 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const rpcUrl = _configs_1.envs?.[`RPC_URL_${chainId || process.env.CHAIN_ID}`];
|
|
9
|
-
const client = (0, viem_1.createWalletClient)({
|
|
10
|
-
chain: chainId,
|
|
11
|
-
transport: (0, viem_1.http)(rpcUrl),
|
|
12
|
-
});
|
|
13
|
-
return client;
|
|
14
|
-
};
|
|
15
|
-
exports.getWalletClient = getWalletClient;
|
|
16
|
-
const getAccount = (chainId) => {
|
|
17
|
-
const privateKey = _configs_1.envs?.[`PRIVATE_KEY_${chainId || process.env.CHAIN_ID}`];
|
|
1
|
+
import { createPublicClient, createWalletClient, http, } from 'viem';
|
|
2
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
+
import { envs, getConfig, getChainId, getElUrl, getChain } from '../configs/index.js';
|
|
4
|
+
export const getAccount = () => {
|
|
5
|
+
const config = getConfig();
|
|
6
|
+
const id = getChainId();
|
|
7
|
+
const privateKey = config?.PRIVATE_KEY ?? envs?.[`PRIVATE_KEY_${id}`];
|
|
18
8
|
if (!privateKey) {
|
|
19
|
-
throw new Error(`
|
|
9
|
+
throw new Error(`Private key for ${id} chain is not set`);
|
|
20
10
|
}
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
return privateKeyToAccount(privateKey);
|
|
12
|
+
};
|
|
13
|
+
export const getPublicClient = () => {
|
|
14
|
+
return createPublicClient({
|
|
15
|
+
chain: getChain(),
|
|
16
|
+
transport: http(getElUrl()),
|
|
17
|
+
});
|
|
23
18
|
};
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const account = (0, exports.getAccount)(chainId);
|
|
28
|
-
const client = (0, viem_1.createWalletClient)({
|
|
19
|
+
export const getWalletWithAccount = () => {
|
|
20
|
+
const account = getAccount();
|
|
21
|
+
return createWalletClient({
|
|
29
22
|
account,
|
|
30
|
-
chain:
|
|
31
|
-
transport:
|
|
23
|
+
chain: getChain(),
|
|
24
|
+
transport: http(getElUrl()),
|
|
32
25
|
});
|
|
33
|
-
return { client, account };
|
|
34
26
|
};
|
|
35
|
-
exports.getWalletWithAccount = getWalletWithAccount;
|
|
36
27
|
//# sourceMappingURL=wallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../providers/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../providers/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,GAEL,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,UAAU,GAAG,MAAM,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,mBAAmB,CAAC,UAAqB,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,OAAO,kBAAkB,CAAC;QACxB,KAAK,EAAE,QAAQ,EAAE;QACjB,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAiB,EAAE;IACrD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,OAAO,kBAAkB,CAAC;QACxB,OAAO;QACP,KAAK,EAAE,QAAQ,EAAE;QACjB,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Address, Hex } from 'viem';
|
|
2
|
+
export interface VaultWithDashboard {
|
|
3
|
+
defaultAdmin: Address;
|
|
4
|
+
nodeOperator: Address;
|
|
5
|
+
nodeOperatorManager: Address;
|
|
6
|
+
nodeOperatorFeeBP: bigint;
|
|
7
|
+
confirmExpiry: bigint;
|
|
8
|
+
}
|
|
9
|
+
export interface Permit {
|
|
10
|
+
value: bigint;
|
|
11
|
+
deadline: bigint;
|
|
12
|
+
v: number;
|
|
13
|
+
r: Address;
|
|
14
|
+
s: Address;
|
|
15
|
+
}
|
|
16
|
+
export interface RoleAssignment {
|
|
17
|
+
account: Address;
|
|
18
|
+
role: `0x${string}`;
|
|
19
|
+
}
|
|
20
|
+
export interface Tier {
|
|
21
|
+
shareLimit: bigint;
|
|
22
|
+
reserveRatioBP: bigint;
|
|
23
|
+
forcedRebalanceThresholdBP: bigint;
|
|
24
|
+
treasuryFeeBP: bigint;
|
|
25
|
+
}
|
|
26
|
+
export type Deposit = {
|
|
27
|
+
pubkey: Hex;
|
|
28
|
+
signature: Hex;
|
|
29
|
+
amount: bigint;
|
|
30
|
+
depositDataRoot: Hex;
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../types/common.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
export interface Config {
|
|
3
|
+
DEPLOYED: string;
|
|
4
|
+
EL_URL?: string;
|
|
5
|
+
CL_URL?: string;
|
|
6
|
+
PRIVATE_KEY?: string;
|
|
7
|
+
CHAIN_ID: number;
|
|
8
|
+
TOKEN_MANAGER?: Address;
|
|
9
|
+
VOTING?: Address;
|
|
10
|
+
}
|
|
11
|
+
export type Vote = readonly [
|
|
12
|
+
boolean,
|
|
13
|
+
boolean,
|
|
14
|
+
bigint,
|
|
15
|
+
bigint,
|
|
16
|
+
bigint,
|
|
17
|
+
bigint,
|
|
18
|
+
bigint,
|
|
19
|
+
bigint,
|
|
20
|
+
bigint,
|
|
21
|
+
`0x${string}`,
|
|
22
|
+
number
|
|
23
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../types/config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Permit, RoleAssignment, Tier, Deposit } from '../types/index.js';
|
|
2
|
+
import { Address } from 'viem';
|
|
3
|
+
export declare const stringToBigIntArray: (value: string) => bigint[];
|
|
4
|
+
export declare const stringToBigIntArrayWei: (value: string) => bigint[];
|
|
5
|
+
export declare const jsonToPermit: (value: string) => Permit;
|
|
6
|
+
export declare const jsonToRoleAssignment: (value: string) => RoleAssignment[];
|
|
7
|
+
export declare const stringToBigInt: (value: string) => bigint;
|
|
8
|
+
export declare const etherToWei: (value: string) => bigint;
|
|
9
|
+
export declare const stringToNumber: (value: string) => number;
|
|
10
|
+
export declare const parseTiers: (value: string) => Tier[];
|
|
11
|
+
export declare const parseTier: (value: string) => Tier;
|
|
12
|
+
export declare const parseDepositArray: (str: string) => Deposit[];
|
|
13
|
+
export declare const stringToAddress: (value: string) => Address;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { program } from 'commander';
|
|
2
|
+
import { isAddress, parseEther } from 'viem';
|
|
3
|
+
import { toHex } from './proof/merkle-utils.js';
|
|
4
|
+
const toCamelCase = (str) => str.replace(/_([a-z])/g, (_, char) => char.toUpperCase());
|
|
5
|
+
export const stringToBigIntArray = (value) => {
|
|
6
|
+
return value.split(',').map(BigInt);
|
|
7
|
+
};
|
|
8
|
+
export const stringToBigIntArrayWei = (value) => {
|
|
9
|
+
return value.split(',').map(etherToWei);
|
|
10
|
+
};
|
|
11
|
+
export const jsonToPermit = (value) => {
|
|
12
|
+
return JSON.parse(value);
|
|
13
|
+
};
|
|
14
|
+
export const jsonToRoleAssignment = (value) => {
|
|
15
|
+
return JSON.parse(value);
|
|
16
|
+
};
|
|
17
|
+
export const stringToBigInt = (value) => {
|
|
18
|
+
return BigInt(value);
|
|
19
|
+
};
|
|
20
|
+
export const etherToWei = (value) => {
|
|
21
|
+
return parseEther(value, 'wei');
|
|
22
|
+
};
|
|
23
|
+
export const stringToNumber = (value) => {
|
|
24
|
+
if (isNaN(Number(value)) || Number(value) < 0) {
|
|
25
|
+
program.error('value must be a positive number', { exitCode: 1 });
|
|
26
|
+
}
|
|
27
|
+
return parseInt(value);
|
|
28
|
+
};
|
|
29
|
+
export const parseTiers = (value) => {
|
|
30
|
+
return JSON.parse(value);
|
|
31
|
+
};
|
|
32
|
+
export const parseTier = (value) => {
|
|
33
|
+
return JSON.parse(value);
|
|
34
|
+
};
|
|
35
|
+
export const parseDepositArray = (str) => {
|
|
36
|
+
const trimmed = str.trim();
|
|
37
|
+
if (!trimmed) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
const parsed = JSON.parse('[' + trimmed + ']', (key, value) => {
|
|
41
|
+
if (key === '')
|
|
42
|
+
return value; // root array
|
|
43
|
+
if (key === 'amount')
|
|
44
|
+
return BigInt(value) * BigInt(10 ** 9); // to wei
|
|
45
|
+
if (typeof value === 'string') {
|
|
46
|
+
return toHex(value);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
});
|
|
50
|
+
// Convert keys to camelCase
|
|
51
|
+
const camelCased = parsed.map((obj) => {
|
|
52
|
+
const newObj = {};
|
|
53
|
+
for (const key in obj) {
|
|
54
|
+
const camelKey = toCamelCase(key);
|
|
55
|
+
newObj[camelKey] = obj[key];
|
|
56
|
+
}
|
|
57
|
+
return newObj;
|
|
58
|
+
});
|
|
59
|
+
return camelCased;
|
|
60
|
+
};
|
|
61
|
+
export const stringToAddress = (value) => {
|
|
62
|
+
if (!isAddress(value)) {
|
|
63
|
+
program.error('Address value must be a valid address', { exitCode: 1 });
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=arguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../utils/arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Hex } from 'viem';
|
|
2
|
+
type DepositStruct = {
|
|
3
|
+
pubkey: Hex;
|
|
4
|
+
signature: Hex;
|
|
5
|
+
amount: bigint;
|
|
6
|
+
depositDataRoot: Hex;
|
|
7
|
+
};
|
|
8
|
+
export declare const computeDepositDomainByForkVersion: (forkVersion: string) => Uint8Array<ArrayBufferLike>;
|
|
9
|
+
export declare const computeDepositDomain: () => Uint8Array<ArrayBufferLike>;
|
|
10
|
+
export declare const isValidBLSDeposit: (deposit: DepositStruct, withdrawalCredentials: Hex) => boolean;
|
|
11
|
+
export declare const expandBLSSignature: (signature: Hex, pubkey: Hex) => {
|
|
12
|
+
pubkey: `0x${string}`;
|
|
13
|
+
pubkeyY_a: `0x${string}`;
|
|
14
|
+
pubkeyY_b: `0x${string}`;
|
|
15
|
+
signature: `0x${string}`;
|
|
16
|
+
sigY_c0_a: `0x${string}`;
|
|
17
|
+
sigY_c0_b: `0x${string}`;
|
|
18
|
+
sigY_c1_a: `0x${string}`;
|
|
19
|
+
sigY_c1_b: `0x${string}`;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { pad, bytesToHex } from 'viem';
|
|
2
|
+
import { mainnet, sepolia, hoodi } from 'viem/chains';
|
|
3
|
+
import { fromHexString, ByteVectorType, ContainerType, UintNumberType, } from '@chainsafe/ssz';
|
|
4
|
+
import { PublicKey, Signature, verify } from '@chainsafe/blst';
|
|
5
|
+
import { toHex } from './proof/merkle-utils.js';
|
|
6
|
+
import { getChain } from '../configs/index.js';
|
|
7
|
+
const FORK_VERSION_BY_CHAIN = {
|
|
8
|
+
[sepolia.id]: '0x90000069', // https://github.com/eth-clients/sepolia
|
|
9
|
+
[hoodi.id]: '0x10000910', // https://github.com/eth-clients/hoodi
|
|
10
|
+
[mainnet.id]: '0x00000000', // https://github.com/eth-clients/mainnet
|
|
11
|
+
};
|
|
12
|
+
export const computeDepositDomainByForkVersion = (forkVersion) => {
|
|
13
|
+
const ZERO_HASH = Buffer.alloc(32, 0);
|
|
14
|
+
const DOMAIN_DEPOSIT = Uint8Array.from([3, 0, 0, 0]);
|
|
15
|
+
const forkVersionUint8Array = fromHexString(forkVersion);
|
|
16
|
+
const Root = new ByteVectorType(32);
|
|
17
|
+
const Bytes4 = new ByteVectorType(4);
|
|
18
|
+
const Version = Bytes4;
|
|
19
|
+
const ForkData = new ContainerType({
|
|
20
|
+
currentVersion: Version,
|
|
21
|
+
genesisValidatorsRoot: Root,
|
|
22
|
+
}, { typeName: 'ForkData', jsonCase: 'eth2' });
|
|
23
|
+
const computeDomain = (domainType, forkVersion, genesisValidatorRoot) => {
|
|
24
|
+
const forkDataRoot = computeForkDataRoot(forkVersion, genesisValidatorRoot);
|
|
25
|
+
const domain = new Uint8Array(32);
|
|
26
|
+
domain.set(domainType, 0);
|
|
27
|
+
domain.set(forkDataRoot.slice(0, 28), 4);
|
|
28
|
+
return domain;
|
|
29
|
+
};
|
|
30
|
+
const computeForkDataRoot = (currentVersion, genesisValidatorsRoot) => {
|
|
31
|
+
return ForkData.hashTreeRoot({ currentVersion, genesisValidatorsRoot });
|
|
32
|
+
};
|
|
33
|
+
return computeDomain(DOMAIN_DEPOSIT, forkVersionUint8Array, ZERO_HASH);
|
|
34
|
+
};
|
|
35
|
+
export const computeDepositDomain = () => {
|
|
36
|
+
const forkByChain = FORK_VERSION_BY_CHAIN[getChain().id];
|
|
37
|
+
if (!forkByChain) {
|
|
38
|
+
throw new Error(`Fork version not found for chain ${getChain().id}`);
|
|
39
|
+
}
|
|
40
|
+
return computeDepositDomainByForkVersion(forkByChain);
|
|
41
|
+
};
|
|
42
|
+
const computeDepositMessageRoot = (pubkey, withdrawalCredentials, amount) => {
|
|
43
|
+
const Bytes48 = new ByteVectorType(48);
|
|
44
|
+
const Bytes32 = new ByteVectorType(32);
|
|
45
|
+
const UintNum64 = new UintNumberType(8);
|
|
46
|
+
const Root = new ByteVectorType(32);
|
|
47
|
+
const Domain = Bytes32;
|
|
48
|
+
const BLSPubkey = Bytes48;
|
|
49
|
+
const DepositMessage = new ContainerType({ pubkey: BLSPubkey, withdrawalCredentials: Bytes32, amount: UintNum64 }, { typeName: 'DepositMessage', jsonCase: 'eth2' });
|
|
50
|
+
const SigningData = new ContainerType({
|
|
51
|
+
objectRoot: Root,
|
|
52
|
+
domain: Domain,
|
|
53
|
+
}, { typeName: 'SigningData', jsonCase: 'eth2' });
|
|
54
|
+
const depositMessage = {
|
|
55
|
+
pubkey: BLSPubkey.fromJson(toHex(pubkey)),
|
|
56
|
+
withdrawalCredentials: Bytes32.fromJson(toHex(withdrawalCredentials)),
|
|
57
|
+
amount: UintNum64.fromJson(amount / 1000000000n),
|
|
58
|
+
};
|
|
59
|
+
const domain = computeDepositDomain();
|
|
60
|
+
return SigningData.hashTreeRoot({
|
|
61
|
+
objectRoot: DepositMessage.hashTreeRoot(depositMessage),
|
|
62
|
+
domain,
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
export const isValidBLSDeposit = (deposit, withdrawalCredentials) => {
|
|
66
|
+
const signningRoot = computeDepositMessageRoot(deposit.pubkey, withdrawalCredentials, deposit.amount);
|
|
67
|
+
const isBLSValid = verify(signningRoot, PublicKey.fromHex(deposit.pubkey), Signature.fromHex(deposit.signature), true, true);
|
|
68
|
+
return isBLSValid;
|
|
69
|
+
};
|
|
70
|
+
export const expandBLSSignature = (signature, pubkey) => {
|
|
71
|
+
const pubkeyY = PublicKey.fromHex(pubkey).toBytes(false).slice(48);
|
|
72
|
+
// pad Y.a to 32 bytes to match Fp struct
|
|
73
|
+
const pubkeyY_a = bytesToHex(pad(pubkeyY.slice(0, 16), { dir: 'left', size: 32 }));
|
|
74
|
+
const pubkeyY_b = bytesToHex(pad(pubkeyY.slice(16), { dir: 'left', size: 32 }));
|
|
75
|
+
const signatureY = Signature.fromHex(signature).toBytes(false).slice(96);
|
|
76
|
+
// first Fp of Y coordinate is last 48 bytes of signature
|
|
77
|
+
const sigY_c0 = signatureY.slice(48);
|
|
78
|
+
const sigY_c0_a = bytesToHex(pad(sigY_c0.slice(0, 16), {
|
|
79
|
+
dir: 'left',
|
|
80
|
+
size: 32,
|
|
81
|
+
}));
|
|
82
|
+
const sigY_c0_b = bytesToHex(pad(sigY_c0.slice(16), { dir: 'left', size: 32 }));
|
|
83
|
+
// second Fp is 48 bytes before first one
|
|
84
|
+
const sigY_c1 = signatureY.slice(0, 48);
|
|
85
|
+
const sigY_c1_a = bytesToHex(pad(sigY_c1.slice(0, 16), {
|
|
86
|
+
dir: 'left',
|
|
87
|
+
size: 32,
|
|
88
|
+
}));
|
|
89
|
+
const sigY_c1_b = bytesToHex(pad(sigY_c1.slice(16), { dir: 'left', size: 32 }));
|
|
90
|
+
return {
|
|
91
|
+
pubkey,
|
|
92
|
+
pubkeyY_a,
|
|
93
|
+
pubkeyY_b,
|
|
94
|
+
signature,
|
|
95
|
+
sigY_c0_a,
|
|
96
|
+
sigY_c0_b,
|
|
97
|
+
sigY_c1_a,
|
|
98
|
+
sigY_c1_b,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=bls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bls.js","sourceRoot":"","sources":["../../utils/bls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const BASIS_POINTS_DENOMINATOR = 10000n;
|
|
2
|
+
export declare const formatBP: (bp: number | bigint) => string;
|
|
3
|
+
export declare const formatRatio: (r: number) => string;
|
|
4
|
+
export declare const calculateOverview: (totalValue: bigint, reserveRatioBP: number, liabilitySharesInStethWei: bigint, forceRebalanceThresholdBP: number, withdrawableEther: bigint, balance: bigint, locked: bigint, nodeOperatorUnclaimedFee: bigint, totalMintingCapacity: bigint) => {
|
|
5
|
+
healthRatio: number;
|
|
6
|
+
isHealthy: boolean;
|
|
7
|
+
AvailableToWithdrawal: bigint;
|
|
8
|
+
idleCapital: bigint;
|
|
9
|
+
depositedToValidators: bigint;
|
|
10
|
+
totalLocked: bigint;
|
|
11
|
+
lockedByAccumulatedFees: bigint;
|
|
12
|
+
collateral: bigint;
|
|
13
|
+
PendingUnlock: bigint;
|
|
14
|
+
utilizationRatio: number;
|
|
15
|
+
totalReservable: bigint;
|
|
16
|
+
reserved: bigint;
|
|
17
|
+
stethMintingCapacityUsed: number;
|
|
18
|
+
totalMintingCapacity: bigint;
|
|
19
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { parseEther } from 'viem';
|
|
2
|
+
import { calculateVaultHealth } from './health.js';
|
|
3
|
+
export const BASIS_POINTS_DENOMINATOR = 10000n;
|
|
4
|
+
const DECIMALS = 18n;
|
|
5
|
+
const SCALING_FACTOR = 10n ** DECIMALS;
|
|
6
|
+
const bigIntMax = (...args) => args.reduce((a, b) => (a > b ? a : b));
|
|
7
|
+
const bigIntMin = (...args) => args.reduce((a, b) => (a < b ? a : b));
|
|
8
|
+
// Percent helper (basis points → percentage)
|
|
9
|
+
export const formatBP = (bp) => `${((Number(bp) / Number(BASIS_POINTS_DENOMINATOR)) * 100).toFixed(2)}%`;
|
|
10
|
+
export const formatRatio = (r) => isFinite(r) ? `${r.toFixed(4)}%` : '∞';
|
|
11
|
+
export const calculateOverview = (totalValue, reserveRatioBP, liabilitySharesInStethWei, forceRebalanceThresholdBP, withdrawableEther, balance, locked, nodeOperatorUnclaimedFee, totalMintingCapacity) => {
|
|
12
|
+
const { healthRatio, isHealthy } = calculateVaultHealth(totalValue, liabilitySharesInStethWei, forceRebalanceThresholdBP);
|
|
13
|
+
const AvailableToWithdrawal = withdrawableEther;
|
|
14
|
+
const idleCapital = balance;
|
|
15
|
+
const depositedToValidators = totalValue - balance;
|
|
16
|
+
const totalLocked = locked + nodeOperatorUnclaimedFee;
|
|
17
|
+
const lockedByAccumulatedFees = nodeOperatorUnclaimedFee;
|
|
18
|
+
// ---------- Computed values ---------- //
|
|
19
|
+
const totalReservable = (totalValue * BigInt(reserveRatioBP)) / BASIS_POINTS_DENOMINATOR;
|
|
20
|
+
// Prevent division by 0
|
|
21
|
+
const stethMintingCapacityUsed = totalMintingCapacity === 0n
|
|
22
|
+
? 0n
|
|
23
|
+
: (liabilitySharesInStethWei * SCALING_FACTOR) / totalMintingCapacity;
|
|
24
|
+
const reservedRaw = totalMintingCapacity === 0n
|
|
25
|
+
? 0n
|
|
26
|
+
: (liabilitySharesInStethWei * totalReservable * SCALING_FACTOR) /
|
|
27
|
+
totalMintingCapacity;
|
|
28
|
+
const reserved = bigIntMax(bigIntMin(reservedRaw / SCALING_FACTOR, totalValue - liabilitySharesInStethWei), 0n);
|
|
29
|
+
const collateral = bigIntMax(liabilitySharesInStethWei + reserved, parseEther('1'));
|
|
30
|
+
const PendingUnlock = totalLocked - liabilitySharesInStethWei - reserved;
|
|
31
|
+
// Ratio helper
|
|
32
|
+
const utilizationRatio = liabilitySharesInStethWei === 0n
|
|
33
|
+
? Infinity
|
|
34
|
+
: (Number((liabilitySharesInStethWei * SCALING_FACTOR) /
|
|
35
|
+
(totalValue * (BASIS_POINTS_DENOMINATOR - BigInt(reserveRatioBP)))) /
|
|
36
|
+
Number(SCALING_FACTOR)) *
|
|
37
|
+
10_000;
|
|
38
|
+
return {
|
|
39
|
+
healthRatio,
|
|
40
|
+
isHealthy,
|
|
41
|
+
AvailableToWithdrawal,
|
|
42
|
+
idleCapital,
|
|
43
|
+
depositedToValidators,
|
|
44
|
+
totalLocked,
|
|
45
|
+
lockedByAccumulatedFees,
|
|
46
|
+
collateral,
|
|
47
|
+
PendingUnlock,
|
|
48
|
+
utilizationRatio,
|
|
49
|
+
totalReservable,
|
|
50
|
+
reserved,
|
|
51
|
+
stethMintingCapacityUsed: (Number(stethMintingCapacityUsed) / Number(SCALING_FACTOR)) * 100,
|
|
52
|
+
totalMintingCapacity,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=calculate-overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-overview.js","sourceRoot":"","sources":["../../utils/calculate-overview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
import { DashboardContract } from '../../contracts/index.js';
|
|
3
|
+
export declare const mintSteth: (contract: DashboardContract, recipient: Address, amountOfSteth: bigint) => Promise<void>;
|
|
4
|
+
export declare const mintShares: (contract: DashboardContract, recipient: Address, amountOfShares: bigint, method: "mintShares" | "mintStETH" | "mintWstETH") => Promise<void>;
|
|
5
|
+
export declare const burnSteth: (contract: DashboardContract, amountOfSteth: bigint) => Promise<void>;
|
|
6
|
+
export declare const burnShares: (contract: DashboardContract, amountOfShares: bigint, method: "burnShares" | "burnStETH" | "burnWstETH") => Promise<void>;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { callWriteMethodWithReceipt, confirmBurn, confirmOperation, getRequiredLockByShares, } from '../index.js';
|
|
2
|
+
import { formatEther } from 'viem';
|
|
3
|
+
import { getDashboardContract, getStethContract, } from '../../contracts/index.js';
|
|
4
|
+
import { callReadMethodSilent, fetchAndCalculateVaultHealthWithNewValue, logError, showSpinner, confirmMint, logInfo, } from '../index.js';
|
|
5
|
+
import { getAccount } from '../../providers/index.js';
|
|
6
|
+
const confirmLock = async (amountOfSharesWei, dashboardAddress) => {
|
|
7
|
+
const contract = getDashboardContract(dashboardAddress);
|
|
8
|
+
const { requiredLock, currentLock } = await getRequiredLockByShares(dashboardAddress, formatEther(amountOfSharesWei));
|
|
9
|
+
const currentWallet = getAccount();
|
|
10
|
+
const LOCK_ROLE = await callReadMethodSilent(contract, 'LOCK_ROLE');
|
|
11
|
+
const currentLockRoles = await callReadMethodSilent(contract, 'getRoleMembers', [LOCK_ROLE]);
|
|
12
|
+
const isLockRole = currentLockRoles.includes(currentWallet.address);
|
|
13
|
+
if (requiredLock > currentLock) {
|
|
14
|
+
logInfo(`Required lock: ${formatEther(requiredLock)} shares, current lock: ${formatEther(currentLock)} shares.
|
|
15
|
+
Auto-lock will be applied to enable minting the required number of shares. LOCK_ROLE is required.`);
|
|
16
|
+
if (!isLockRole) {
|
|
17
|
+
logError("You don't have a LOCK_ROLE. Please add yourself to the LOCK_ROLE.");
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const confirm = await confirmOperation('Do you want to continue?');
|
|
21
|
+
if (!confirm)
|
|
22
|
+
return confirm;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
};
|
|
26
|
+
export const mintSteth = async (contract, recipient, amountOfSteth) => {
|
|
27
|
+
const stethContract = await getStethContract();
|
|
28
|
+
const amountOfShares = await callReadMethodSilent(stethContract, 'getSharesByPooledEth', [amountOfSteth]);
|
|
29
|
+
await mintShares(contract, recipient, amountOfShares, 'mintStETH');
|
|
30
|
+
};
|
|
31
|
+
export const mintShares = async (contract, recipient, amountOfShares, method) => {
|
|
32
|
+
const type = method === 'mintShares'
|
|
33
|
+
? 'shares'
|
|
34
|
+
: method === 'mintStETH'
|
|
35
|
+
? 'stETH'
|
|
36
|
+
: 'wstETH';
|
|
37
|
+
const remainingMintingCapacity = await callReadMethodSilent(contract, 'remainingMintingCapacity', [0n]);
|
|
38
|
+
if (remainingMintingCapacity < amountOfShares) {
|
|
39
|
+
logError(`Cannot mint more shares than the vault can mint. Mintable: ${remainingMintingCapacity}`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const isConfirmedLock = await confirmLock(amountOfShares, contract.address);
|
|
43
|
+
if (!isConfirmedLock)
|
|
44
|
+
return;
|
|
45
|
+
const hideSpinner = showSpinner();
|
|
46
|
+
const { currentVaultHealth, newVaultHealth, newLiabilityShares, liabilityShares, valueInStethWei, } = await fetchAndCalculateVaultHealthWithNewValue(contract, amountOfShares, 'mint');
|
|
47
|
+
const vault = await callReadMethodSilent(contract, 'stakingVault');
|
|
48
|
+
hideSpinner();
|
|
49
|
+
const confirm = await confirmMint({
|
|
50
|
+
vaultAddress: vault,
|
|
51
|
+
recipient,
|
|
52
|
+
amountOfMint: amountOfShares,
|
|
53
|
+
amountOfMintInStethWei: valueInStethWei,
|
|
54
|
+
newLiabilityShares: newLiabilityShares,
|
|
55
|
+
currentLiabilityShares: liabilityShares,
|
|
56
|
+
newHealthRatio: newVaultHealth.healthRatio,
|
|
57
|
+
currentHealthRatio: currentVaultHealth.healthRatio,
|
|
58
|
+
newIsHealthy: newVaultHealth.isHealthy,
|
|
59
|
+
currentIsHealthy: currentVaultHealth.isHealthy,
|
|
60
|
+
type,
|
|
61
|
+
});
|
|
62
|
+
if (!confirm)
|
|
63
|
+
return;
|
|
64
|
+
await callWriteMethodWithReceipt(contract, method, [
|
|
65
|
+
recipient,
|
|
66
|
+
amountOfShares,
|
|
67
|
+
]);
|
|
68
|
+
};
|
|
69
|
+
export const burnSteth = async (contract, amountOfSteth) => {
|
|
70
|
+
const stethContract = await getStethContract();
|
|
71
|
+
const amountOfShares = await callReadMethodSilent(stethContract, 'getSharesByPooledEth', [amountOfSteth]);
|
|
72
|
+
await burnShares(contract, amountOfShares, 'burnStETH');
|
|
73
|
+
};
|
|
74
|
+
export const burnShares = async (contract, amountOfShares, method) => {
|
|
75
|
+
const type = method === 'burnShares'
|
|
76
|
+
? 'shares'
|
|
77
|
+
: method === 'burnStETH'
|
|
78
|
+
? 'stETH'
|
|
79
|
+
: 'wstETH';
|
|
80
|
+
const liabilityShares = await callReadMethodSilent(contract, 'liabilityShares');
|
|
81
|
+
if (amountOfShares > liabilityShares) {
|
|
82
|
+
logError('Cannot burn more shares than the vault has');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const { currentVaultHealth, newVaultHealth, newLiabilityShares, valueInStethWei, } = await fetchAndCalculateVaultHealthWithNewValue(contract, amountOfShares, 'burn');
|
|
86
|
+
const vault = await callReadMethodSilent(contract, 'stakingVault');
|
|
87
|
+
const confirm = await confirmBurn({
|
|
88
|
+
vaultAddress: vault,
|
|
89
|
+
amountOfBurn: amountOfShares,
|
|
90
|
+
amountOfBurnInStethWei: valueInStethWei,
|
|
91
|
+
newLiabilityShares: newLiabilityShares,
|
|
92
|
+
currentLiabilityShares: liabilityShares,
|
|
93
|
+
newHealthRatio: newVaultHealth.healthRatio,
|
|
94
|
+
currentHealthRatio: currentVaultHealth.healthRatio,
|
|
95
|
+
newIsHealthy: newVaultHealth.isHealthy,
|
|
96
|
+
currentIsHealthy: currentVaultHealth.isHealthy,
|
|
97
|
+
type,
|
|
98
|
+
});
|
|
99
|
+
if (!confirm)
|
|
100
|
+
return;
|
|
101
|
+
await callWriteMethodWithReceipt(contract, method, [amountOfShares]);
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../utils/commands/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dashboard.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Address, SimulateContractReturnType, TransactionReceipt } from 'viem';
|
|
2
|
+
export type ReadContract = {
|
|
3
|
+
address: Address;
|
|
4
|
+
read: Record<string, (...args: any[]) => Promise<any>>;
|
|
5
|
+
};
|
|
6
|
+
export type PartialContract = ReadContract & {
|
|
7
|
+
simulate: Record<string, (...args: any[]) => Promise<any>>;
|
|
8
|
+
write: Record<string, (...args: any[]) => Promise<any>>;
|
|
9
|
+
};
|
|
10
|
+
type Writeable<T> = {
|
|
11
|
+
-readonly [P in keyof T]: T[P];
|
|
12
|
+
};
|
|
13
|
+
type GetFirst<T extends unknown[]> = T extends [infer First, infer _Second] ? First : T extends any ? [] : T;
|
|
14
|
+
export declare const callSimulateWriteMethod: <T extends PartialContract, M extends keyof T["simulate"] & string>(contract: T, methodName: M, payload: Writeable<GetFirst<Parameters<T["simulate"][M]>>> | never[], value?: bigint) => Promise<SimulateContractReturnType>;
|
|
15
|
+
export declare const callWriteMethod: <T extends PartialContract, M extends keyof T["write"] & string>(contract: T, methodName: M, payload: Writeable<GetFirst<Parameters<T["write"][M]>>> | never[], value?: bigint) => Promise<Address>;
|
|
16
|
+
export declare const callReadMethod: <T extends ReadContract, M extends keyof T["read"] & string>(contract: T, methodName: M, ...payload: [...Parameters<T["read"][M]>, {
|
|
17
|
+
silent?: boolean;
|
|
18
|
+
}?]) => Promise<ReturnType<T["read"][M]>>;
|
|
19
|
+
export declare const callReadMethodSilent: <T extends ReadContract, M extends keyof T["read"] & string>(contract: T, methodName: M, ...payload: Parameters<T["read"][M]>) => Promise<ReturnType<T["read"][M]>>;
|
|
20
|
+
export declare const isContractAddress: (address: Address) => Promise<boolean>;
|
|
21
|
+
export declare const callWriteMethodWithReceipt: <T extends PartialContract, M extends keyof T["write"] & string>(contract: T, methodName: M, payload: Writeable<GetFirst<Parameters<T["write"][M]>>> | never[], value?: bigint) => Promise<{
|
|
22
|
+
receipt: TransactionReceipt;
|
|
23
|
+
tx: Address;
|
|
24
|
+
}>;
|
|
25
|
+
export {};
|