@lidofinance/lsv-cli 1.0.0-alpha.10 → 1.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abi/Dashboard.js +1 -4
- package/dist/abi/Dashboard.js.map +1 -1
- package/dist/abi/Delegation.js +1 -4
- package/dist/abi/Delegation.js.map +1 -1
- package/dist/abi/LidoLocator.js +1 -4
- package/dist/abi/LidoLocator.js.map +1 -1
- package/dist/abi/StEth.js +1 -4
- package/dist/abi/StEth.js.map +1 -1
- package/dist/abi/StakingVault.js +1 -4
- package/dist/abi/StakingVault.js.map +1 -1
- package/dist/abi/TokenManager.js +1 -4
- package/dist/abi/TokenManager.js.map +1 -1
- package/dist/abi/VaultFactory.js +1 -4
- package/dist/abi/VaultFactory.js.map +1 -1
- package/dist/abi/VaultHub.js +1 -4
- package/dist/abi/VaultHub.js.map +1 -1
- package/dist/abi/Voting.js +1 -4
- package/dist/abi/Voting.js.map +1 -1
- package/dist/abi/index.js +9 -25
- package/dist/abi/index.js.map +1 -1
- package/dist/command/index.js +5 -8
- package/dist/command/index.js.map +1 -1
- package/dist/configs/constants.js +2 -5
- package/dist/configs/constants.js.map +1 -1
- package/dist/configs/deployed.js +63 -96
- package/dist/configs/deployed.js.map +1 -1
- package/dist/configs/envs.js +9 -45
- package/dist/configs/envs.js.map +1 -1
- package/dist/configs/index.js +3 -19
- package/dist/configs/index.js.map +1 -1
- package/dist/configs/utils.js +10 -16
- package/dist/configs/utils.js.map +1 -1
- package/dist/contracts/dashboard.js +7 -11
- package/dist/contracts/dashboard.js.map +1 -1
- package/dist/contracts/delegation.js +7 -11
- package/dist/contracts/delegation.js.map +1 -1
- package/dist/contracts/index.js +9 -25
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/locator.js +11 -15
- package/dist/contracts/locator.js.map +1 -1
- package/dist/contracts/steth.js +11 -15
- package/dist/contracts/steth.js.map +1 -1
- package/dist/contracts/token-manager.js +11 -15
- package/dist/contracts/token-manager.js.map +1 -1
- package/dist/contracts/vault-factory.js +11 -15
- package/dist/contracts/vault-factory.js.map +1 -1
- package/dist/contracts/vault-hub.js +12 -16
- package/dist/contracts/vault-hub.js.map +1 -1
- package/dist/contracts/vault.js +9 -13
- package/dist/contracts/vault.js.map +1 -1
- package/dist/contracts/voting.js +11 -15
- package/dist/contracts/voting.js.map +1 -1
- package/dist/features/advanced-config.js +7 -12
- package/dist/features/advanced-config.js.map +1 -1
- package/dist/features/dashboard-delegation.js +3 -7
- package/dist/features/dashboard-delegation.js.map +1 -1
- package/dist/features/index.js +4 -20
- package/dist/features/index.js.map +1 -1
- package/dist/features/token-manager.js +5 -4
- package/dist/features/token-manager.js.map +1 -1
- package/dist/features/vault-factory.js +15 -22
- package/dist/features/vault-factory.js.map +1 -1
- package/dist/features/voting.js +49 -52
- package/dist/features/voting.js.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/programs/config.js +12 -14
- package/dist/programs/config.js.map +1 -1
- package/dist/programs/dashboard.js +218 -220
- package/dist/programs/dashboard.js.map +1 -1
- package/dist/programs/delegation.js +319 -343
- package/dist/programs/delegation.js.map +1 -1
- package/dist/programs/index.js +6 -22
- package/dist/programs/index.js.map +1 -1
- package/dist/programs/vault-factory.js +41 -38
- package/dist/programs/vault-factory.js.map +1 -1
- package/dist/programs/vault-hub.js +130 -126
- package/dist/programs/vault-hub.js.map +1 -1
- package/dist/programs/vault.js +141 -136
- package/dist/programs/vault.js.map +1 -1
- package/dist/programs/voting.js +32 -30
- package/dist/programs/voting.js.map +1 -1
- package/dist/providers/index.js +1 -17
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/wallet.js +18 -24
- package/dist/providers/wallet.js.map +1 -1
- package/dist/types/common.js +1 -2
- package/dist/types/config.js +1 -2
- package/dist/types/index.js +2 -18
- package/dist/types/index.js.map +1 -1
- package/dist/utils/call-contract.js +9 -14
- package/dist/utils/call-contract.js.map +1 -1
- package/dist/utils/data-validators.js +12 -15
- package/dist/utils/data-validators.js.map +1 -1
- package/dist/utils/error-handler.js +3 -7
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/get-value.js +5 -11
- package/dist/utils/get-value.js.map +1 -1
- package/dist/utils/index.js +6 -22
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/resolve-path.js +9 -12
- package/dist/utils/resolve-path.js.map +1 -1
- package/dist/utils/sleep.js +1 -5
- package/dist/utils/sleep.js.map +1 -1
- package/package.json +38 -3
package/dist/features/voting.js
CHANGED
|
@@ -1,51 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
exports.createVoteMap = exports.waitForEnd = exports.executeVote = exports.voteFor = exports.voteLastVoting = void 0;
|
|
7
|
-
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
8
|
-
const _contracts_1 = require("../contracts");
|
|
9
|
-
const _providers_1 = require("../providers");
|
|
10
|
-
const _configs_1 = require("../configs");
|
|
11
|
-
const _utils_1 = require("../utils");
|
|
1
|
+
import progress from 'cli-progress';
|
|
2
|
+
import { getVotingContract } from '../contracts/index.js';
|
|
3
|
+
import { getAccount } from '../providers/index.js';
|
|
4
|
+
import { getChain } from '../configs/index.js';
|
|
5
|
+
import { sleep } from '../utils/index.js';
|
|
12
6
|
const voteAbi = [
|
|
13
7
|
{
|
|
14
|
-
name:
|
|
8
|
+
name: 'open',
|
|
15
9
|
},
|
|
16
10
|
{
|
|
17
|
-
name:
|
|
11
|
+
name: 'executed',
|
|
18
12
|
},
|
|
19
13
|
{
|
|
20
|
-
name:
|
|
14
|
+
name: 'startDate',
|
|
21
15
|
},
|
|
22
16
|
{
|
|
23
|
-
name:
|
|
17
|
+
name: 'snapshotBlock',
|
|
24
18
|
},
|
|
25
19
|
{
|
|
26
|
-
name:
|
|
20
|
+
name: 'supportRequired',
|
|
27
21
|
},
|
|
28
22
|
{
|
|
29
|
-
name:
|
|
23
|
+
name: 'minAcceptQuorum',
|
|
30
24
|
},
|
|
31
25
|
{
|
|
32
|
-
name:
|
|
26
|
+
name: 'yea',
|
|
33
27
|
},
|
|
34
28
|
{
|
|
35
|
-
name:
|
|
29
|
+
name: 'nay',
|
|
36
30
|
},
|
|
37
31
|
{
|
|
38
|
-
name:
|
|
32
|
+
name: 'votingPower',
|
|
39
33
|
},
|
|
40
34
|
{
|
|
41
|
-
name:
|
|
35
|
+
name: 'script',
|
|
42
36
|
},
|
|
43
37
|
{
|
|
44
|
-
name:
|
|
45
|
-
}
|
|
38
|
+
name: 'phase',
|
|
39
|
+
},
|
|
46
40
|
];
|
|
47
|
-
const voteLastVoting = async () => {
|
|
48
|
-
const { contract } =
|
|
41
|
+
export const voteLastVoting = async () => {
|
|
42
|
+
const { contract } = getVotingContract();
|
|
49
43
|
const votesLength = await contract.read.votesLength();
|
|
50
44
|
const lastVoteId = votesLength - 1n;
|
|
51
45
|
if (lastVoteId === -1n) {
|
|
@@ -53,10 +47,10 @@ const voteLastVoting = async () => {
|
|
|
53
47
|
return;
|
|
54
48
|
}
|
|
55
49
|
const lastVote = await contract.read.getVote([lastVoteId]);
|
|
56
|
-
const voteMap =
|
|
57
|
-
console.
|
|
58
|
-
console.
|
|
59
|
-
if (voteMap.open
|
|
50
|
+
const voteMap = createVoteMap(lastVote);
|
|
51
|
+
console.info('voteLastVoting');
|
|
52
|
+
console.info('voteMap', voteMap);
|
|
53
|
+
if (!voteMap.open) {
|
|
60
54
|
console.warn('Vote is not open');
|
|
61
55
|
return;
|
|
62
56
|
}
|
|
@@ -64,25 +58,28 @@ const voteLastVoting = async () => {
|
|
|
64
58
|
console.warn('Wrong phase');
|
|
65
59
|
return;
|
|
66
60
|
}
|
|
67
|
-
await
|
|
68
|
-
await
|
|
69
|
-
await
|
|
61
|
+
await voteFor(lastVoteId);
|
|
62
|
+
await waitForEnd(lastVoteId);
|
|
63
|
+
await executeVote(lastVoteId);
|
|
70
64
|
};
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
65
|
+
export const voteFor = async (voteId) => {
|
|
66
|
+
const { contract } = getVotingContract();
|
|
67
|
+
await contract.write.vote([voteId, true, false], {
|
|
68
|
+
account: getAccount(),
|
|
69
|
+
chain: getChain(),
|
|
70
|
+
});
|
|
71
|
+
console.info('Vote voted');
|
|
76
72
|
};
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
export const executeVote = async (voteId) => {
|
|
74
|
+
const { contract } = getVotingContract();
|
|
75
|
+
await contract.write.executeVote([voteId], {
|
|
76
|
+
account: getAccount(),
|
|
77
|
+
chain: getChain(),
|
|
78
|
+
});
|
|
79
|
+
console.info('Vote executed');
|
|
82
80
|
};
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
const { contract, client } = (0, _contracts_1.getVotingContract)();
|
|
81
|
+
export const waitForEnd = async (voteId, progressBar) => {
|
|
82
|
+
const { contract, client } = getVotingContract();
|
|
86
83
|
const [vote, voteTime, block] = await Promise.all([
|
|
87
84
|
contract.read.getVote([voteId]),
|
|
88
85
|
contract.read.voteTime(),
|
|
@@ -90,7 +87,7 @@ const waitForEnd = async (voteId, progressBar) => {
|
|
|
90
87
|
]);
|
|
91
88
|
if (!block)
|
|
92
89
|
throw new Error('Can not get latest block');
|
|
93
|
-
const voteMap =
|
|
90
|
+
const voteMap = createVoteMap(vote);
|
|
94
91
|
const voteStart = Number(voteMap.startDate);
|
|
95
92
|
const voteEnd = voteStart + Number(voteTime);
|
|
96
93
|
const bTimestamp = Number(block.timestamp);
|
|
@@ -105,14 +102,15 @@ const waitForEnd = async (voteId, progressBar) => {
|
|
|
105
102
|
progressBar.update(currentPosition, { secondsLeft });
|
|
106
103
|
}
|
|
107
104
|
else {
|
|
108
|
-
progressBar = new
|
|
105
|
+
progressBar = new progress.SingleBar({
|
|
106
|
+
format: `Vote #${voteId} in progress |{bar}| {percentage}% | {secondsLeft}s left`,
|
|
107
|
+
}, progress.Presets.shades_classic);
|
|
109
108
|
progressBar.start(Number(voteTime), currentPosition, { secondsLeft });
|
|
110
109
|
}
|
|
111
|
-
await
|
|
112
|
-
await
|
|
110
|
+
await sleep(10_000);
|
|
111
|
+
await waitForEnd(voteId, progressBar);
|
|
113
112
|
};
|
|
114
|
-
|
|
115
|
-
const createVoteMap = (vote) => {
|
|
113
|
+
export const createVoteMap = (vote) => {
|
|
116
114
|
return vote.reduce((acc, item, index) => {
|
|
117
115
|
if (voteAbi[index]) {
|
|
118
116
|
acc[voteAbi[index].name] = item;
|
|
@@ -120,7 +118,6 @@ const createVoteMap = (vote) => {
|
|
|
120
118
|
return acc;
|
|
121
119
|
}, {});
|
|
122
120
|
};
|
|
123
|
-
exports.createVoteMap = createVoteMap;
|
|
124
121
|
// export const checkTmCanForward = async () => {
|
|
125
122
|
// const vContract = getVotingContract();
|
|
126
123
|
// const signerAddress = await getSignerAddress(tmContract);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voting.js","sourceRoot":"","sources":["../../features/voting.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"voting.js","sourceRoot":"","sources":["../../features/voting.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require("./programs");
|
|
6
|
-
command_1.program.parse(process.argv);
|
|
2
|
+
import { program } from "./command/index.js";
|
|
3
|
+
import "./programs/index.js";
|
|
4
|
+
program.parse(process.argv);
|
|
7
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,qBAAqB,CAAC;AAE7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/programs/config.js
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const _utils_1 = require("../utils");
|
|
7
|
-
_command_1.program
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { program } from '../command/index.js';
|
|
4
|
+
import { validateConfig } from '../utils/index.js';
|
|
5
|
+
program
|
|
8
6
|
.command('conf <path>')
|
|
9
7
|
.description('Load and validate a JSON configuration file')
|
|
10
8
|
.action((filePath) => {
|
|
11
9
|
try {
|
|
12
|
-
const absolutePath =
|
|
13
|
-
if (!
|
|
14
|
-
|
|
10
|
+
const absolutePath = resolve(filePath);
|
|
11
|
+
if (!existsSync(absolutePath)) {
|
|
12
|
+
program.error(`File not found: ${absolutePath}`, { exitCode: 1 });
|
|
15
13
|
}
|
|
16
|
-
const rawData =
|
|
14
|
+
const rawData = readFileSync(absolutePath, 'utf-8');
|
|
17
15
|
const config = JSON.parse(rawData);
|
|
18
|
-
const errors =
|
|
16
|
+
const errors = validateConfig(config);
|
|
19
17
|
const errorKeys = Object.keys(errors);
|
|
20
18
|
if (errorKeys.length > 0) {
|
|
21
|
-
errorKeys.forEach((key) =>
|
|
19
|
+
errorKeys.forEach((key) => program.error(`${key} - ${errors[key]}`));
|
|
22
20
|
process.exit(1);
|
|
23
21
|
}
|
|
24
|
-
console.
|
|
22
|
+
console.info('Configuration is valid!');
|
|
25
23
|
}
|
|
26
24
|
catch (error) {
|
|
27
25
|
if (error instanceof Error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../programs/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../programs/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,mBAAmB,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACxB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,GAAuB,CAAC,EAAE,CAAC,CAC7D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|