@lidofinance/lsv-cli 1.0.0-alpha.23 → 1.0.0-alpha.25
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 +15 -44
- package/dist/abi/BlsHarness.js +232 -0
- package/dist/abi/BlsHarness.js.map +1 -0
- package/dist/abi/CLProofVerifier.js +47 -79
- package/dist/abi/CLProofVerifier.js.map +1 -1
- package/dist/abi/Dashboard.js +618 -196
- package/dist/abi/Dashboard.js.map +1 -1
- package/dist/abi/LidoLocator.js +7 -7
- package/dist/abi/LidoLocator.js.map +1 -1
- package/dist/abi/{Delegation.js → OperatorGrid.js} +466 -1067
- package/dist/abi/OperatorGrid.js.map +1 -0
- package/dist/abi/PredepositGuarantee.js +69 -13
- package/dist/abi/PredepositGuarantee.js.map +1 -1
- package/dist/abi/StEth.js +341 -341
- package/dist/abi/StEth.js.map +1 -1
- package/dist/abi/StakingVault.js +207 -73
- package/dist/abi/StakingVault.js.map +1 -1
- package/dist/abi/VaultFactory.js +67 -104
- package/dist/abi/VaultFactory.js.map +1 -1
- package/dist/abi/VaultHub.js +347 -237
- package/dist/abi/VaultHub.js.map +1 -1
- package/dist/abi/WstEth.js +478 -0
- package/dist/abi/WstEth.js.map +1 -0
- package/dist/abi/index.js +5 -2
- package/dist/abi/index.js.map +1 -1
- package/dist/configs/constants.js +2 -2
- package/dist/configs/constants.js.map +1 -1
- package/dist/configs/deployed.js +21 -47
- package/dist/configs/deployed.js.map +1 -1
- package/dist/configs/envs.js +5 -6
- package/dist/configs/envs.js.map +1 -1
- package/dist/configs/utils.js +4 -8
- package/dist/configs/utils.js.map +1 -1
- package/dist/contracts/blsHarness.js +24 -0
- package/dist/contracts/blsHarness.js.map +1 -0
- package/dist/contracts/clProofVerifier.js +4 -10
- package/dist/contracts/clProofVerifier.js.map +1 -1
- package/dist/contracts/index.js +3 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/locator.js +3 -3
- package/dist/contracts/locator.js.map +1 -1
- package/dist/contracts/operator-grid.js +17 -0
- package/dist/contracts/operator-grid.js.map +1 -0
- package/dist/contracts/pdg.js +2 -2
- package/dist/contracts/pdg.js.map +1 -1
- package/dist/contracts/reportChecker.js +4 -5
- package/dist/contracts/reportChecker.js.map +1 -1
- package/dist/contracts/steth.js +3 -3
- package/dist/contracts/steth.js.map +1 -1
- package/dist/contracts/token-manager.js +3 -3
- package/dist/contracts/token-manager.js.map +1 -1
- package/dist/contracts/vault-factory.js +2 -2
- package/dist/contracts/vault-factory.js.map +1 -1
- package/dist/contracts/vault-hub.js +3 -3
- package/dist/contracts/vault-hub.js.map +1 -1
- package/dist/contracts/vault-viewer.js +4 -6
- package/dist/contracts/vault-viewer.js.map +1 -1
- package/dist/contracts/vault.js +2 -2
- package/dist/contracts/vault.js.map +1 -1
- package/dist/contracts/voting.js +3 -3
- package/dist/contracts/voting.js.map +1 -1
- package/dist/contracts/wsteth.js +18 -0
- package/dist/contracts/wsteth.js.map +1 -0
- package/dist/features/advanced-config.js +3 -2
- package/dist/features/advanced-config.js.map +1 -1
- package/dist/features/dashboard.js +131 -0
- package/dist/features/dashboard.js.map +1 -0
- package/dist/features/index.js +8 -4
- package/dist/features/index.js.map +1 -1
- package/dist/features/operator-grid.js +57 -0
- package/dist/features/operator-grid.js.map +1 -0
- package/dist/features/pdg.js +79 -0
- package/dist/features/pdg.js.map +1 -0
- package/dist/features/vault-factory.js +33 -6
- package/dist/features/vault-factory.js.map +1 -1
- package/dist/features/vault-hub.js +81 -0
- package/dist/features/vault-hub.js.map +1 -0
- package/dist/features/vault.js +54 -0
- package/dist/features/vault.js.map +1 -0
- package/dist/features/voting.js +5 -9
- package/dist/features/voting.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/programs/account.js +107 -5
- package/dist/programs/account.js.map +1 -1
- package/dist/programs/config.js +2 -2
- package/dist/programs/config.js.map +1 -1
- package/dist/programs/dashboard/config.js +63 -17
- package/dist/programs/dashboard/config.js.map +1 -1
- package/dist/programs/dashboard/main.js +0 -7
- package/dist/programs/dashboard/main.js.map +1 -1
- package/dist/programs/dashboard/read.js +64 -42
- package/dist/programs/dashboard/read.js.map +1 -1
- package/dist/programs/dashboard/write.js +259 -155
- package/dist/programs/dashboard/write.js.map +1 -1
- package/dist/programs/hub/config.js +28 -32
- package/dist/programs/hub/config.js.map +1 -1
- package/dist/programs/hub/main.js +0 -7
- package/dist/programs/hub/main.js.map +1 -1
- package/dist/programs/hub/read.js +30 -35
- package/dist/programs/hub/read.js.map +1 -1
- package/dist/programs/hub/write.js +148 -40
- package/dist/programs/hub/write.js.map +1 -1
- package/dist/programs/index.js +1 -1
- package/dist/programs/index.js.map +1 -1
- 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.js.map +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.js +24 -0
- package/dist/programs/operator-grid/read.js.map +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.js +49 -13
- package/dist/programs/pdg/config.js.map +1 -1
- package/dist/programs/pdg/main.js +0 -7
- package/dist/programs/pdg/main.js.map +1 -1
- package/dist/programs/pdg/read.js +20 -3
- package/dist/programs/pdg/read.js.map +1 -1
- package/dist/programs/pdg/write.js +147 -82
- package/dist/programs/pdg/write.js.map +1 -1
- package/dist/programs/pdg-helpers.js +155 -38
- package/dist/programs/pdg-helpers.js.map +1 -1
- package/dist/programs/report.js +66 -78
- package/dist/programs/report.js.map +1 -1
- package/dist/programs/vault/config.js +6 -2
- package/dist/programs/vault/config.js.map +1 -1
- package/dist/programs/vault/main.js +0 -7
- package/dist/programs/vault/main.js.map +1 -1
- package/dist/programs/vault/read.js +16 -44
- package/dist/programs/vault/read.js.map +1 -1
- package/dist/programs/vault/write.js +117 -33
- package/dist/programs/vault/write.js.map +1 -1
- package/dist/programs/vault-factory/main.js +0 -7
- package/dist/programs/vault-factory/main.js.map +1 -1
- package/dist/programs/vault-factory/read.js +17 -19
- package/dist/programs/vault-factory/read.js.map +1 -1
- package/dist/programs/vault-factory/write.js +30 -52
- package/dist/programs/vault-factory/write.js.map +1 -1
- package/dist/programs/vault-viewer/main.js +2 -2
- package/dist/programs/vault-viewer/main.js.map +1 -1
- package/dist/programs/voting.js +8 -23
- package/dist/programs/voting.js.map +1 -1
- package/dist/providers/wallet.js +4 -4
- package/dist/providers/wallet.js.map +1 -1
- package/dist/utils/arguments.js +44 -1
- package/dist/utils/arguments.js.map +1 -1
- package/dist/utils/bls.js +101 -0
- package/dist/utils/bls.js.map +1 -0
- package/dist/utils/commands/dashboard.js +103 -0
- package/dist/utils/commands/dashboard.js.map +1 -0
- package/dist/utils/commands/index.js +2 -0
- package/dist/utils/commands/index.js.map +1 -0
- package/dist/utils/contract.js +54 -15
- package/dist/utils/contract.js.map +1 -1
- package/dist/utils/data-validators.js +7 -22
- package/dist/utils/data-validators.js.map +1 -1
- package/dist/utils/error-handler.js +5 -2
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/fetchCL.js +57 -0
- package/dist/utils/fetchCL.js.map +1 -0
- package/dist/utils/get-deposit-data-root.js +3 -3
- package/dist/utils/health.js +69 -7
- package/dist/utils/health.js.map +1 -1
- package/dist/utils/index.js +6 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ipfs.js +54 -0
- package/dist/utils/ipfs.js.map +1 -0
- package/dist/utils/logging/console.js +23 -0
- package/dist/utils/logging/console.js.map +1 -0
- package/dist/utils/logging/constants.js +12 -0
- package/dist/utils/logging/constants.js.map +1 -0
- package/dist/utils/logging/index.js +2 -0
- package/dist/utils/logging/index.js.map +1 -0
- package/dist/utils/prompts/dashboard.js +63 -0
- package/dist/utils/prompts/dashboard.js.map +1 -0
- package/dist/utils/prompts/index.js +2 -1
- package/dist/utils/prompts/index.js.map +1 -1
- package/dist/utils/prompts/operations.js +41 -0
- package/dist/utils/prompts/operations.js.map +1 -0
- package/dist/utils/prompts/predeposit-guarantee.js +10 -13
- package/dist/utils/prompts/predeposit-guarantee.js.map +1 -1
- package/dist/utils/prompts/vault.js +4 -1
- package/dist/utils/prompts/vault.js.map +1 -1
- package/dist/utils/proof/create-proof.js +6 -30
- package/dist/utils/proof/create-proof.js.map +1 -1
- package/dist/utils/proof/first-validator-gindex.js +2 -1
- package/dist/utils/proof/first-validator-gindex.js.map +1 -1
- package/dist/utils/proof/merkle-utils.js +15 -3
- package/dist/utils/proof/merkle-utils.js.map +1 -1
- package/dist/utils/proof/report-proof.js +11 -6
- package/dist/utils/proof/report-proof.js.map +1 -1
- package/dist/utils/read-programs-by-abi.js +2 -2
- package/dist/utils/read-programs-by-abi.js.map +1 -1
- package/dist/utils/report.js +17 -17
- package/dist/utils/report.js.map +1 -1
- package/dist/utils/required-lock.js +21 -0
- package/dist/utils/required-lock.js.map +1 -0
- package/dist/version/index.js +1 -1
- package/package.json +10 -4
- package/dist/abi/Delegation.js.map +0 -1
- package/dist/contracts/delegation.js +0 -11
- package/dist/contracts/delegation.js.map +0 -1
- package/dist/features/dashboard-delegation.js +0 -25
- package/dist/features/dashboard-delegation.js.map +0 -1
- package/dist/programs/delegation/config.js +0 -33
- package/dist/programs/delegation/config.js.map +0 -1
- package/dist/programs/delegation/index.js.map +0 -1
- package/dist/programs/delegation/main.js +0 -12
- package/dist/programs/delegation/main.js.map +0 -1
- package/dist/programs/delegation/read.js +0 -104
- package/dist/programs/delegation/read.js.map +0 -1
- package/dist/programs/delegation/write.js +0 -323
- package/dist/programs/delegation/write.js.map +0 -1
- package/dist/utils/parse-string.js +0 -20
- package/dist/utils/parse-string.js.map +0 -1
- package/dist/utils/prompts/delegation-dashboard.js +0 -29
- package/dist/utils/prompts/delegation-dashboard.js.map +0 -1
- /package/dist/programs/{delegation → operator-grid}/index.js +0 -0
|
@@ -1,304 +1,408 @@
|
|
|
1
|
+
import { parseEther } from 'viem';
|
|
2
|
+
import { Option } from 'commander';
|
|
1
3
|
import { getDashboardContract, getStakingVaultContract } from '../../contracts/index.js';
|
|
2
|
-
import { callReadMethod, callWriteMethodWithReceipt,
|
|
4
|
+
import { callReadMethod, callWriteMethodWithReceipt, stringToBigIntArray, jsonToRoleAssignment, confirmOperation, stringToBigInt, mintShares, burnShares, parseDepositArray, logInfo, getCommandsJson, stringToAddress, mintSteth, burnSteth, } from '../../utils/index.js';
|
|
3
5
|
import { dashboard } from './main.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
const dashboardWrite = dashboard
|
|
7
|
+
.command('write')
|
|
8
|
+
.alias('w')
|
|
9
|
+
.description('write commands');
|
|
10
|
+
dashboardWrite.addOption(new Option('-cmd2json'));
|
|
11
|
+
dashboardWrite.on('option:-cmd2json', function () {
|
|
12
|
+
logInfo(getCommandsJson(dashboardWrite));
|
|
13
|
+
process.exit();
|
|
14
|
+
});
|
|
15
|
+
dashboardWrite
|
|
6
16
|
.command('ownership')
|
|
7
17
|
.description('transfers ownership of the staking vault to a new owner')
|
|
8
|
-
.argument('<address>', 'dashboard address')
|
|
9
|
-
.argument('<newOwner>', 'address of the new owner')
|
|
18
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
19
|
+
.argument('<newOwner>', 'address of the new owner', stringToAddress)
|
|
10
20
|
.action(async (address, newOwner) => {
|
|
11
21
|
const contract = getDashboardContract(address);
|
|
22
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
23
|
+
const confirm = await confirmOperation(`Are you sure you want to transfer ownership of the staking vault ${vault} to ${newOwner}?`);
|
|
24
|
+
if (!confirm)
|
|
25
|
+
return;
|
|
12
26
|
await callWriteMethodWithReceipt(contract, 'transferStakingVaultOwnership', [newOwner]);
|
|
13
27
|
});
|
|
14
|
-
|
|
28
|
+
dashboardWrite
|
|
15
29
|
.command('disconnect')
|
|
16
30
|
.description('disconnects the staking vault from the vault hub')
|
|
17
|
-
.argument('<address>', 'dashboard address')
|
|
31
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
18
32
|
.action(async (address) => {
|
|
19
33
|
const contract = getDashboardContract(address);
|
|
34
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
35
|
+
const confirm = await confirmOperation(`Are you sure you want to disconnect the staking vault ${vault}?`);
|
|
36
|
+
if (!confirm)
|
|
37
|
+
return;
|
|
20
38
|
await callWriteMethodWithReceipt(contract, 'voluntaryDisconnect', []);
|
|
21
39
|
});
|
|
22
|
-
|
|
40
|
+
dashboardWrite
|
|
23
41
|
.command('fund')
|
|
24
42
|
.description('funds the staking vault with ether')
|
|
25
|
-
.
|
|
26
|
-
.
|
|
27
|
-
.action(async (
|
|
28
|
-
const { address: dashboard, amount } = await confirmFund(address, ether);
|
|
29
|
-
if (!dashboard || !amount)
|
|
30
|
-
return;
|
|
31
|
-
const contract = getDashboardContract(dashboard);
|
|
32
|
-
await callWriteMethodWithReceipt(contract, 'fund', [], BigInt(amount));
|
|
33
|
-
});
|
|
34
|
-
dashboard
|
|
35
|
-
.command('fund-weth')
|
|
36
|
-
.description('funds the staking vault with wrapped ether')
|
|
37
|
-
.argument('<address>', 'dashboard address')
|
|
38
|
-
.argument('<wethAmount>', 'amount of weth to be funded')
|
|
39
|
-
.action(async (address, wethAmount) => {
|
|
43
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
44
|
+
.argument('<ether>', 'amount of ether to be funded (in ETH)')
|
|
45
|
+
.action(async (address, ether) => {
|
|
40
46
|
const contract = getDashboardContract(address);
|
|
41
|
-
await
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
48
|
+
const confirm = await confirmOperation(`Are you sure you want to fund the staking vault ${vault} with ${ether} ether?`);
|
|
49
|
+
if (!confirm)
|
|
50
|
+
return;
|
|
51
|
+
await callWriteMethodWithReceipt(contract, 'fund', [], parseEther(ether));
|
|
44
52
|
});
|
|
45
|
-
|
|
53
|
+
dashboardWrite
|
|
46
54
|
.command('withdraw')
|
|
47
55
|
.description('withdraws ether from the staking vault to a recipient')
|
|
48
|
-
.argument('<address>', 'dashboard address')
|
|
49
|
-
.argument('<recipient>', 'address of the recipient')
|
|
50
|
-
.argument('<
|
|
56
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
57
|
+
.argument('<recipient>', 'address of the recipient', stringToAddress)
|
|
58
|
+
.argument('<eth>', 'amount of ether to withdraw (in ETH)')
|
|
51
59
|
.action(async (address, recipient, ether) => {
|
|
52
60
|
const contract = getDashboardContract(address);
|
|
61
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
62
|
+
const confirm = await confirmOperation(`Are you sure you want to withdraw ${ether} from the staking vault ${vault} to ${recipient}?`);
|
|
63
|
+
if (!confirm)
|
|
64
|
+
return;
|
|
53
65
|
await callWriteMethodWithReceipt(contract, 'withdraw', [
|
|
54
66
|
recipient,
|
|
55
|
-
|
|
67
|
+
parseEther(ether),
|
|
56
68
|
]);
|
|
57
69
|
});
|
|
58
|
-
|
|
59
|
-
.command('
|
|
60
|
-
.description('
|
|
61
|
-
.argument('<address>', 'dashboard address')
|
|
62
|
-
.argument('<
|
|
63
|
-
.
|
|
64
|
-
.action(async (address, recipient, ether) => {
|
|
70
|
+
dashboardWrite
|
|
71
|
+
.command('lock')
|
|
72
|
+
.description('updates the locked amount of the staking vault')
|
|
73
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
74
|
+
.argument('<lockedAmount>', 'amount of ether to lock')
|
|
75
|
+
.action(async (address, lockedAmount) => {
|
|
65
76
|
const contract = getDashboardContract(address);
|
|
66
|
-
await
|
|
67
|
-
|
|
68
|
-
|
|
77
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
78
|
+
const confirm = await confirmOperation(`Are you sure you want to update the locked amount of the staking vault ${vault} to ${lockedAmount}?`);
|
|
79
|
+
if (!confirm)
|
|
80
|
+
return;
|
|
81
|
+
await callWriteMethodWithReceipt(contract, 'lock', [
|
|
82
|
+
parseEther(lockedAmount),
|
|
69
83
|
]);
|
|
70
84
|
});
|
|
71
|
-
|
|
85
|
+
dashboardWrite
|
|
72
86
|
.command('exit')
|
|
73
87
|
.description('requests the exit of a validator from the staking vault')
|
|
74
|
-
.argument('<address>', 'dashboard address')
|
|
88
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
75
89
|
.argument('<validatorPubKey>', 'public key of the validator to exit')
|
|
76
90
|
.action(async (address, validatorPubKey) => {
|
|
77
91
|
const contract = getDashboardContract(address);
|
|
92
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
93
|
+
const confirm = await confirmOperation(`Are you sure you want to exit the validator ${validatorPubKey} from the staking vault ${vault}?`);
|
|
94
|
+
if (!confirm)
|
|
95
|
+
return;
|
|
78
96
|
await callWriteMethodWithReceipt(contract, 'requestValidatorExit', [
|
|
79
97
|
validatorPubKey,
|
|
80
98
|
]);
|
|
81
99
|
});
|
|
82
|
-
|
|
100
|
+
dashboardWrite
|
|
83
101
|
.command('trigger-validator-withdrawal')
|
|
84
102
|
.description('triggers the withdrawal of a validator from the staking vault')
|
|
85
|
-
.argument('<address>', 'dashboard address')
|
|
103
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
86
104
|
.argument('<pubkeys>', 'pubkeys of the validators to withdraw')
|
|
87
105
|
.argument('<amounts>', 'amounts of ether to withdraw', stringToBigIntArray)
|
|
88
|
-
.argument('<recipient>', 'address of the recipient')
|
|
106
|
+
.argument('<recipient>', 'address of the recipient', stringToAddress)
|
|
89
107
|
.action(async (address, pubkeys, amounts, recipient) => {
|
|
90
108
|
const contract = getDashboardContract(address);
|
|
91
109
|
const vault = await callReadMethod(contract, 'stakingVault');
|
|
92
|
-
if (!vault) {
|
|
93
|
-
printError(null, 'Error when getting staking vault address');
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
110
|
const vaultContract = getStakingVaultContract(vault);
|
|
97
111
|
const fee = await callReadMethod(vaultContract, 'calculateValidatorWithdrawalFee', [BigInt(amounts.length)]);
|
|
98
|
-
|
|
99
|
-
|
|
112
|
+
const confirm = await confirmOperation(`Are you sure you want to trigger the withdrawal of the validators ${pubkeys} from the staking vault ${vault} to ${recipient} with amounts ${amounts}?`);
|
|
113
|
+
if (!confirm)
|
|
100
114
|
return;
|
|
101
|
-
}
|
|
102
115
|
await callWriteMethodWithReceipt(contract, 'triggerValidatorWithdrawal', [pubkeys, amounts, recipient], fee);
|
|
103
116
|
});
|
|
104
|
-
|
|
117
|
+
dashboardWrite
|
|
105
118
|
.command('mint-shares')
|
|
119
|
+
.alias('mint')
|
|
106
120
|
.description('mints stETH tokens backed by the vault to a recipient')
|
|
107
|
-
.argument('<address>', 'dashboard address')
|
|
108
|
-
.argument('<recipient>', 'address of the recipient')
|
|
109
|
-
.argument('<amountOfShares>', 'amount of shares to mint')
|
|
121
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
122
|
+
.argument('<recipient>', 'address of the recipient', stringToAddress)
|
|
123
|
+
.argument('<amountOfShares>', 'amount of shares to mint (in Shares)')
|
|
110
124
|
.action(async (address, recipient, amountOfShares) => {
|
|
111
125
|
const contract = getDashboardContract(address);
|
|
112
|
-
await
|
|
113
|
-
recipient,
|
|
114
|
-
BigInt(amountOfShares),
|
|
115
|
-
]);
|
|
126
|
+
await mintShares(contract, recipient, parseEther(amountOfShares), 'mintShares');
|
|
116
127
|
});
|
|
117
|
-
|
|
128
|
+
dashboardWrite
|
|
118
129
|
.command('mint-steth')
|
|
119
130
|
.description('mints stETH tokens backed by the vault to a recipient')
|
|
120
|
-
.argument('<address>', 'dashboard address')
|
|
121
|
-
.argument('<recipient>', 'address of the recipient')
|
|
122
|
-
.argument('<
|
|
123
|
-
.action(async (address, recipient,
|
|
131
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
132
|
+
.argument('<recipient>', 'address of the recipient', stringToAddress)
|
|
133
|
+
.argument('<amountOfSteth>', 'amount of stETH to mint')
|
|
134
|
+
.action(async (address, recipient, amountOfSteth) => {
|
|
124
135
|
const contract = getDashboardContract(address);
|
|
125
|
-
await
|
|
126
|
-
recipient,
|
|
127
|
-
BigInt(amountOfShares),
|
|
128
|
-
]);
|
|
136
|
+
await mintSteth(contract, recipient, parseEther(amountOfSteth));
|
|
129
137
|
});
|
|
130
|
-
|
|
138
|
+
dashboardWrite
|
|
131
139
|
.command('mint-wsteth')
|
|
132
140
|
.description('mints wstETH tokens backed by the vault to a recipient')
|
|
133
|
-
.argument('<address>', 'dashboard address')
|
|
134
|
-
.argument('<recipient>', 'address of the recipient')
|
|
135
|
-
.argument('<
|
|
136
|
-
.action(async (address, recipient,
|
|
141
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
142
|
+
.argument('<recipient>', 'address of the recipient', stringToAddress)
|
|
143
|
+
.argument('<amountOfWsteth>', 'amount of wstETH to mint')
|
|
144
|
+
.action(async (address, recipient, amountOfWsteth) => {
|
|
137
145
|
const contract = getDashboardContract(address);
|
|
138
|
-
await
|
|
139
|
-
recipient,
|
|
140
|
-
BigInt(tokens),
|
|
141
|
-
]);
|
|
146
|
+
await mintShares(contract, recipient, parseEther(amountOfWsteth), 'mintWstETH');
|
|
142
147
|
});
|
|
143
|
-
|
|
148
|
+
dashboardWrite
|
|
144
149
|
.command('burn-shares')
|
|
150
|
+
.alias('burn')
|
|
145
151
|
.description('Burns stETH shares from the sender backed by the vault. Expects corresponding amount of stETH approved to this contract')
|
|
146
|
-
.argument('<address>', 'dashboard address')
|
|
147
|
-
.argument('<amountOfShares>', 'amount of shares to burn')
|
|
152
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
153
|
+
.argument('<amountOfShares>', 'amount of shares to burn (in Shares)')
|
|
148
154
|
.action(async (address, amountOfShares) => {
|
|
149
155
|
const contract = getDashboardContract(address);
|
|
150
|
-
await
|
|
151
|
-
BigInt(amountOfShares),
|
|
152
|
-
]);
|
|
156
|
+
await burnShares(contract, parseEther(amountOfShares), 'burnShares');
|
|
153
157
|
});
|
|
154
|
-
|
|
158
|
+
dashboardWrite
|
|
155
159
|
.command('burn-steth')
|
|
156
160
|
.description('Burns stETH shares from the sender backed by the vault. Expects stETH amount approved to this contract.')
|
|
157
|
-
.argument('<address>', 'dashboard address')
|
|
158
|
-
.argument('<amountOfShares>', 'amount of shares to burn')
|
|
161
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
162
|
+
.argument('<amountOfShares>', 'amount of shares to burn (in stETH)')
|
|
159
163
|
.action(async (address, amountOfShares) => {
|
|
160
164
|
const contract = getDashboardContract(address);
|
|
161
|
-
await
|
|
162
|
-
BigInt(amountOfShares),
|
|
163
|
-
]);
|
|
165
|
+
await burnSteth(contract, parseEther(amountOfShares));
|
|
164
166
|
});
|
|
165
|
-
|
|
167
|
+
dashboardWrite
|
|
166
168
|
.command('burn-wsteth')
|
|
167
169
|
.description('burn wstETH tokens from the sender backed by the vault')
|
|
168
|
-
.argument('<address>', 'dashboard address')
|
|
169
|
-
.argument('<tokens>', 'amount of wstETH tokens to burn')
|
|
170
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
171
|
+
.argument('<tokens>', 'amount of wstETH tokens to burn (in wstETH)')
|
|
170
172
|
.action(async (address, tokens) => {
|
|
171
173
|
const contract = getDashboardContract(address);
|
|
172
|
-
await
|
|
173
|
-
});
|
|
174
|
-
dashboard
|
|
175
|
-
.command('burn-shares-permit')
|
|
176
|
-
.description('Burns stETH tokens (in shares) backed by the vault from the sender using permit (with value in stETH).')
|
|
177
|
-
.argument('<address>', 'dashboard address')
|
|
178
|
-
.argument('<tokens>', 'amount of stETH tokens to burn')
|
|
179
|
-
.argument('<permitJSON>', 'JSON data required for the stETH.permit() method to set the allowance', jsonToPermit)
|
|
180
|
-
.action(async (address, tokens, permit) => {
|
|
181
|
-
const contract = getDashboardContract(address);
|
|
182
|
-
await callWriteMethodWithReceipt(contract, 'burnSharesWithPermit', [
|
|
183
|
-
BigInt(tokens),
|
|
184
|
-
permit,
|
|
185
|
-
]);
|
|
174
|
+
await burnShares(contract, parseEther(tokens), 'burnWstETH');
|
|
186
175
|
});
|
|
187
|
-
|
|
188
|
-
.command('burn-steth-permit')
|
|
189
|
-
.description('Burns stETH tokens backed by the vault from the sender using permit.')
|
|
190
|
-
.argument('<address>', 'dashboard address')
|
|
191
|
-
.argument('<tokens>', 'amount of stETH tokens to burn')
|
|
192
|
-
.argument('<permitJSON>', 'JSON data required for the stETH.permit() method to set the allowance', jsonToPermit)
|
|
193
|
-
.action(async (address, tokens, permit) => {
|
|
194
|
-
const contract = getDashboardContract(address);
|
|
195
|
-
await callWriteMethodWithReceipt(contract, 'burnStETHWithPermit', [
|
|
196
|
-
BigInt(tokens),
|
|
197
|
-
permit,
|
|
198
|
-
]);
|
|
199
|
-
});
|
|
200
|
-
dashboard
|
|
201
|
-
.command('burn-wsteth-permit')
|
|
202
|
-
.description('burn wstETH tokens from the sender backed by the vault using EIP-2612 Permit')
|
|
203
|
-
.argument('<address>', 'dashboard address')
|
|
204
|
-
.argument('<tokens>', 'amount of wstETH tokens to burn')
|
|
205
|
-
.argument('<permitJSON>', 'JSON data required for the wstETH.permit() method to set the allowance', jsonToPermit)
|
|
206
|
-
.action(async (address, tokens, permit) => {
|
|
207
|
-
const contract = getDashboardContract(address);
|
|
208
|
-
await callWriteMethodWithReceipt(contract, 'burnWstETHWithPermit', [
|
|
209
|
-
BigInt(tokens),
|
|
210
|
-
permit,
|
|
211
|
-
]);
|
|
212
|
-
});
|
|
213
|
-
dashboard
|
|
176
|
+
dashboardWrite
|
|
214
177
|
.command('rebalance')
|
|
215
178
|
.description('rebalance the vault by transferring ether')
|
|
216
|
-
.argument('<address>', 'dashboard address')
|
|
179
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
217
180
|
.argument('<ether>', 'amount of ether to rebalance')
|
|
218
181
|
.action(async (address, ether) => {
|
|
219
182
|
const contract = getDashboardContract(address);
|
|
183
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
184
|
+
const confirm = await confirmOperation(`Are you sure you want to rebalance the vault ${vault} with ${ether} ether?`);
|
|
185
|
+
if (!confirm)
|
|
186
|
+
return;
|
|
220
187
|
await callWriteMethodWithReceipt(contract, 'rebalanceVault', [
|
|
221
188
|
BigInt(ether),
|
|
222
189
|
]);
|
|
223
190
|
});
|
|
224
|
-
|
|
191
|
+
dashboardWrite
|
|
225
192
|
.command('recover-erc20')
|
|
226
193
|
.description('recovers ERC20 tokens or ether from the dashboard contract to sender')
|
|
227
|
-
.argument('<address>', 'dashboard address')
|
|
194
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
228
195
|
.argument('<token>', 'Address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether')
|
|
229
|
-
.argument('<recipient>', 'Address of the recovery recipient')
|
|
196
|
+
.argument('<recipient>', 'Address of the recovery recipient', stringToAddress)
|
|
230
197
|
.argument('<amount>', 'amount of ether to recover')
|
|
231
198
|
.action(async (address, token, recipient, amount) => {
|
|
232
199
|
const contract = getDashboardContract(address);
|
|
200
|
+
const confirm = await confirmOperation(`Are you sure you want to recover ${amount} ${token} from the dashboard contract ${address} to ${recipient}?`);
|
|
201
|
+
if (!confirm)
|
|
202
|
+
return;
|
|
233
203
|
await callWriteMethodWithReceipt(contract, 'recoverERC20', [
|
|
234
204
|
token,
|
|
235
205
|
recipient,
|
|
236
206
|
BigInt(amount),
|
|
237
207
|
]);
|
|
238
208
|
});
|
|
239
|
-
|
|
209
|
+
dashboardWrite
|
|
240
210
|
.command('recover-erc721')
|
|
241
211
|
.description('Transfers a given token_id of an ERC721-compatible NFT (defined by the token contract address)')
|
|
242
|
-
.argument('<address>', 'dashboard address')
|
|
212
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
243
213
|
.argument('<token>', 'an ERC721-compatible token')
|
|
244
214
|
.argument('<tokenId>', 'token id to recover')
|
|
245
|
-
.argument('<recipient>', 'Address of the recovery recipient')
|
|
215
|
+
.argument('<recipient>', 'Address of the recovery recipient', stringToAddress)
|
|
246
216
|
.action(async (address, token, tokenId, recipient) => {
|
|
247
217
|
const contract = getDashboardContract(address);
|
|
218
|
+
const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with id ${tokenId} from the dashboard contract ${address} to ${recipient}?`);
|
|
219
|
+
if (!confirm)
|
|
220
|
+
return;
|
|
248
221
|
await callWriteMethodWithReceipt(contract, 'recoverERC721', [
|
|
249
222
|
token,
|
|
250
223
|
BigInt(tokenId),
|
|
251
224
|
recipient,
|
|
252
225
|
]);
|
|
253
226
|
});
|
|
254
|
-
|
|
227
|
+
dashboardWrite
|
|
255
228
|
.command('deposit-pause')
|
|
256
229
|
.description('Pauses beacon chain deposits on the staking vault.')
|
|
257
|
-
.argument('<address>', 'dashboard address')
|
|
230
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
258
231
|
.action(async (address) => {
|
|
259
232
|
const contract = getDashboardContract(address);
|
|
233
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
234
|
+
const confirm = await confirmOperation(`Are you sure you want to pause beacon chain deposits on the staking vault ${vault}?`);
|
|
235
|
+
if (!confirm)
|
|
236
|
+
return;
|
|
260
237
|
await callWriteMethodWithReceipt(contract, 'pauseBeaconChainDeposits', []);
|
|
261
238
|
});
|
|
262
|
-
|
|
239
|
+
dashboardWrite
|
|
263
240
|
.command('deposit-resume')
|
|
264
241
|
.description('Mass-grants multiple roles to multiple accounts.')
|
|
265
|
-
.argument('<address>', 'dashboard address')
|
|
242
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
266
243
|
.action(async (address) => {
|
|
267
244
|
const contract = getDashboardContract(address);
|
|
245
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
246
|
+
const confirm = await confirmOperation(`Are you sure you want to resume beacon chain deposits on the staking vault ${vault}?`);
|
|
247
|
+
if (!confirm)
|
|
248
|
+
return;
|
|
268
249
|
await callWriteMethodWithReceipt(contract, 'resumeBeaconChainDeposits', []);
|
|
269
250
|
});
|
|
270
|
-
|
|
251
|
+
dashboardWrite
|
|
271
252
|
.command('role-grant')
|
|
272
253
|
.description('Mass-revokes multiple roles from multiple accounts.')
|
|
273
|
-
.argument('<address>', 'dashboard address')
|
|
254
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
274
255
|
.argument('<roleAssignmentJSON>', 'JSON array of role assignments', jsonToRoleAssignment)
|
|
275
256
|
.action(async (address, roleAssignment) => {
|
|
276
257
|
const contract = getDashboardContract(address);
|
|
277
258
|
if (!Array.isArray(roleAssignment)) {
|
|
278
259
|
throw new Error('the 2nd argument should be an array of role assignments');
|
|
279
260
|
}
|
|
261
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
262
|
+
const confirm = await confirmOperation(`Are you sure you want to grant the roles ${roleAssignment.map((i) => JSON.stringify(i))} in the vault ${vault}?`);
|
|
263
|
+
if (!confirm)
|
|
264
|
+
return;
|
|
280
265
|
await callWriteMethodWithReceipt(contract, 'grantRoles', [roleAssignment]);
|
|
281
266
|
});
|
|
282
|
-
|
|
267
|
+
dashboardWrite
|
|
283
268
|
.command('role-revoke')
|
|
284
269
|
.description('Resumes beacon chain deposits on the staking vault.')
|
|
285
|
-
.argument('<address>', 'dashboard address')
|
|
270
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
286
271
|
.argument('<roleAssignmentJSON>', 'JSON array of role assignments', jsonToRoleAssignment)
|
|
287
272
|
.action(async (address, roleAssignment) => {
|
|
288
273
|
const contract = getDashboardContract(address);
|
|
289
274
|
if (!Array.isArray(roleAssignment)) {
|
|
290
275
|
throw new Error('the 2nd argument should be an array of role assignments');
|
|
291
276
|
}
|
|
277
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
278
|
+
const confirm = await confirmOperation(`Are you sure you want to revoke the roles ${roleAssignment.map((i) => JSON.stringify(i))} in the vault ${vault}?`);
|
|
279
|
+
if (!confirm)
|
|
280
|
+
return;
|
|
292
281
|
await callWriteMethodWithReceipt(contract, 'revokeRoles', [roleAssignment]);
|
|
293
282
|
});
|
|
294
|
-
|
|
283
|
+
dashboardWrite
|
|
295
284
|
.command('compensate-disproven-predeposit')
|
|
296
|
-
.
|
|
297
|
-
.
|
|
298
|
-
.argument('<
|
|
299
|
-
.argument('<
|
|
285
|
+
.alias('compensate')
|
|
286
|
+
.description('Compensates ether of disproven validator`s predeposit from PDG to the recipient')
|
|
287
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
288
|
+
.argument('<pubkey>', 'validator that was proven invalid in PDG')
|
|
289
|
+
.argument('<recipient>', 'address to receive the `PDG.PREDEPOSIT_AMOUNT`', stringToAddress)
|
|
300
290
|
.action(async (address, pubkey, recipient) => {
|
|
301
291
|
const contract = getDashboardContract(address);
|
|
292
|
+
const confirm = await confirmOperation(`Are you sure you want to compensate the disproven predeposit from the Predeposit Guarantee contract ${contract} with validator public key ${pubkey} to ${recipient}?`);
|
|
293
|
+
if (!confirm)
|
|
294
|
+
return;
|
|
302
295
|
await callWriteMethodWithReceipt(contract, 'compensateDisprovenPredepositFromPDG', [pubkey, recipient]);
|
|
303
296
|
});
|
|
297
|
+
dashboardWrite
|
|
298
|
+
.command('unguaranteed-deposit-to-beacon-chain')
|
|
299
|
+
.alias('unguaranteed-deposit')
|
|
300
|
+
.description('Withdraws ether from vault and deposits directly to provided validators bypassing the default PDG process')
|
|
301
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
302
|
+
.argument('<deposits>', 'array of IStakingVault.Deposit structs containing deposit data', parseDepositArray)
|
|
303
|
+
.action(async (address, deposits) => {
|
|
304
|
+
const contract = getDashboardContract(address);
|
|
305
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
306
|
+
const confirm = await confirmOperation(`Are you sure you want to unguaranteed deposit ${deposits.length} deposits to the beacon chain in the staking vault ${vault}?
|
|
307
|
+
Deposits: ${JSON.stringify(deposits)}`);
|
|
308
|
+
if (!confirm)
|
|
309
|
+
return;
|
|
310
|
+
await callWriteMethodWithReceipt(contract, 'unguaranteedDepositToBeaconChain', [deposits]);
|
|
311
|
+
});
|
|
312
|
+
dashboardWrite
|
|
313
|
+
.command('prove-unknown-validators-to-pdg')
|
|
314
|
+
.alias('prove-unknown-validators')
|
|
315
|
+
.description('Proves validators with correct vault WC if they are unknown to PDG')
|
|
316
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
317
|
+
.argument('<witnesses>', 'array of IPredepositGuarantee.ValidatorWitness structs containing proof data for validators', parseDepositArray)
|
|
318
|
+
.action(async (address, witnesses) => {
|
|
319
|
+
const contract = getDashboardContract(address);
|
|
320
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
321
|
+
const vaultContract = getStakingVaultContract(vault);
|
|
322
|
+
const pdgContract = await callReadMethod(vaultContract, 'depositor');
|
|
323
|
+
const confirm = await confirmOperation(`Are you sure you want to prove ${witnesses.length} validators to the Predeposit Guarantee contract ${pdgContract} in the staking vault ${vault}?
|
|
324
|
+
Witnesses: ${JSON.stringify(witnesses)}`);
|
|
325
|
+
if (!confirm)
|
|
326
|
+
return;
|
|
327
|
+
await callWriteMethodWithReceipt(contract, 'proveUnknownValidatorsToPDG', [
|
|
328
|
+
witnesses,
|
|
329
|
+
]);
|
|
330
|
+
});
|
|
331
|
+
dashboardWrite
|
|
332
|
+
.command('authorize-lido-vault-hub')
|
|
333
|
+
.alias('authorize-hub')
|
|
334
|
+
.description('Authorizes the Lido Vault Hub to manage the staking vault.')
|
|
335
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
336
|
+
.action(async (address) => {
|
|
337
|
+
const contract = getDashboardContract(address);
|
|
338
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
339
|
+
const confirm = await confirmOperation(`Are you sure you want to authorize the Lido Vault Hub to manage the staking vault ${vault}?`);
|
|
340
|
+
if (!confirm)
|
|
341
|
+
return;
|
|
342
|
+
await callWriteMethodWithReceipt(contract, 'authorizeLidoVaultHub', []);
|
|
343
|
+
});
|
|
344
|
+
dashboardWrite
|
|
345
|
+
.command('deauthorize-lido-vault-hub')
|
|
346
|
+
.alias('deauthorize-hub')
|
|
347
|
+
.description('Deauthorizes the Lido Vault Hub from managing the staking vault.')
|
|
348
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
349
|
+
.action(async (address) => {
|
|
350
|
+
const contract = getDashboardContract(address);
|
|
351
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
352
|
+
const confirm = await confirmOperation(`Are you sure you want to deauthorize the Lido Vault Hub from managing the staking vault ${vault}?`);
|
|
353
|
+
if (!confirm)
|
|
354
|
+
return;
|
|
355
|
+
await callWriteMethodWithReceipt(contract, 'deauthorizeLidoVaultHub', []);
|
|
356
|
+
});
|
|
357
|
+
dashboardWrite
|
|
358
|
+
.command('ossify-staking-vault')
|
|
359
|
+
.alias('ossify')
|
|
360
|
+
.description('Ossifies the staking vault.')
|
|
361
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
362
|
+
.action(async (address) => {
|
|
363
|
+
const contract = getDashboardContract(address);
|
|
364
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
365
|
+
const confirm = await confirmOperation(`Are you sure you want to ossify the staking vault ${vault}?`);
|
|
366
|
+
if (!confirm)
|
|
367
|
+
return;
|
|
368
|
+
await callWriteMethodWithReceipt(contract, 'ossifyStakingVault', []);
|
|
369
|
+
});
|
|
370
|
+
dashboardWrite
|
|
371
|
+
.command('set-depositor')
|
|
372
|
+
.description('Updates the address of the depositor for the staking vault.')
|
|
373
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
374
|
+
.argument('<depositor>', 'address of the new depositor')
|
|
375
|
+
.action(async (address, depositor) => {
|
|
376
|
+
const contract = getDashboardContract(address);
|
|
377
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
378
|
+
const confirm = await confirmOperation(`Are you sure you want to set the depositor of the staking vault ${vault} to ${depositor}?`);
|
|
379
|
+
if (!confirm)
|
|
380
|
+
return;
|
|
381
|
+
await callWriteMethodWithReceipt(contract, 'setDepositor', [depositor]);
|
|
382
|
+
});
|
|
383
|
+
dashboardWrite
|
|
384
|
+
.command('reset-locked')
|
|
385
|
+
.description('Zeroes the locked amount of the staking vault.')
|
|
386
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
387
|
+
.action(async (address) => {
|
|
388
|
+
const contract = getDashboardContract(address);
|
|
389
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
390
|
+
const confirm = await confirmOperation(`Are you sure you want to reset the locked amount of the staking vault ${vault}?`);
|
|
391
|
+
if (!confirm)
|
|
392
|
+
return;
|
|
393
|
+
await callWriteMethodWithReceipt(contract, 'resetLocked', []);
|
|
394
|
+
});
|
|
395
|
+
dashboardWrite
|
|
396
|
+
.command('request-tier-change')
|
|
397
|
+
.description('Requests a change of tier on the OperatorGrid.')
|
|
398
|
+
.argument('<address>', 'dashboard address', stringToAddress)
|
|
399
|
+
.argument('<tier>', 'tier to change to', stringToBigInt)
|
|
400
|
+
.action(async (address, tier) => {
|
|
401
|
+
const contract = getDashboardContract(address);
|
|
402
|
+
const vault = await callReadMethod(contract, 'stakingVault');
|
|
403
|
+
const confirm = await confirmOperation(`Are you sure you want to request a change of tier on the OperatorGrid for the staking vault ${vault} to ${tier}?`);
|
|
404
|
+
if (!confirm)
|
|
405
|
+
return;
|
|
406
|
+
await callWriteMethodWithReceipt(contract, 'requestTierChange', [tier]);
|
|
407
|
+
});
|
|
304
408
|
//# sourceMappingURL=write.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/dashboard/write.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/dashboard/write.ts"],"names":[],"mappings":"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"}
|