@lidofinance/lsv-cli 1.0.0-alpha.13 → 1.0.0-alpha.14
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 +243 -120
- package/dist/abi/CLProofVerifier.js +279 -0
- package/dist/abi/CLProofVerifier.js.map +1 -0
- package/dist/abi/Dashboard.js +1060 -942
- package/dist/abi/Dashboard.js.map +1 -1
- package/dist/abi/Delegation.js +1260 -1129
- package/dist/abi/Delegation.js.map +1 -1
- package/dist/abi/LidoLocator.js +311 -270
- package/dist/abi/LidoLocator.js.map +1 -1
- package/dist/abi/PredepositGuarantee.js +1733 -0
- package/dist/abi/PredepositGuarantee.js.map +1 -0
- package/dist/abi/StakingVault.js +723 -528
- package/dist/abi/StakingVault.js.map +1 -1
- package/dist/abi/VaultFactory.js +164 -144
- package/dist/abi/VaultFactory.js.map +1 -1
- package/dist/abi/VaultHubViewer.js +297 -0
- package/dist/abi/VaultHubViewer.js.map +1 -0
- package/dist/abi/index.js +12 -9
- package/dist/abi/index.js.map +1 -1
- package/dist/contracts/clProofVerifier.js +29 -0
- package/dist/contracts/clProofVerifier.js.map +1 -0
- package/dist/contracts/dashboard.js.map +1 -1
- package/dist/contracts/index.js +12 -9
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/locator.js +2 -2
- package/dist/contracts/locator.js.map +1 -1
- package/dist/contracts/pdg.js +17 -0
- package/dist/contracts/pdg.js.map +1 -0
- package/dist/contracts/vault-factory.js +5 -9
- package/dist/contracts/vault-factory.js.map +1 -1
- package/dist/contracts/vault-hub-viewer.js +14 -0
- package/dist/contracts/vault-hub-viewer.js.map +1 -0
- package/dist/features/dashboard-delegation.js +4 -1
- package/dist/features/dashboard-delegation.js.map +1 -1
- package/dist/features/vault-factory.js +6 -10
- package/dist/features/vault-factory.js.map +1 -1
- package/dist/features/voting.js +6 -14
- package/dist/features/voting.js.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/programs/account.js +3 -1
- package/dist/programs/account.js.map +1 -1
- package/dist/programs/dashboard/config.js +65 -0
- package/dist/programs/dashboard/config.js.map +1 -0
- package/dist/programs/dashboard/index.js +4 -0
- package/dist/programs/dashboard/index.js.map +1 -0
- package/dist/programs/dashboard/main.js +12 -0
- package/dist/programs/dashboard/main.js.map +1 -0
- package/dist/programs/dashboard/read.js +25 -0
- package/dist/programs/dashboard/read.js.map +1 -0
- package/dist/programs/{dashboard.js → dashboard/write.js} +78 -136
- package/dist/programs/dashboard/write.js.map +1 -0
- package/dist/programs/delegation/config.js +33 -0
- package/dist/programs/delegation/config.js.map +1 -0
- package/dist/programs/delegation/index.js +4 -0
- package/dist/programs/delegation/index.js.map +1 -0
- package/dist/programs/delegation/main.js +12 -0
- package/dist/programs/delegation/main.js.map +1 -0
- package/dist/programs/delegation/read.js +98 -0
- package/dist/programs/delegation/read.js.map +1 -0
- package/dist/programs/delegation/write.js +327 -0
- package/dist/programs/delegation/write.js.map +1 -0
- package/dist/programs/index.js +7 -4
- package/dist/programs/index.js.map +1 -1
- package/dist/programs/pdg/config.js +2 -0
- package/dist/programs/pdg/config.js.map +1 -0
- package/dist/programs/pdg/index.js +4 -0
- package/dist/programs/pdg/index.js.map +1 -0
- package/dist/programs/pdg/main.js +12 -0
- package/dist/programs/pdg/main.js.map +1 -0
- package/dist/programs/pdg/read.js +7 -0
- package/dist/programs/pdg/read.js.map +1 -0
- package/dist/programs/pdg/write.js +64 -0
- package/dist/programs/pdg/write.js.map +1 -0
- package/dist/programs/predeposit-guarantee.js +73 -0
- package/dist/programs/predeposit-guarantee.js.map +1 -0
- package/dist/programs/vault/config.js +66 -0
- package/dist/programs/vault/config.js.map +1 -0
- package/dist/programs/vault/index.js +4 -0
- package/dist/programs/vault/index.js.map +1 -0
- package/dist/programs/vault/main.js +10 -0
- package/dist/programs/vault/main.js.map +1 -0
- package/dist/programs/vault/read.js +53 -0
- package/dist/programs/vault/read.js.map +1 -0
- package/dist/programs/vault/write.js +123 -0
- package/dist/programs/vault/write.js.map +1 -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.js +4 -0
- package/dist/programs/vault-factory/index.js.map +1 -0
- package/dist/programs/vault-factory/main.js +12 -0
- package/dist/programs/vault-factory/main.js.map +1 -0
- package/dist/programs/vault-factory/read.js +26 -0
- package/dist/programs/vault-factory/read.js.map +1 -0
- package/dist/programs/{vault-factory.js → vault-factory/write.js} +22 -37
- package/dist/programs/vault-factory/write.js.map +1 -0
- package/dist/programs/vault-hub-viewer.js +52 -0
- package/dist/programs/vault-hub-viewer.js.map +1 -0
- package/dist/programs/vault-hub.js +20 -52
- package/dist/programs/vault-hub.js.map +1 -1
- package/dist/programs/voting.js +11 -33
- package/dist/programs/voting.js.map +1 -1
- package/dist/utils/contract.js +63 -2
- package/dist/utils/contract.js.map +1 -1
- package/dist/utils/get-commands.js +11 -0
- package/dist/utils/get-commands.js.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/prompts/default.js +17 -0
- package/dist/utils/prompts/default.js.map +1 -0
- package/dist/utils/prompts/delegation-dashboard.js +29 -0
- package/dist/utils/prompts/delegation-dashboard.js.map +1 -0
- package/dist/utils/prompts/index.js +4 -0
- package/dist/utils/prompts/index.js.map +1 -0
- package/dist/utils/prompts/predeposit-guarantee.js +25 -0
- package/dist/utils/prompts/predeposit-guarantee.js.map +1 -0
- package/dist/utils/proof/create-proof.js +62 -0
- package/dist/utils/proof/create-proof.js.map +1 -0
- package/dist/utils/proof/first-validator-gindex.js +26 -0
- package/dist/utils/proof/first-validator-gindex.js.map +1 -0
- package/dist/utils/proof/index.js +4 -0
- package/dist/utils/proof/index.js.map +1 -0
- package/dist/utils/proof/merkle-utils.js +131 -0
- package/dist/utils/proof/merkle-utils.js.map +1 -0
- package/dist/utils/proof/proofs.js +52 -0
- package/dist/utils/proof/proofs.js.map +1 -0
- package/dist/utils/read-programs-by-abi.js +83 -0
- package/dist/utils/read-programs-by-abi.js.map +1 -0
- package/dist/utils/spinner/index.js +2 -0
- package/dist/utils/spinner/index.js.map +1 -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.js +1 -1
- package/package.json +11 -4
- package/dist/programs/dashboard.js.map +0 -1
- package/dist/programs/delegation.js +0 -581
- package/dist/programs/delegation.js.map +0 -1
- package/dist/programs/vault-factory.js.map +0 -1
- package/dist/programs/vault.js +0 -375
- package/dist/programs/vault.js.map +0 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { program } from '../command/index.js';
|
|
2
|
+
import { getCLProofVerifierContract } from '../contracts/index.js';
|
|
3
|
+
import { createPDGProof, getFirstValidatorGIndex, confirmCreateProof, showSpinner, printError, } from '../utils/index.js';
|
|
4
|
+
const predepositGuaranteeHelpers = program
|
|
5
|
+
.command('pdg-helpers')
|
|
6
|
+
.description('predeposit guarantee helpers');
|
|
7
|
+
predepositGuaranteeHelpers
|
|
8
|
+
.command('create-proof-and-check')
|
|
9
|
+
.option('-i, --index <index>', 'validator index')
|
|
10
|
+
.description('create predeposit proof by validator index and check by test contract')
|
|
11
|
+
.action(async ({ index }) => {
|
|
12
|
+
const validatorIndex = await confirmCreateProof(index);
|
|
13
|
+
if (!validatorIndex)
|
|
14
|
+
return;
|
|
15
|
+
const clProofVerifierContract = getCLProofVerifierContract();
|
|
16
|
+
const hideSpinner = showSpinner();
|
|
17
|
+
try {
|
|
18
|
+
const packageProof = await createPDGProof(Number(validatorIndex));
|
|
19
|
+
hideSpinner();
|
|
20
|
+
const { proof, pubkey, childBlockTimestamp, withdrawalCredentials } = packageProof;
|
|
21
|
+
await clProofVerifierContract.read.TEST_validatePubKeyWCProof([
|
|
22
|
+
{ proof, pubkey, validatorIndex, childBlockTimestamp },
|
|
23
|
+
withdrawalCredentials,
|
|
24
|
+
]);
|
|
25
|
+
console.info('-----------------proof verified-----------------');
|
|
26
|
+
console.info('------------------------------------------------');
|
|
27
|
+
console.info('----------------------proof----------------------');
|
|
28
|
+
console.info(proof);
|
|
29
|
+
console.info('---------------------pubkey---------------------');
|
|
30
|
+
console.table(pubkey);
|
|
31
|
+
console.info('---------------childBlockTimestamp---------------');
|
|
32
|
+
console.table(childBlockTimestamp);
|
|
33
|
+
console.info('--------------withdrawalCredentials--------------');
|
|
34
|
+
console.table(withdrawalCredentials);
|
|
35
|
+
console.info('------------------------------------------------');
|
|
36
|
+
console.info('-----------------------end-----------------------');
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
hideSpinner();
|
|
40
|
+
printError(err, 'Error when creating proof');
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
predepositGuaranteeHelpers
|
|
44
|
+
.command('create-proof')
|
|
45
|
+
.description('create predeposit proof by validator index')
|
|
46
|
+
.option('-i, --index <index>', 'validator index')
|
|
47
|
+
.action(async ({ index }) => {
|
|
48
|
+
const validatorIndex = await confirmCreateProof(index);
|
|
49
|
+
if (!validatorIndex)
|
|
50
|
+
return;
|
|
51
|
+
const packageProof = await createPDGProof(Number(validatorIndex));
|
|
52
|
+
const { proof, pubkey, childBlockTimestamp, withdrawalCredentials } = packageProof;
|
|
53
|
+
console.info('-----------------proof verified-----------------');
|
|
54
|
+
console.info('------------------------------------------------');
|
|
55
|
+
console.info('----------------------proof----------------------');
|
|
56
|
+
console.info(proof);
|
|
57
|
+
console.info('---------------------pubkey---------------------');
|
|
58
|
+
console.table(pubkey);
|
|
59
|
+
console.info('---------------childBlockTimestamp---------------');
|
|
60
|
+
console.table(childBlockTimestamp);
|
|
61
|
+
console.info('--------------withdrawalCredentials--------------');
|
|
62
|
+
console.table(withdrawalCredentials);
|
|
63
|
+
console.info('------------------------------------------------');
|
|
64
|
+
console.info('-----------------------end-----------------------');
|
|
65
|
+
});
|
|
66
|
+
predepositGuaranteeHelpers
|
|
67
|
+
.command('fv-gindex')
|
|
68
|
+
.argument('<forks...>', 'fork name')
|
|
69
|
+
.description('get first validator gindex')
|
|
70
|
+
.action(async (forks) => {
|
|
71
|
+
getFirstValidatorGIndex(forks);
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=predeposit-guarantee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predeposit-guarantee.js","sourceRoot":"","sources":["../../programs/predeposit-guarantee.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export const readCommandConfig = {
|
|
2
|
+
latestReport: {
|
|
3
|
+
name: 'l-report',
|
|
4
|
+
description: 'get latest vault report',
|
|
5
|
+
},
|
|
6
|
+
calculateValidatorWithdrawalFee: {
|
|
7
|
+
name: 'validator-w-fee',
|
|
8
|
+
description: 'get calculated withdrawal fee for a validator',
|
|
9
|
+
arguments: {
|
|
10
|
+
_numberOfKeys: {
|
|
11
|
+
name: 'numberOfKeys',
|
|
12
|
+
description: 'number of validators public keys',
|
|
13
|
+
modifier: (value) => BigInt(value),
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
inOutDelta: {
|
|
18
|
+
name: 'delta',
|
|
19
|
+
description: 'get the net difference between deposits and withdrawals',
|
|
20
|
+
},
|
|
21
|
+
beaconChainDepositsPaused: {
|
|
22
|
+
name: 'is-paused',
|
|
23
|
+
description: 'get whether deposits are paused by the vault owner',
|
|
24
|
+
},
|
|
25
|
+
valuation: {
|
|
26
|
+
name: 'valuation',
|
|
27
|
+
description: 'get vault valuation',
|
|
28
|
+
},
|
|
29
|
+
unlocked: {
|
|
30
|
+
name: 'unlocked',
|
|
31
|
+
description: 'get vault unlocked',
|
|
32
|
+
},
|
|
33
|
+
locked: {
|
|
34
|
+
name: 'locked',
|
|
35
|
+
description: 'get vault locked',
|
|
36
|
+
},
|
|
37
|
+
withdrawalCredentials: {
|
|
38
|
+
name: 'wc',
|
|
39
|
+
description: 'get vault withdrawal credentials',
|
|
40
|
+
},
|
|
41
|
+
nodeOperator: {
|
|
42
|
+
name: 'no',
|
|
43
|
+
description: 'get vault node operator',
|
|
44
|
+
},
|
|
45
|
+
DEPOSIT_CONTRACT: {
|
|
46
|
+
name: 'deposit-contract',
|
|
47
|
+
description: 'get vault deposit contract',
|
|
48
|
+
},
|
|
49
|
+
owner: {
|
|
50
|
+
name: 'owner',
|
|
51
|
+
description: 'get vault owner',
|
|
52
|
+
},
|
|
53
|
+
vaultHub: {
|
|
54
|
+
name: 'vault-hub',
|
|
55
|
+
description: 'get vault hub',
|
|
56
|
+
},
|
|
57
|
+
version: {
|
|
58
|
+
name: 'version',
|
|
59
|
+
description: 'get vault version',
|
|
60
|
+
},
|
|
61
|
+
initializedVersion: {
|
|
62
|
+
name: 'i-version',
|
|
63
|
+
description: 'get vault initialized version',
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../programs/vault/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,YAAY,EAAE;QACZ,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,yBAAyB;KACvC;IACD,+BAA+B,EAAE;QAC/B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE;YACT,aAAa,EAAE;gBACb,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,kCAAkC;gBAC/C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;aAC3C;SACF;KACF;IACD,UAAU,EAAE;QACV,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yDAAyD;KACvE;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oDAAoD;KAClE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qBAAqB;KACnC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oBAAoB;KAClC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;KAChC;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,kCAAkC;KAChD;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,yBAAyB;KACvC;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4BAA4B;KAC1C;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iBAAiB;KAC/B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,eAAe;KAC7B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,mBAAmB;KACjC;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,+BAA+B;KAC7C;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../programs/vault/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { program } from '../../command/index.js';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { getCommandsJson } from '../../utils/index.js';
|
|
4
|
+
export const vault = program.command('vault').description('vault contract');
|
|
5
|
+
vault.addOption(new Option('-cmd2json'));
|
|
6
|
+
vault.on('option:-cmd2json', function () {
|
|
7
|
+
console.info(getCommandsJson(vault));
|
|
8
|
+
process.exit();
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../programs/vault/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAE5E,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACzC,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE;IAC3B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { getStakingVaultContract } from '../../contracts/index.js';
|
|
2
|
+
import { getPublicClient } from '../../providers/index.js';
|
|
3
|
+
import { StakingVaultAbi } from '../../abi/index.js';
|
|
4
|
+
import { generateReadCommands, isContractAddress, printError } from '../../utils/index.js';
|
|
5
|
+
import { vault } from './main.js';
|
|
6
|
+
import { readCommandConfig } from './config.js';
|
|
7
|
+
vault
|
|
8
|
+
.command('info')
|
|
9
|
+
.description('get vault base info')
|
|
10
|
+
.argument('<address>', 'vault address')
|
|
11
|
+
.action(async (address) => {
|
|
12
|
+
const contract = getStakingVaultContract(address);
|
|
13
|
+
const publicClient = getPublicClient();
|
|
14
|
+
try {
|
|
15
|
+
const withdrawalCredentials = await contract.read.withdrawalCredentials();
|
|
16
|
+
const inOutDelta = await contract.read.inOutDelta();
|
|
17
|
+
const balance = await publicClient.getBalance({ address });
|
|
18
|
+
const valuation = await contract.read.valuation();
|
|
19
|
+
const version = await contract.read.version();
|
|
20
|
+
const initializedVersion = await contract.read.getInitializedVersion();
|
|
21
|
+
const depositContract = await contract.read.DEPOSIT_CONTRACT();
|
|
22
|
+
const vaultHub = await contract.read.vaultHub();
|
|
23
|
+
const nodeOperator = await contract.read.nodeOperator();
|
|
24
|
+
const owner = await contract.read.owner();
|
|
25
|
+
const locked = await contract.read.locked();
|
|
26
|
+
const unlocked = await contract.read.unlocked();
|
|
27
|
+
const isBeaconChainDepositsPaused = await contract.read.beaconChainDepositsPaused();
|
|
28
|
+
const isOwnerContract = await isContractAddress(owner);
|
|
29
|
+
const payload = {
|
|
30
|
+
vault: address,
|
|
31
|
+
withdrawalCredentials,
|
|
32
|
+
inOutDelta,
|
|
33
|
+
balance,
|
|
34
|
+
valuation,
|
|
35
|
+
locked,
|
|
36
|
+
unlocked,
|
|
37
|
+
isBeaconChainDepositsPaused,
|
|
38
|
+
version,
|
|
39
|
+
initializedVersion,
|
|
40
|
+
depositContract,
|
|
41
|
+
vaultHub,
|
|
42
|
+
nodeOperator,
|
|
43
|
+
owner,
|
|
44
|
+
isOwnerContract,
|
|
45
|
+
};
|
|
46
|
+
console.table(payload);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
printError(err, 'Error when calling read method "info"');
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
generateReadCommands(StakingVaultAbi, getStakingVaultContract, vault, readCommandConfig);
|
|
53
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../programs/vault/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,KAAK;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qBAAqB,CAAC;KAClC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;IACjC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,qBAAqB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,2BAA2B,GAC/B,MAAM,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,OAAO;YACd,qBAAqB;YACrB,UAAU;YACV,OAAO;YACP,SAAS;YACT,MAAM;YACN,QAAQ;YACR,2BAA2B;YAC3B,OAAO;YACP,kBAAkB;YAClB,eAAe;YACf,QAAQ;YACR,YAAY;YACZ,KAAK;YACL,eAAe;SAChB,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,oBAAoB,CAClB,eAAe,EACf,uBAAuB,EACvB,KAAK,EACL,iBAAiB,CAClB,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { getStakingVaultContract } from '../../contracts/index.js';
|
|
2
|
+
import { callWriteMethodWithReceipt, confirmFund } from '../../utils/index.js';
|
|
3
|
+
import { vault } from './main.js';
|
|
4
|
+
vault
|
|
5
|
+
.command('fund')
|
|
6
|
+
.description('fund vault')
|
|
7
|
+
.option('-a, --address <address>', 'vault address')
|
|
8
|
+
.option('-e, --ether <ether>', 'amount of ether to be funded (in WEI)')
|
|
9
|
+
.action(async ({ address, ether }) => {
|
|
10
|
+
const { address: vault, amount } = await confirmFund(address, ether);
|
|
11
|
+
if (!vault || !amount)
|
|
12
|
+
return;
|
|
13
|
+
const contract = getStakingVaultContract(address);
|
|
14
|
+
await callWriteMethodWithReceipt(contract, 'fund', [], BigInt(amount));
|
|
15
|
+
});
|
|
16
|
+
// TODO: investigate why only owner can fund vault
|
|
17
|
+
vault
|
|
18
|
+
.command('withdraw')
|
|
19
|
+
.description('withdraw from vault')
|
|
20
|
+
.argument('<address>', 'vault address')
|
|
21
|
+
.argument('<recipient>', 'recipient address')
|
|
22
|
+
.argument('<wei>', 'amount to withdraw (in WEI)')
|
|
23
|
+
.action(async (address, recipient, amount) => {
|
|
24
|
+
const contract = getStakingVaultContract(address);
|
|
25
|
+
await callWriteMethodWithReceipt(contract, 'withdraw', [
|
|
26
|
+
recipient,
|
|
27
|
+
BigInt(amount),
|
|
28
|
+
]);
|
|
29
|
+
});
|
|
30
|
+
// NOs
|
|
31
|
+
// TODO: get more details
|
|
32
|
+
vault
|
|
33
|
+
.command('no-deposit-beacon')
|
|
34
|
+
.description('deposit to beacon chain')
|
|
35
|
+
.argument('<address>', 'vault address')
|
|
36
|
+
.argument('<amountOfDeposit>', 'amount of deposits')
|
|
37
|
+
.argument('<pubkey>', 'pubkey')
|
|
38
|
+
.argument('<signature>', 'signature')
|
|
39
|
+
.argument('<depositDataRoot>', 'depositDataRoot')
|
|
40
|
+
.action(async (vault, amountOfDeposit, pubkey, signature, depositDataRoot) => {
|
|
41
|
+
const amount = BigInt(amountOfDeposit);
|
|
42
|
+
const contract = getStakingVaultContract(vault);
|
|
43
|
+
const payload = [
|
|
44
|
+
{
|
|
45
|
+
pubkey,
|
|
46
|
+
signature,
|
|
47
|
+
amount,
|
|
48
|
+
depositDataRoot,
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
await callWriteMethodWithReceipt(contract, 'depositToBeaconChain', [
|
|
52
|
+
payload,
|
|
53
|
+
]);
|
|
54
|
+
});
|
|
55
|
+
// TODO: get more details
|
|
56
|
+
vault
|
|
57
|
+
.command('no-val-exit')
|
|
58
|
+
.description('request to exit validator')
|
|
59
|
+
.argument('<address>', 'vault address')
|
|
60
|
+
.argument('<validatorPublicKey>', 'validator public key')
|
|
61
|
+
.action(async (address, validatorPublicKey) => {
|
|
62
|
+
const contract = getStakingVaultContract(address);
|
|
63
|
+
await callWriteMethodWithReceipt(contract, 'requestValidatorExit', [
|
|
64
|
+
validatorPublicKey,
|
|
65
|
+
]);
|
|
66
|
+
});
|
|
67
|
+
vault
|
|
68
|
+
.command('bc-resume')
|
|
69
|
+
.description('Resumes deposits to beacon chain')
|
|
70
|
+
.argument('<address>', 'vault address')
|
|
71
|
+
.action(async (address) => {
|
|
72
|
+
const contract = getStakingVaultContract(address);
|
|
73
|
+
await callWriteMethodWithReceipt(contract, 'resumeBeaconChainDeposits', []);
|
|
74
|
+
});
|
|
75
|
+
vault
|
|
76
|
+
.command('bc-pause')
|
|
77
|
+
.description('Pauses deposits to beacon chain')
|
|
78
|
+
.argument('<address>', 'vault address')
|
|
79
|
+
.action(async (address) => {
|
|
80
|
+
const contract = getStakingVaultContract(address);
|
|
81
|
+
await callWriteMethodWithReceipt(contract, 'pauseBeaconChainDeposits', []);
|
|
82
|
+
});
|
|
83
|
+
vault
|
|
84
|
+
.command('report')
|
|
85
|
+
.description('Submits a report containing valuation, inOutDelta, and locked amount')
|
|
86
|
+
.argument('<address>', 'vault address')
|
|
87
|
+
.argument('<valuation>', 'New total valuation: validator balances + StakingVault balance')
|
|
88
|
+
.argument('<inOutDelta>', 'New net difference between funded and withdrawn ether')
|
|
89
|
+
.argument('<locked>', 'New amount of locked ether')
|
|
90
|
+
.action(async (address, valuation, inOutDelta, locked) => {
|
|
91
|
+
const contract = getStakingVaultContract(address);
|
|
92
|
+
await callWriteMethodWithReceipt(contract, 'report', [
|
|
93
|
+
BigInt(valuation),
|
|
94
|
+
BigInt(inOutDelta),
|
|
95
|
+
BigInt(locked),
|
|
96
|
+
]);
|
|
97
|
+
});
|
|
98
|
+
vault
|
|
99
|
+
.command('rebalance')
|
|
100
|
+
.description('Rebalances the vault')
|
|
101
|
+
.argument('<address>', 'vault address')
|
|
102
|
+
.argument('<amount>', 'amount to rebalance (in WEI)')
|
|
103
|
+
.action(async (address, amount) => {
|
|
104
|
+
const contract = getStakingVaultContract(address);
|
|
105
|
+
await callWriteMethodWithReceipt(contract, 'rebalance', [BigInt(amount)]);
|
|
106
|
+
});
|
|
107
|
+
vault
|
|
108
|
+
.command('trigger-v-w')
|
|
109
|
+
.description('Trigger validator withdrawal')
|
|
110
|
+
.argument('<address>', 'vault address')
|
|
111
|
+
.argument('<pubkeys>', 'validator public keys')
|
|
112
|
+
.argument('<amounts>', 'amounts to withdraw (in WEI)')
|
|
113
|
+
.argument('<refundRecipient>', 'refund recipient address')
|
|
114
|
+
.action(async (address, pubkeys, amount, refundRecipient) => {
|
|
115
|
+
const contract = getStakingVaultContract(address);
|
|
116
|
+
const concatenatedPubkeys = pubkeys.join('');
|
|
117
|
+
await callWriteMethodWithReceipt(contract, 'triggerValidatorWithdrawal', [
|
|
118
|
+
concatenatedPubkeys,
|
|
119
|
+
amount.map((a) => BigInt(a)),
|
|
120
|
+
refundRecipient,
|
|
121
|
+
]);
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/vault/write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../programs/vault-factory/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAA6B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../programs/vault-factory/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { program } from '../../command/index.js';
|
|
2
|
+
import { Option } from 'commander';
|
|
3
|
+
import { getCommandsJson } from '../../utils/index.js';
|
|
4
|
+
export const vaultFactory = program
|
|
5
|
+
.command('factory')
|
|
6
|
+
.description('vault factory contract');
|
|
7
|
+
vaultFactory.addOption(new Option('-cmd2json'));
|
|
8
|
+
vaultFactory.on('option:-cmd2json', function () {
|
|
9
|
+
console.info(getCommandsJson(vaultFactory));
|
|
10
|
+
process.exit();
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../programs/vault-factory/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO;KAChC,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAEzC,YAAY,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AAChD,YAAY,CAAC,EAAE,CAAC,kBAAkB,EAAE;IAClC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { getVaultFactoryContract } from '../../contracts/index.js';
|
|
2
|
+
import { VaultFactoryAbi } from '../../abi/index.js';
|
|
3
|
+
import { generateReadCommands } from '../../utils/index.js';
|
|
4
|
+
import { vaultFactory } from './main.js';
|
|
5
|
+
import { readCommandConfig } from './config.js';
|
|
6
|
+
vaultFactory
|
|
7
|
+
.command('constants')
|
|
8
|
+
.description('get vault factory constants info')
|
|
9
|
+
.action(async () => {
|
|
10
|
+
const contract = getVaultFactoryContract();
|
|
11
|
+
try {
|
|
12
|
+
const beaconAddress = await contract.read.BEACON();
|
|
13
|
+
const delegationImplAddress = await contract.read.DELEGATION_IMPL();
|
|
14
|
+
console.table({
|
|
15
|
+
beaconAddress,
|
|
16
|
+
delegationImplAddress,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
if (err instanceof Error) {
|
|
21
|
+
console.info('Error when getting constants:\n', err.message);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
generateReadCommands(VaultFactoryAbi, getVaultFactoryContract, vaultFactory, readCommandConfig);
|
|
26
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../programs/vault-factory/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,YAAY;KACT,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,qBAAqB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAEpE,OAAO,CAAC,KAAK,CAAC;YACZ,aAAa;YACb,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,oBAAoB,CAClB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,CAClB,CAAC"}
|
|
@@ -1,45 +1,30 @@
|
|
|
1
|
-
import { program } from '
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
const vaultFactory = program
|
|
6
|
-
.command('factory')
|
|
7
|
-
.description('vault factory contract');
|
|
8
|
-
vaultFactory
|
|
9
|
-
.command('constants')
|
|
10
|
-
.description('get vault factory constants info')
|
|
11
|
-
.action(async () => {
|
|
12
|
-
const { contract } = getVaultFactoryContract();
|
|
13
|
-
try {
|
|
14
|
-
const beaconAddress = await contract.read.BEACON();
|
|
15
|
-
const delegationImplAddress = await contract.read.DELEGATION_IMPL();
|
|
16
|
-
console.table({
|
|
17
|
-
beaconAddress,
|
|
18
|
-
delegationImplAddress,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
if (err instanceof Error) {
|
|
23
|
-
console.info('Error when getting constants:\n', err.message);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
});
|
|
1
|
+
import { program } from '../../command/index.js';
|
|
2
|
+
import { createVault } from '../../features/index.js';
|
|
3
|
+
import { validateAddressMap } from '../../utils/index.js';
|
|
4
|
+
import { vaultFactory } from './main.js';
|
|
27
5
|
vaultFactory
|
|
28
6
|
.command('create-vault')
|
|
29
7
|
.description('create vault contract')
|
|
30
8
|
.option('-a, --defaultAdmin <defaultAdmin>', 'default admin address')
|
|
31
|
-
.option('-f, --funder <funder>', 'funder role address')
|
|
32
|
-
.option('-w, --withdrawer <withdrawer>', 'withdrawer role address')
|
|
33
|
-
.option('-m, --minter <minter>', 'minter role address')
|
|
34
|
-
.option('-b, --burner <burner>', 'burner role address')
|
|
35
|
-
.option('-r, --rebalancer <rebalancer>', 'rebalancer role address')
|
|
36
|
-
.option('-p, --depositPauser <depositPauser>', 'depositPauser role address')
|
|
37
|
-
.option('-d, --depositResumer <depositResumer>', 'depositResumer role address')
|
|
38
|
-
.option('-e, --exitRequester <exitRequester>', 'exitRequester role address')
|
|
39
|
-
.option('-u, --disconnecter <disconnecter>', 'disconnecter role address')
|
|
40
|
-
.option('-c, --curator <curator>', 'curator address')
|
|
41
9
|
.option('-n, --nodeOperatorManager <nodeOperatorManager>', 'node operator manager address')
|
|
10
|
+
.option('-ar, --assetRecoverer <assetRecoverer>', 'asset recoverer address')
|
|
11
|
+
.option('-ce, --confirmExpiry <confirmExpiry>', 'confirm expiry')
|
|
12
|
+
.option('-f, --funders <funders>', 'funders role address')
|
|
13
|
+
.option('-w, --withdrawers <withdrawers>', 'withdrawers role address')
|
|
14
|
+
.option('-m, --minters <minters>', 'minters role address')
|
|
15
|
+
.option('-b, --burners <burners>', 'burners role address')
|
|
16
|
+
.option('-r, --rebalancers <rebalancers>', 'rebalancers role address')
|
|
17
|
+
.option('-p, --depositPausers <depositPausers>', 'depositPausers role address')
|
|
18
|
+
.option('-d, --depositResumers <depositResumers>', 'depositResumers role address')
|
|
19
|
+
.option('-e, --exitRequesters <exitRequesters>', 'exitRequesters role address')
|
|
20
|
+
.option('-u, --disconnecters <disconnecters>', 'disconnecters role address')
|
|
21
|
+
.option('-c, --curators <curators>', 'curators role address')
|
|
22
|
+
.option('-ve, --validatorExitRequesters <validatorExitRequesters>', 'validator exit requesters role addresses')
|
|
23
|
+
.option('-vt, --validatorWithdrawalTriggerers <validatorWithdrawalTriggerers>', 'validator withdrawal triggerers role address')
|
|
42
24
|
.option('-o, --nodeOperatorFeeClaimer <nodeOperatorFeeClaimer>', 'node operator fee claimer address')
|
|
25
|
+
.option('-cfs, --curatorFeeSetters <curatorFeeSetters>', 'curator fee setters role addresses')
|
|
26
|
+
.option('-cfc, --curatorFeeClaimers <curatorFeeClaimers>', 'curator fee claimers role addresses')
|
|
27
|
+
.option('-nofc, --nodeOperatorFeeClaimers <nodeOperatorFeeClaimers>', 'node operator fee claimers role addresses')
|
|
43
28
|
.argument('<curatorFeeBP>', 'Vault curator fee, for e.g. 100 == 1%')
|
|
44
29
|
.argument('<nodeOperatorFeeBP>', 'Node operator fee, for e.g. 100 == 1%')
|
|
45
30
|
.argument('[quantity]', 'quantity of vaults to create, default 1', '1')
|
|
@@ -84,4 +69,4 @@ vaultFactory
|
|
|
84
69
|
}
|
|
85
70
|
}
|
|
86
71
|
});
|
|
87
|
-
//# sourceMappingURL=
|
|
72
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/vault-factory/write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { program } from '../command/index.js';
|
|
2
|
+
import { getVaultHubViewerContract } from '../contracts/index.js';
|
|
3
|
+
import { getAccount } from '../providers/index.js';
|
|
4
|
+
import { callReadMethod } from '../utils/index.js';
|
|
5
|
+
// TODO: move to config
|
|
6
|
+
const ADDRESS = '0x5D73Eec220C7428eEAa26aF0F6d65B4dD1bb95aA';
|
|
7
|
+
// TODO: add methods with pagination
|
|
8
|
+
const vaultHubViewer = program
|
|
9
|
+
.command('hub-viewer')
|
|
10
|
+
.description('vault hub viewer');
|
|
11
|
+
vaultHubViewer
|
|
12
|
+
.command('connected')
|
|
13
|
+
.description('get vaults connected to vault hub')
|
|
14
|
+
.action(async () => {
|
|
15
|
+
const contract = getVaultHubViewerContract(ADDRESS);
|
|
16
|
+
await callReadMethod(contract, 'vaultsConnected');
|
|
17
|
+
});
|
|
18
|
+
vaultHubViewer
|
|
19
|
+
.command('my')
|
|
20
|
+
.description('get my vaults')
|
|
21
|
+
.action(async () => {
|
|
22
|
+
const contract = getVaultHubViewerContract(ADDRESS);
|
|
23
|
+
const account = getAccount();
|
|
24
|
+
await callReadMethod(contract, 'vaultsByOwner', [account.address]);
|
|
25
|
+
});
|
|
26
|
+
vaultHubViewer
|
|
27
|
+
.command('by-owner')
|
|
28
|
+
.description('get vaults by owner')
|
|
29
|
+
.argument('<address>', 'owner address')
|
|
30
|
+
.action(async (address) => {
|
|
31
|
+
const contract = getVaultHubViewerContract(ADDRESS);
|
|
32
|
+
await callReadMethod(contract, 'vaultsByOwner', [address]);
|
|
33
|
+
});
|
|
34
|
+
vaultHubViewer
|
|
35
|
+
.command('by-role')
|
|
36
|
+
.description('get vaults by role')
|
|
37
|
+
.argument('<role>', 'role')
|
|
38
|
+
.action(async (role) => {
|
|
39
|
+
const contract = getVaultHubViewerContract(ADDRESS);
|
|
40
|
+
const account = getAccount();
|
|
41
|
+
await callReadMethod(contract, 'vaultsByRole', [role, account.address]);
|
|
42
|
+
});
|
|
43
|
+
vaultHubViewer
|
|
44
|
+
.command('by-role-and-address')
|
|
45
|
+
.description('get vaults by role and address')
|
|
46
|
+
.argument('<role>', 'role')
|
|
47
|
+
.argument('<address>', 'address')
|
|
48
|
+
.action(async (role, address) => {
|
|
49
|
+
const contract = getVaultHubViewerContract(ADDRESS);
|
|
50
|
+
await callReadMethod(contract, 'vaultsByRole', [role, address]);
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=vault-hub-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault-hub-viewer.js","sourceRoot":"","sources":["../../programs/vault-hub-viewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,uBAAuB;AACvB,MAAM,OAAO,GAAG,4CAA4C,CAAC;AAE7D,oCAAoC;AAEpC,MAAM,cAAc,GAAG,OAAO;KAC3B,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAEnC,cAAc;KACX,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,cAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,cAAc;KACX,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEL,cAAc;KACX,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,qBAAqB,CAAC;KAClC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;IACjC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,cAAc;KACX,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;IAC9B,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEL,cAAc;KACX,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;KAChC,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,OAAgB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"}
|