@lidofinance/lsv-cli 1.0.0-alpha.3 → 1.0.0-alpha.30
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 +18 -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 +1 -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
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { getStethContract } from '../contracts/index.js';
|
|
2
|
+
import { formatEther } from 'viem';
|
|
3
|
+
import { callReadMethodSilent } from './contract.js';
|
|
4
|
+
/*
|
|
5
|
+
Fetch vault metrics from the contract
|
|
6
|
+
*/
|
|
7
|
+
export const fetchVaultMetrics = async (contract) => {
|
|
8
|
+
const stethContract = await getStethContract();
|
|
9
|
+
const [totalValue, liabilityShares, forceRebalanceThresholdBP] = await Promise.all([
|
|
10
|
+
callReadMethodSilent(contract, 'totalValue'), // BigInt, in wei
|
|
11
|
+
callReadMethodSilent(contract, 'liabilityShares'), // BigInt, in shares
|
|
12
|
+
callReadMethodSilent(contract, 'forcedRebalanceThresholdBP'), // number (in basis points)
|
|
13
|
+
]);
|
|
14
|
+
const liabilitySharesInStethWei = await callReadMethodSilent(stethContract, 'getPooledEthByShares', [liabilityShares]); // BigInt
|
|
15
|
+
return {
|
|
16
|
+
totalValue,
|
|
17
|
+
liabilityShares,
|
|
18
|
+
forceRebalanceThresholdBP,
|
|
19
|
+
liabilitySharesInStethWei,
|
|
20
|
+
stethContract,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export const calculateVaultHealth = (totalValue, liabilitySharesInStethWei, forceRebalanceThresholdBP) => {
|
|
24
|
+
// Convert everything to BigInt and perform calculations with 1e18 precision
|
|
25
|
+
const BASIS_POINTS_DENOMINATOR = 10000n;
|
|
26
|
+
const PRECISION = 10n ** 18n;
|
|
27
|
+
const thresholdMultiplier = ((BASIS_POINTS_DENOMINATOR - BigInt(forceRebalanceThresholdBP)) *
|
|
28
|
+
PRECISION) /
|
|
29
|
+
BASIS_POINTS_DENOMINATOR;
|
|
30
|
+
const adjustedValuation = (totalValue * thresholdMultiplier) / PRECISION;
|
|
31
|
+
const healthRatio18 = liabilitySharesInStethWei > 0n
|
|
32
|
+
? (adjustedValuation * PRECISION * 100n) / liabilitySharesInStethWei
|
|
33
|
+
: Infinity;
|
|
34
|
+
const healthRatio = Number(healthRatio18) / 1e18;
|
|
35
|
+
// Convert to readable format
|
|
36
|
+
const isHealthy = healthRatio >= 100;
|
|
37
|
+
return {
|
|
38
|
+
healthRatio,
|
|
39
|
+
healthRatio18,
|
|
40
|
+
isHealthy,
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export const fetchAndCalculateVaultHealth = async (contract) => {
|
|
44
|
+
const { totalValue, forceRebalanceThresholdBP, liabilitySharesInStethWei, liabilityShares, } = await fetchVaultMetrics(contract);
|
|
45
|
+
const { healthRatio, isHealthy } = calculateVaultHealth(totalValue, liabilitySharesInStethWei, forceRebalanceThresholdBP);
|
|
46
|
+
return {
|
|
47
|
+
healthRatio,
|
|
48
|
+
isHealthy,
|
|
49
|
+
totalValue,
|
|
50
|
+
totalValueInEth: `${formatEther(totalValue)} ETH`,
|
|
51
|
+
liabilitySharesInStethWei,
|
|
52
|
+
liabilitySharesInSteth: `${formatEther(liabilitySharesInStethWei)} stETH`,
|
|
53
|
+
forceRebalanceThresholdBP,
|
|
54
|
+
liabilitySharesInWei: liabilityShares,
|
|
55
|
+
liabilityShares: `${formatEther(liabilityShares)} Shares`,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export const fetchAndCalculateVaultHealthWithNewValue = async (contract, value, type) => {
|
|
59
|
+
const { totalValue, forceRebalanceThresholdBP, liabilitySharesInStethWei, stethContract, liabilityShares, } = await fetchVaultMetrics(contract);
|
|
60
|
+
const isMinting = type === 'mint';
|
|
61
|
+
const newLiabilityShares = isMinting
|
|
62
|
+
? liabilityShares + value
|
|
63
|
+
: liabilityShares - value;
|
|
64
|
+
const [newLiabilitySharesInStethWei, valueInStethWei] = await Promise.all([
|
|
65
|
+
callReadMethodSilent(stethContract, 'getPooledEthByShares', [
|
|
66
|
+
newLiabilityShares,
|
|
67
|
+
]),
|
|
68
|
+
callReadMethodSilent(stethContract, 'getPooledEthByShares', [value]),
|
|
69
|
+
]);
|
|
70
|
+
const currentVaultHealth = calculateVaultHealth(totalValue, liabilitySharesInStethWei, forceRebalanceThresholdBP);
|
|
71
|
+
const newVaultHealth = calculateVaultHealth(totalValue, newLiabilitySharesInStethWei, forceRebalanceThresholdBP);
|
|
72
|
+
return {
|
|
73
|
+
currentVaultHealth,
|
|
74
|
+
newVaultHealth,
|
|
75
|
+
totalValue,
|
|
76
|
+
liabilitySharesInStethWei,
|
|
77
|
+
forceRebalanceThresholdBP,
|
|
78
|
+
liabilityShares,
|
|
79
|
+
newLiabilityShares,
|
|
80
|
+
newLiabilitySharesInStethWei,
|
|
81
|
+
valueInStethWei,
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../utils/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './get-value.js';
|
|
2
|
+
export * from './data-validators.js';
|
|
3
|
+
export * from './resolve-path.js';
|
|
4
|
+
export * from './sleep.js';
|
|
5
|
+
export * from './error-handler.js';
|
|
6
|
+
export * from './contract.js';
|
|
7
|
+
export * from './proof/index.js';
|
|
8
|
+
export * from './prompts/index.js';
|
|
9
|
+
export * from './spinner/index.js';
|
|
10
|
+
export * from './read-programs-by-abi.js';
|
|
11
|
+
export * from './get-commands.js';
|
|
12
|
+
export * from './get-deposit-data-root.js';
|
|
13
|
+
export * from './arguments.js';
|
|
14
|
+
export * from './report.js';
|
|
15
|
+
export * from './health.js';
|
|
16
|
+
export * from './logging/index.js';
|
|
17
|
+
export * from './fetchCL.js';
|
|
18
|
+
export * from './ipfs.js';
|
|
19
|
+
export * from './commands/index.js';
|
|
20
|
+
export * from './bls.js';
|
|
21
|
+
export * from './required-lock.js';
|
|
22
|
+
export * from './calculate-overview.js';
|
package/dist/utils/index.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
export * from './get-value.js';
|
|
2
|
+
export * from './data-validators.js';
|
|
3
|
+
export * from './resolve-path.js';
|
|
4
|
+
export * from './sleep.js';
|
|
5
|
+
export * from './error-handler.js';
|
|
6
|
+
export * from './contract.js';
|
|
7
|
+
export * from './proof/index.js';
|
|
8
|
+
export * from './prompts/index.js';
|
|
9
|
+
export * from './spinner/index.js';
|
|
10
|
+
export * from './read-programs-by-abi.js';
|
|
11
|
+
export * from './get-commands.js';
|
|
12
|
+
export * from './get-deposit-data-root.js';
|
|
13
|
+
export * from './arguments.js';
|
|
14
|
+
export * from './report.js';
|
|
15
|
+
export * from './health.js';
|
|
16
|
+
export * from './logging/index.js';
|
|
17
|
+
export * from './fetchCL.js';
|
|
18
|
+
export * from './ipfs.js';
|
|
19
|
+
export * from './commands/index.js';
|
|
20
|
+
export * from './bls.js';
|
|
21
|
+
export * from './required-lock.js';
|
|
22
|
+
export * from './calculate-overview.js';
|
|
18
23
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CID } from 'multiformats/cid';
|
|
2
|
+
export declare const IPFS_GATEWAY = "https://ipfs.io/ipfs";
|
|
3
|
+
export declare const fetchIPFS: (CID: string, url?: string) => Promise<any>;
|
|
4
|
+
export declare const fetchIPFSBuffer: (cid: string, gateway?: string) => Promise<Uint8Array>;
|
|
5
|
+
export declare const calculateIPFSAddCID: (fileContent: Uint8Array) => Promise<CID>;
|
|
6
|
+
export declare const fetchAndVerifyFile: (cid: string, gateway?: string) => Promise<Uint8Array>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CID } from 'multiformats/cid';
|
|
2
|
+
import { MemoryBlockstore } from 'blockstore-core';
|
|
3
|
+
import { importer } from 'ipfs-unixfs-importer';
|
|
4
|
+
import { logInfo, logResult } from './logging/console.js';
|
|
5
|
+
export const IPFS_GATEWAY = 'https://ipfs.io/ipfs';
|
|
6
|
+
// Fetching content by CID through IPFS gateway
|
|
7
|
+
export const fetchIPFS = async (CID, url = IPFS_GATEWAY) => {
|
|
8
|
+
const ipfsUrl = `${url}/${CID}`;
|
|
9
|
+
logInfo('Fetching content from', ipfsUrl);
|
|
10
|
+
const response = await fetch(ipfsUrl);
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
throw new Error(`Failed to fetch IPFS content: ${response.statusText}`);
|
|
13
|
+
}
|
|
14
|
+
return response.json();
|
|
15
|
+
};
|
|
16
|
+
// Fetching buffer content by CID through IPFS gateway
|
|
17
|
+
export const fetchIPFSBuffer = async (cid, gateway = IPFS_GATEWAY) => {
|
|
18
|
+
const response = await fetch(`${gateway}/${cid}`);
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
throw new Error(`Failed to fetch content: ${response.statusText}`);
|
|
21
|
+
}
|
|
22
|
+
const buffer = await response.arrayBuffer();
|
|
23
|
+
return new Uint8Array(buffer);
|
|
24
|
+
};
|
|
25
|
+
// Recalculate CID using full UnixFS logic (like `ipfs add`)
|
|
26
|
+
export const calculateIPFSAddCID = async (fileContent) => {
|
|
27
|
+
const blockstore = new MemoryBlockstore();
|
|
28
|
+
const entries = importer([{ content: fileContent }], blockstore, {
|
|
29
|
+
cidVersion: 0,
|
|
30
|
+
rawLeaves: false, // important! otherwise CID will be v1
|
|
31
|
+
});
|
|
32
|
+
let lastCid = null;
|
|
33
|
+
for await (const entry of entries) {
|
|
34
|
+
lastCid = entry.cid;
|
|
35
|
+
}
|
|
36
|
+
if (!lastCid) {
|
|
37
|
+
throw new Error('CID calculation failed — no entries found');
|
|
38
|
+
}
|
|
39
|
+
return lastCid;
|
|
40
|
+
};
|
|
41
|
+
// Downloading file from IPFS and checking its integrity
|
|
42
|
+
export const fetchAndVerifyFile = async (cid, gateway = IPFS_GATEWAY) => {
|
|
43
|
+
const originalCID = CID.parse(cid);
|
|
44
|
+
const fileContent = await fetchIPFSBuffer(cid, gateway);
|
|
45
|
+
const calculatedCID = await calculateIPFSAddCID(fileContent);
|
|
46
|
+
logInfo('Original CID: ', originalCID.toString());
|
|
47
|
+
logInfo('Calculated CID:', calculatedCID.toString());
|
|
48
|
+
if (!calculatedCID.equals(originalCID)) {
|
|
49
|
+
throw new Error(`❌ CID mismatch! Expected ${originalCID}, but got ${calculatedCID}`);
|
|
50
|
+
}
|
|
51
|
+
logResult('✅ CID verified, file matches IPFS hash');
|
|
52
|
+
return fileContent;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=ipfs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../utils/ipfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HeadMessage } from './constants.js';
|
|
2
|
+
export declare const createConsole: (headMessage: HeadMessage, type?: "info" | "error" | "table" | "bold") => <T, U>(...args: T[] | U[]) => void;
|
|
3
|
+
export declare const logInfo: <T, U>(...args: T[] | U[]) => void;
|
|
4
|
+
export declare const logError: <T, U>(...args: T[] | U[]) => void;
|
|
5
|
+
export declare const logResult: <T, U>(...args: T[] | U[]) => void;
|
|
6
|
+
export declare const logBold: <T, U>(...args: T[] | U[]) => void;
|
|
7
|
+
export declare const logCancel: <T, U>(...args: T[] | U[]) => void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getColoredLog } from './constants.js';
|
|
2
|
+
export const createConsole = (headMessage, type = 'info') => {
|
|
3
|
+
return (...args) => {
|
|
4
|
+
switch (type) {
|
|
5
|
+
case 'table':
|
|
6
|
+
console.info(`${getColoredLog(headMessage, headMessage + ':')}`);
|
|
7
|
+
console.table(...args);
|
|
8
|
+
break;
|
|
9
|
+
case 'bold':
|
|
10
|
+
console.info(getColoredLog(headMessage, args));
|
|
11
|
+
break;
|
|
12
|
+
default:
|
|
13
|
+
// eslint-disable-next-line no-console
|
|
14
|
+
console[type](`${getColoredLog(headMessage, headMessage + ':')}`, ...args);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export const logInfo = createConsole('LOG');
|
|
19
|
+
export const logError = createConsole('Error', 'error');
|
|
20
|
+
export const logResult = createConsole('Result', 'table');
|
|
21
|
+
export const logBold = createConsole('Bold', 'bold');
|
|
22
|
+
export const logCancel = createConsole('Cancel');
|
|
23
|
+
//# sourceMappingURL=console.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../../utils/logging/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,WAAwB,EACxB,OAA4C,MAAM,EAClD,EAAE;IACF,OAAO,CAAO,GAAG,IAAe,EAAE,EAAE;QAClC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/C,MAAM;YACR;gBACE,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,CACX,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,EAAE,EAClD,GAAG,IAAI,CACR,CAAC;QACN,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
const ConsoleCss = {
|
|
3
|
+
Error: chalk.red.bold,
|
|
4
|
+
LOG: chalk.blue.bold,
|
|
5
|
+
Result: chalk.green.bold,
|
|
6
|
+
Bold: chalk.bold,
|
|
7
|
+
Cancel: chalk.yellow.bold,
|
|
8
|
+
};
|
|
9
|
+
export const getColoredLog = (type, message) => {
|
|
10
|
+
return ConsoleCss[type](message);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../utils/logging/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI;IACrB,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;IACpB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;IACxB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,IAAiB,EAAE,OAAU,EAAE,EAAE;IAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './console.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/logging/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
type ConfirmMintProps = {
|
|
3
|
+
vaultAddress: Address;
|
|
4
|
+
recipient: Address;
|
|
5
|
+
amountOfMint: bigint;
|
|
6
|
+
amountOfMintInStethWei: bigint;
|
|
7
|
+
newLiabilityShares: bigint;
|
|
8
|
+
currentLiabilityShares: bigint;
|
|
9
|
+
newHealthRatio: number;
|
|
10
|
+
currentHealthRatio: number;
|
|
11
|
+
newIsHealthy: boolean;
|
|
12
|
+
currentIsHealthy: boolean;
|
|
13
|
+
type: 'shares' | 'stETH' | 'wstETH';
|
|
14
|
+
};
|
|
15
|
+
type ConfirmBurnProps = {
|
|
16
|
+
vaultAddress: Address;
|
|
17
|
+
amountOfBurn: bigint;
|
|
18
|
+
amountOfBurnInStethWei: bigint;
|
|
19
|
+
newLiabilityShares: bigint;
|
|
20
|
+
currentLiabilityShares: bigint;
|
|
21
|
+
newHealthRatio: number;
|
|
22
|
+
currentHealthRatio: number;
|
|
23
|
+
newIsHealthy: boolean;
|
|
24
|
+
currentIsHealthy: boolean;
|
|
25
|
+
type: 'shares' | 'stETH' | 'wstETH';
|
|
26
|
+
};
|
|
27
|
+
export declare const confirmMint: (props: ConfirmMintProps) => Promise<boolean>;
|
|
28
|
+
export declare const confirmBurn: (props: ConfirmBurnProps) => Promise<boolean>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { formatEther } from 'viem';
|
|
2
|
+
import { confirmOperation, logInfo } from '../index.js';
|
|
3
|
+
export const confirmMint = async (props) => {
|
|
4
|
+
const { vaultAddress, recipient, amountOfMint, amountOfMintInStethWei, newLiabilityShares, currentLiabilityShares, newHealthRatio, currentHealthRatio, newIsHealthy, currentIsHealthy, type, } = props;
|
|
5
|
+
const amountOfMintInShares = formatEther(amountOfMint);
|
|
6
|
+
const amountOfMintInSteth = formatEther(amountOfMintInStethWei);
|
|
7
|
+
const isShares = type === 'shares';
|
|
8
|
+
const isWsteth = type === 'wstETH';
|
|
9
|
+
const value = isShares || isWsteth ? amountOfMintInShares : amountOfMintInSteth;
|
|
10
|
+
logInfo(`Current vault ${vaultAddress} health:`);
|
|
11
|
+
console.table([
|
|
12
|
+
{
|
|
13
|
+
'Vault Address': vaultAddress,
|
|
14
|
+
'Current Liability Shares (wei)': currentLiabilityShares,
|
|
15
|
+
'Current Liability Shares (Shares)': formatEther(currentLiabilityShares),
|
|
16
|
+
'Current Health Ratio': `${currentHealthRatio}%`,
|
|
17
|
+
'Current Is Healthy': currentIsHealthy,
|
|
18
|
+
},
|
|
19
|
+
]);
|
|
20
|
+
logInfo(`Minting ${value} ${type} to ${recipient}:`);
|
|
21
|
+
console.table([
|
|
22
|
+
{
|
|
23
|
+
'Vault Address': vaultAddress,
|
|
24
|
+
'New Liability Shares (wei)': newLiabilityShares,
|
|
25
|
+
'New Liability Shares (Shares)': formatEther(newLiabilityShares),
|
|
26
|
+
'New Health Ratio': `${newHealthRatio}%`,
|
|
27
|
+
'New Is Healthy': newIsHealthy,
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
const confirm = await confirmOperation(`Are you sure you want to mint ${value} ${type} to ${recipient}?`);
|
|
31
|
+
return confirm;
|
|
32
|
+
};
|
|
33
|
+
export const confirmBurn = async (props) => {
|
|
34
|
+
const { vaultAddress, amountOfBurn, amountOfBurnInStethWei, newLiabilityShares, currentLiabilityShares, newHealthRatio, currentHealthRatio, newIsHealthy, currentIsHealthy, type, } = props;
|
|
35
|
+
const amountOfBurnInShares = formatEther(amountOfBurn);
|
|
36
|
+
const amountOfBurnInSteth = formatEther(amountOfBurnInStethWei);
|
|
37
|
+
const isShares = type === 'shares';
|
|
38
|
+
const isWsteth = type === 'wstETH';
|
|
39
|
+
const value = isShares || isWsteth ? amountOfBurnInShares : amountOfBurnInSteth;
|
|
40
|
+
logInfo(`Current vault ${vaultAddress} health:`);
|
|
41
|
+
console.table([
|
|
42
|
+
{
|
|
43
|
+
'Vault Address': vaultAddress,
|
|
44
|
+
'Current Liability Shares (wei)': currentLiabilityShares,
|
|
45
|
+
'Current Liability Shares (Shares)': formatEther(currentLiabilityShares),
|
|
46
|
+
'Current Health Ratio': `${currentHealthRatio}%`,
|
|
47
|
+
'Current Is Healthy': currentIsHealthy,
|
|
48
|
+
},
|
|
49
|
+
]);
|
|
50
|
+
logInfo(`Burning ${value} ${type} for ${vaultAddress}:`);
|
|
51
|
+
console.table([
|
|
52
|
+
{
|
|
53
|
+
'Vault Address': vaultAddress,
|
|
54
|
+
'New Liability Shares (wei)': newLiabilityShares,
|
|
55
|
+
'New Liability Shares (Shares)': formatEther(newLiabilityShares),
|
|
56
|
+
'New Health Ratio': `${newHealthRatio}%`,
|
|
57
|
+
'New Is Healthy': newIsHealthy,
|
|
58
|
+
},
|
|
59
|
+
]);
|
|
60
|
+
const confirm = await confirmOperation(`Are you sure you want to burn ${value} ${type} for ${vaultAddress}?`);
|
|
61
|
+
return confirm;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../utils/prompts/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import prompts from 'prompts';
|
|
2
|
+
export const textPrompt = (message, name) => {
|
|
3
|
+
return prompts({
|
|
4
|
+
type: 'text',
|
|
5
|
+
name,
|
|
6
|
+
message,
|
|
7
|
+
});
|
|
8
|
+
};
|
|
9
|
+
export const confirmPrompt = (message, name) => {
|
|
10
|
+
return prompts({
|
|
11
|
+
type: 'confirm',
|
|
12
|
+
name,
|
|
13
|
+
message,
|
|
14
|
+
initial: false,
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../utils/prompts/default.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,OAAe,EACf,IAAO,EACsB,EAAE;IAC/B,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAe,EACf,IAAO,EACsB,EAAE;IAC/B,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,SAAS;QACf,IAAI;QACJ,OAAO;QACP,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/prompts/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Address } from 'viem';
|
|
2
|
+
export declare const enterContractAddress: (name?: string) => Promise<import("prompts").Answers<"address">>;
|
|
3
|
+
export declare const confirmContractAndAmount: (contract: Address, amountETH: string) => Promise<import("prompts").Answers<"confirm">>;
|
|
4
|
+
export declare const enterAmountETH: () => Promise<import("prompts").Answers<"amountETH">>;
|
|
5
|
+
export declare const confirmFund: (address: Address, amountETH: string, name: string) => Promise<{
|
|
6
|
+
address: `0x${string}`;
|
|
7
|
+
amount: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const confirmOperation: (message: string) => Promise<boolean>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { program } from 'commander';
|
|
2
|
+
import { logCancel } from '../index.js';
|
|
3
|
+
import { textPrompt, confirmPrompt } from './default.js';
|
|
4
|
+
export const enterContractAddress = async (name = 'contract') => {
|
|
5
|
+
return await textPrompt(`Enter ${name} address`, 'address');
|
|
6
|
+
};
|
|
7
|
+
export const confirmContractAndAmount = async (contract, amountETH) => {
|
|
8
|
+
return await confirmPrompt(`Do you want to fund the contract ${contract} with ${amountETH} ETH?`, 'confirm');
|
|
9
|
+
};
|
|
10
|
+
export const enterAmountETH = async () => {
|
|
11
|
+
return await textPrompt('Enter amount in ETH', 'amountETH');
|
|
12
|
+
};
|
|
13
|
+
export const confirmFund = async (address, amountETH, name) => {
|
|
14
|
+
let contractAddress = address;
|
|
15
|
+
let amount = amountETH;
|
|
16
|
+
if (!contractAddress) {
|
|
17
|
+
const answerAddress = await enterContractAddress(name);
|
|
18
|
+
contractAddress = answerAddress.address;
|
|
19
|
+
if (!contractAddress)
|
|
20
|
+
program.error('Command cancelled', { exitCode: 1 });
|
|
21
|
+
}
|
|
22
|
+
if (!amount) {
|
|
23
|
+
const answerAmount = await enterAmountETH();
|
|
24
|
+
amount = answerAmount.amountETH;
|
|
25
|
+
if (!amount)
|
|
26
|
+
program.error('Command cancelled', { exitCode: 1 });
|
|
27
|
+
}
|
|
28
|
+
const { confirm } = await confirmContractAndAmount(contractAddress, amount);
|
|
29
|
+
if (!confirm)
|
|
30
|
+
program.error('Command cancelled', { exitCode: 1 });
|
|
31
|
+
return { address: contractAddress, amount: amount };
|
|
32
|
+
};
|
|
33
|
+
export const confirmOperation = async (message) => {
|
|
34
|
+
const { confirm } = await confirmPrompt(message, 'confirm');
|
|
35
|
+
if (!confirm) {
|
|
36
|
+
logCancel('Command cancelled');
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../utils/prompts/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAI,GAAG,UAAU,EAAE,EAAE;IAC9D,OAAO,MAAM,UAAU,CAAC,SAAS,IAAI,UAAU,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,QAAiB,EACjB,SAAiB,EACjB,EAAE;IACF,OAAO,MAAM,aAAa,CACxB,oCAAoC,QAAQ,SAAS,SAAS,OAAO,EACrE,SAAS,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;IACvC,OAAO,MAAM,UAAU,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,OAAgB,EAChB,SAAiB,EACjB,IAAY,EACZ,EAAE;IACF,IAAI,eAAe,GAAmB,OAAO,CAAC;IAC9C,IAAI,MAAM,GAAkB,SAAS,CAAC;IAEtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACvD,eAAe,GAAG,aAAa,CAAC,OAAkB,CAAC;QAEnD,IAAI,CAAC,eAAe;YAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,MAAM,cAAc,EAAE,CAAC;QAC5C,MAAM,GAAG,YAAY,CAAC,SAAmB,CAAC;QAE1C,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,wBAAwB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAElE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const enterValidatorIndex: () => Promise<import("prompts").Answers<"validatorIndex">>;
|
|
2
|
+
export declare const confirmValidatorIndex: (validatorIndex: bigint) => Promise<import("prompts").Answers<"confirm">>;
|
|
3
|
+
export declare const confirmMakeProof: (index: bigint) => Promise<bigint | void>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { textPrompt, confirmPrompt } from './default.js';
|
|
2
|
+
import { logCancel } from '../../utils/logging/console.js';
|
|
3
|
+
export const enterValidatorIndex = async () => {
|
|
4
|
+
return await textPrompt('Enter validator index', 'validatorIndex');
|
|
5
|
+
};
|
|
6
|
+
export const confirmValidatorIndex = async (validatorIndex) => {
|
|
7
|
+
return await confirmPrompt(`Do you want to make proof for validator ${validatorIndex}?`, 'confirm');
|
|
8
|
+
};
|
|
9
|
+
export const confirmMakeProof = async (index) => {
|
|
10
|
+
let validatorIndex = index;
|
|
11
|
+
if (validatorIndex === undefined) {
|
|
12
|
+
const answerValidatorIndex = await enterValidatorIndex();
|
|
13
|
+
validatorIndex = answerValidatorIndex.validatorIndex;
|
|
14
|
+
if (!validatorIndex)
|
|
15
|
+
return logCancel('Command cancelled');
|
|
16
|
+
}
|
|
17
|
+
const { confirm } = await confirmValidatorIndex(validatorIndex);
|
|
18
|
+
if (!confirm)
|
|
19
|
+
return logCancel('Command cancelled');
|
|
20
|
+
return validatorIndex;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=predeposit-guarantee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predeposit-guarantee.js","sourceRoot":"","sources":["../../../utils/prompts/predeposit-guarantee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;IAC5C,OAAO,MAAM,UAAU,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;IACpE,OAAO,MAAM,aAAa,CACxB,2CAA2C,cAAc,GAAG,EAC5D,SAAS,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IACtD,IAAI,cAAc,GAAW,KAAK,CAAC;IAEnC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACzD,cAAc,GAAG,oBAAoB,CAAC,cAAc,CAAC;QAErD,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAEpD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { confirmPrompt } from './default.js';
|
|
2
|
+
export const confirmCreateVaultParams = async (payload, otherRoles) => {
|
|
3
|
+
return await confirmPrompt(`Do you want to create a vault with the following parameters?
|
|
4
|
+
${JSON.stringify(payload, (_key, value) => {
|
|
5
|
+
if (typeof value === 'bigint') {
|
|
6
|
+
return value.toString();
|
|
7
|
+
}
|
|
8
|
+
return value;
|
|
9
|
+
}, 2)}
|
|
10
|
+
${JSON.stringify(otherRoles, (_key, value) => {
|
|
11
|
+
return value;
|
|
12
|
+
}, 2)}`, 'confirm');
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../utils/prompts/vault.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,OAA2B,EAC3B,UAA4B,EAC5B,EAAE;IACF,OAAO,MAAM,aAAa,CACxB;MACE,IAAI,CAAC,SAAS,CACd,OAAO,EACP,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,CACF;MACC,IAAI,CAAC,SAAS,CACd,UAAU,EACV,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACd,OAAO,KAAK,CAAC;IACf,CAAC,EACD,CAAC,CACF,EAAE,EACH,SAAS,CACV,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Hex } from 'viem';
|
|
2
|
+
export interface ValidatorWitness {
|
|
3
|
+
proof: Hex[];
|
|
4
|
+
pubkey: Hex;
|
|
5
|
+
validatorIndex: bigint;
|
|
6
|
+
childBlockTimestamp: bigint;
|
|
7
|
+
}
|
|
8
|
+
export interface ValidatorWitnessWithWC extends ValidatorWitness {
|
|
9
|
+
withdrawalCredentials: Hex;
|
|
10
|
+
}
|
|
11
|
+
export declare const createPDGProof: (validatorIndex: number, clURL?: string) => Promise<ValidatorWitnessWithWC>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { toHex } from 'viem';
|
|
2
|
+
import { fetchBeaconHeader, fetchBeaconState, fetchBeaconHeaderByParentRoot, } from '../index.js';
|
|
3
|
+
import { createStateProof, createPubkeyWCProof, createBeaconHeaderProof, } from './proofs.js';
|
|
4
|
+
const SECONDS_PER_SLOT = 12;
|
|
5
|
+
const slotToTimestamp = (slot, genesisTimestamp) => {
|
|
6
|
+
return genesisTimestamp + slot * Number(SECONDS_PER_SLOT);
|
|
7
|
+
};
|
|
8
|
+
export const createPDGProof = async (validatorIndex, clURL) => {
|
|
9
|
+
const beaconHeaderJson = await fetchBeaconHeader('finalized', clURL);
|
|
10
|
+
const beaconHeader = beaconHeaderJson.data.header.message;
|
|
11
|
+
const { stateBodyBytes, forkName } = await fetchBeaconState('finalized', clURL);
|
|
12
|
+
// Proofs
|
|
13
|
+
// Beacon Header Proof
|
|
14
|
+
const { proof: beaconHeaderProof, root: beaconHeaderRoot } = await createBeaconHeaderProof(beaconHeader);
|
|
15
|
+
// Validator State Proof
|
|
16
|
+
const { proof: validatorStateProof, validator, view: validatorStateView, } = await createStateProof(validatorIndex, stateBodyBytes, forkName);
|
|
17
|
+
// Pubkey WC Proof
|
|
18
|
+
const { proof: pubkeyWCProof } = await createPubkeyWCProof(validator.node);
|
|
19
|
+
// Concatenate proofs
|
|
20
|
+
const proofConcat = [
|
|
21
|
+
...pubkeyWCProof.witnesses,
|
|
22
|
+
...validatorStateProof.witnesses,
|
|
23
|
+
...beaconHeaderProof.witnesses,
|
|
24
|
+
];
|
|
25
|
+
const proofHex = proofConcat.map((w) => toHex(w));
|
|
26
|
+
const headerByParentJson = await fetchBeaconHeaderByParentRoot(beaconHeaderRoot, clURL);
|
|
27
|
+
const headerByParentSlot = headerByParentJson.data[0].header.message.slot;
|
|
28
|
+
const headerByParentTimestamp = slotToTimestamp(headerByParentSlot, validatorStateView.genesisTime);
|
|
29
|
+
const result = {
|
|
30
|
+
proof: proofHex,
|
|
31
|
+
pubkey: toHex(validator.pubkey),
|
|
32
|
+
withdrawalCredentials: toHex(validator.withdrawalCredentials),
|
|
33
|
+
validatorIndex: BigInt(validatorIndex),
|
|
34
|
+
childBlockTimestamp: BigInt(headerByParentTimestamp),
|
|
35
|
+
};
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=create-proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-proof.js","sourceRoot":"","sources":["../../../utils/proof/create-proof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAa5B,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,gBAAwB,EAAU,EAAE;IACzE,OAAO,gBAAgB,GAAG,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,cAAsB,EACtB,KAAc,EACmB,EAAE;IACnC,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAE1D,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,MAAM,gBAAgB,CACzD,WAAW,EACX,KAAK,CACN,CAAC;IAEF,SAAS;IAET,sBAAsB;IACtB,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAE,GACxD,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAE9C,wBAAwB;IACxB,MAAM,EACJ,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EACT,IAAI,EAAE,kBAAkB,GACzB,GAAG,MAAM,gBAAgB,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAErE,kBAAkB;IAClB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE3E,qBAAqB;IACrB,MAAM,WAAW,GAAG;QAClB,GAAG,aAAa,CAAC,SAAS;QAC1B,GAAG,mBAAmB,CAAC,SAAS;QAChC,GAAG,iBAAiB,CAAC,SAAS;KAC/B,CAAC;IAEF,MAAM,QAAQ,GAAU,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,MAAM,kBAAkB,GAAG,MAAM,6BAA6B,CAC5D,gBAAgB,EAChB,KAAK,CACN,CAAC;IACF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1E,MAAM,uBAAuB,GAAG,eAAe,CAC7C,kBAAkB,EAClB,kBAAkB,CAAC,WAAW,CAC/B,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/B,qBAAqB,EAAE,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC;QAC7D,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC;QACtC,mBAAmB,EAAE,MAAM,CAAC,uBAAuB,CAAC;KACrD,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|