@lidofinance/lsv-cli 1.0.0-alpha.55 → 1.0.0-alpha.56
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/features/vault-operations/vault-overview.js +42 -10
- package/dist/features/vault-operations/vault-overview.js.map +1 -1
- package/dist/utils/calculate-overview-v2.d.ts +2 -6
- package/dist/utils/calculate-overview-v2.js +22 -18
- package/dist/utils/calculate-overview-v2.js.map +1 -1
- package/dist/version/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatEther } from 'viem';
|
|
2
|
-
import { getStethContract, getVaultHubContract, } from '../../contracts/index.js';
|
|
2
|
+
import { getOperatorGridContract, getStethContract, getVaultHubContract, } from '../../contracts/index.js';
|
|
3
3
|
import { getPublicClient } from '../../providers/index.js';
|
|
4
4
|
import { fetchAndCalculateVaultHealth, formatBP, formatRatio, showSpinner, logInfo, logTable, logResult, logLiabilityBar, logVaultHealthBar, printError, calculateOverviewV2, callReadMethodSilent, } from '../../utils/index.js';
|
|
5
5
|
export const getVaultOverviewByDashboard = async (contract) => {
|
|
@@ -7,7 +7,8 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
7
7
|
const publicClient = getPublicClient();
|
|
8
8
|
try {
|
|
9
9
|
const health = await fetchAndCalculateVaultHealth(contract);
|
|
10
|
-
const
|
|
10
|
+
const operatorGridContract = await getOperatorGridContract();
|
|
11
|
+
const [vault, nodeOperatorFeeRate, reserveRatioBP, totalMintingCapacityShares, withdrawableValue, nodeOperatorDisbursableFee, totalValue, locked, shareLimit, remainingMintingCapacityShares,] = await Promise.all([
|
|
11
12
|
contract.read.stakingVault(),
|
|
12
13
|
contract.read.nodeOperatorFeeRate(),
|
|
13
14
|
contract.read.reserveRatioBP(),
|
|
@@ -16,6 +17,8 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
16
17
|
contract.read.nodeOperatorDisbursableFee(),
|
|
17
18
|
contract.read.totalValue(),
|
|
18
19
|
contract.read.locked(),
|
|
20
|
+
contract.read.shareLimit(),
|
|
21
|
+
contract.read.remainingMintingCapacityShares([0n]),
|
|
19
22
|
]);
|
|
20
23
|
const stethContract = await getStethContract();
|
|
21
24
|
const vaultHubContract = await getVaultHubContract();
|
|
@@ -23,21 +26,32 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
23
26
|
address: vault,
|
|
24
27
|
});
|
|
25
28
|
const vaultObligation = await callReadMethodSilent(vaultHubContract, 'vaultObligations', [vault]);
|
|
26
|
-
const
|
|
27
|
-
|
|
29
|
+
const tierInfo = await callReadMethodSilent(operatorGridContract, 'vaultInfo', [vault]);
|
|
30
|
+
const isNoHaveGroup = tierInfo[0] === '0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF';
|
|
31
|
+
const nodeOperatorGroup = await callReadMethodSilent(operatorGridContract, 'group', [tierInfo[0]]);
|
|
32
|
+
const [totalMintingCapacityStethWei, shareLimitStethWei, tierShareLimitStethWei, groupShareLimitStethWei, remainingMintingCapacityStethWei,] = await Promise.all([
|
|
33
|
+
stethContract.read.getPooledEthBySharesRoundUp([
|
|
34
|
+
totalMintingCapacityShares,
|
|
35
|
+
]),
|
|
36
|
+
stethContract.read.getPooledEthBySharesRoundUp([shareLimit]),
|
|
37
|
+
stethContract.read.getPooledEthBySharesRoundUp([tierInfo[2]]),
|
|
38
|
+
stethContract.read.getPooledEthBySharesRoundUp([
|
|
39
|
+
nodeOperatorGroup.shareLimit,
|
|
40
|
+
]),
|
|
41
|
+
stethContract.read.getPooledEthBySharesRoundUp([
|
|
42
|
+
remainingMintingCapacityShares,
|
|
43
|
+
]),
|
|
28
44
|
]);
|
|
29
45
|
const overview = calculateOverviewV2({
|
|
30
46
|
totalValue,
|
|
31
47
|
reserveRatioBP,
|
|
32
48
|
liabilitySharesInStethWei: health.liabilitySharesInStethWei,
|
|
33
|
-
liabilitySharesInWei: health.liabilitySharesInWei,
|
|
34
49
|
forceRebalanceThresholdBP: health.forceRebalanceThresholdBP,
|
|
35
50
|
withdrawableEther: withdrawableValue,
|
|
36
51
|
balance,
|
|
37
52
|
locked,
|
|
38
53
|
nodeOperatorDisbursableFee,
|
|
39
54
|
totalMintingCapacityStethWei,
|
|
40
|
-
totalMintingCapacitySharesInWei: totalMintingCapacityShares,
|
|
41
55
|
unsettledLidoFees: vaultObligation.unsettledLidoFees,
|
|
42
56
|
});
|
|
43
57
|
hideSpinner();
|
|
@@ -51,6 +65,8 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
51
65
|
'Force Rebalance Threshold',
|
|
52
66
|
formatBP(health.forceRebalanceThresholdBP),
|
|
53
67
|
],
|
|
68
|
+
['stVault Share Limit, stETH', formatEther(shareLimitStethWei)],
|
|
69
|
+
['stVault Share Limit, Shares', formatEther(shareLimit)],
|
|
54
70
|
['Node Operator Fee Rate, %', formatBP(nodeOperatorFeeRate)],
|
|
55
71
|
['Utilization Ratio, %', formatRatio(overview.utilizationRatio)],
|
|
56
72
|
['Total Value, ETH', formatEther(totalValue)],
|
|
@@ -58,12 +74,13 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
58
74
|
['Liability, Shares', formatEther(health.liabilitySharesInWei)],
|
|
59
75
|
[
|
|
60
76
|
'Available To Withdrawal, ETH',
|
|
61
|
-
formatEther(overview.
|
|
77
|
+
formatEther(overview.availableToWithdrawal),
|
|
62
78
|
],
|
|
63
79
|
['Idle Capital, ETH', formatEther(overview.idleCapital)],
|
|
80
|
+
['Locked, ETH', formatEther(locked)],
|
|
64
81
|
['Total Locked, ETH', formatEther(overview.totalLocked)],
|
|
65
82
|
['Collateral, ETH', formatEther(overview.collateral)],
|
|
66
|
-
['
|
|
83
|
+
['Recently Repaid, ETH', formatEther(overview.recentlyRepaid)],
|
|
67
84
|
[
|
|
68
85
|
'Node Operator Disbursable Fee, ETH',
|
|
69
86
|
formatEther(nodeOperatorDisbursableFee),
|
|
@@ -75,7 +92,11 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
75
92
|
],
|
|
76
93
|
[
|
|
77
94
|
'Remaining Minting Capacity, stETH',
|
|
78
|
-
formatEther(
|
|
95
|
+
formatEther(remainingMintingCapacityStethWei),
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
'Remaining Minting Capacity, Shares',
|
|
99
|
+
formatEther(remainingMintingCapacityShares),
|
|
79
100
|
],
|
|
80
101
|
[
|
|
81
102
|
'Unsettled Lido Fees, ETH',
|
|
@@ -86,6 +107,17 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
86
107
|
formatEther(vaultObligation.settledLidoFees),
|
|
87
108
|
],
|
|
88
109
|
['Redemptions, ETH', formatEther(vaultObligation.redemptions)],
|
|
110
|
+
['Tier ID', tierInfo[1]],
|
|
111
|
+
['Tier Share Limit, stETH', formatEther(tierShareLimitStethWei)],
|
|
112
|
+
['Tier Share Limit, Shares', formatEther(tierInfo[2])],
|
|
113
|
+
[
|
|
114
|
+
'Group Share Limit, stETH',
|
|
115
|
+
isNoHaveGroup ? 'N/A' : formatEther(groupShareLimitStethWei),
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
'Group Share Limit, Shares',
|
|
119
|
+
isNoHaveGroup ? 'N/A' : formatEther(nodeOperatorGroup.shareLimit),
|
|
120
|
+
],
|
|
89
121
|
],
|
|
90
122
|
});
|
|
91
123
|
logLiabilityBar({
|
|
@@ -100,7 +132,7 @@ export const getVaultOverviewByDashboard = async (contract) => {
|
|
|
100
132
|
console.info('\n');
|
|
101
133
|
}
|
|
102
134
|
catch (err) {
|
|
103
|
-
hideSpinner();
|
|
135
|
+
// hideSpinner();
|
|
104
136
|
printError(err, 'Error when getting overview');
|
|
105
137
|
}
|
|
106
138
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-overview.js","sourceRoot":"","sources":["../../../features/vault-operations/vault-overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAEL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,4BAA4B,EAC5B,QAAQ,EACR,WAAW,EACX,WAAW,EACX,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAEf,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAC9C,QAA2B,EAC3B,EAAE;IACF,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CACJ,KAAK,EACL,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,iBAAiB,EACjB,0BAA0B,EAC1B,UAAU,EACV,MAAM,
|
|
1
|
+
{"version":3,"file":"vault-overview.js","sourceRoot":"","sources":["../../../features/vault-operations/vault-overview.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,28 +2,24 @@ type OverviewArgs = {
|
|
|
2
2
|
totalValue: bigint;
|
|
3
3
|
reserveRatioBP: number;
|
|
4
4
|
liabilitySharesInStethWei: bigint;
|
|
5
|
-
liabilitySharesInWei: bigint;
|
|
6
5
|
forceRebalanceThresholdBP: number;
|
|
7
6
|
withdrawableEther: bigint;
|
|
8
7
|
balance: bigint;
|
|
9
8
|
locked: bigint;
|
|
10
9
|
nodeOperatorDisbursableFee: bigint;
|
|
11
10
|
totalMintingCapacityStethWei: bigint;
|
|
12
|
-
totalMintingCapacitySharesInWei: bigint;
|
|
13
11
|
unsettledLidoFees: bigint;
|
|
14
12
|
};
|
|
15
13
|
export declare const calculateOverviewV2: (args: OverviewArgs) => {
|
|
16
14
|
healthRatio: number;
|
|
17
15
|
isHealthy: boolean;
|
|
18
|
-
|
|
16
|
+
availableToWithdrawal: bigint;
|
|
19
17
|
idleCapital: bigint;
|
|
20
18
|
totalLocked: bigint;
|
|
21
19
|
collateral: bigint;
|
|
22
|
-
|
|
20
|
+
recentlyRepaid: bigint;
|
|
23
21
|
utilizationRatio: number;
|
|
24
22
|
reserved: bigint;
|
|
25
23
|
totalMintingCapacityStethWei: bigint;
|
|
26
|
-
remainingMintingCapacitySteth: bigint;
|
|
27
|
-
remainingMintingCapacityShares: bigint;
|
|
28
24
|
};
|
|
29
25
|
export {};
|
|
@@ -1,55 +1,59 @@
|
|
|
1
1
|
import { parseEther } from 'viem';
|
|
2
2
|
import { calculateHealth } from './health/calculate-health.js';
|
|
3
|
-
const
|
|
4
|
-
const DECIMALS = 18n;
|
|
5
|
-
const SCALING_FACTOR = 10n ** DECIMALS;
|
|
3
|
+
const BASIS_POINTS = 10000n;
|
|
6
4
|
const bigIntMax = (...args) => args.reduce((a, b) => (a > b ? a : b));
|
|
7
5
|
const bigIntMin = (...args) => args.reduce((a, b) => (a < b ? a : b));
|
|
6
|
+
/**
|
|
7
|
+
* Performs division with rounding up (ceiling division) for bigint values
|
|
8
|
+
* @param numerator - The dividend
|
|
9
|
+
* @param denominator - The divisor
|
|
10
|
+
* @returns The result of division rounded up
|
|
11
|
+
*/
|
|
12
|
+
const ceilDiv = (numerator, denominator) => {
|
|
13
|
+
const result = numerator / denominator;
|
|
14
|
+
return numerator % denominator === 0n ? result : result + 1n;
|
|
15
|
+
};
|
|
8
16
|
export const calculateOverviewV2 = (args) => {
|
|
9
|
-
const { totalValue, reserveRatioBP, liabilitySharesInStethWei,
|
|
17
|
+
const { totalValue, reserveRatioBP, liabilitySharesInStethWei, forceRebalanceThresholdBP, withdrawableEther, balance, locked, nodeOperatorDisbursableFee, totalMintingCapacityStethWei, unsettledLidoFees, } = args;
|
|
10
18
|
const { healthRatio, isHealthy } = calculateHealth({
|
|
11
19
|
totalValue,
|
|
12
20
|
liabilitySharesInStethWei,
|
|
13
21
|
forceRebalanceThresholdBP,
|
|
14
22
|
});
|
|
15
|
-
const
|
|
23
|
+
const availableToWithdrawal = withdrawableEther;
|
|
16
24
|
const idleCapital = balance;
|
|
17
25
|
const totalLocked = locked + nodeOperatorDisbursableFee + unsettledLidoFees;
|
|
18
|
-
const RR =
|
|
19
|
-
const oneMinusRR =
|
|
26
|
+
const RR = BigInt(reserveRatioBP);
|
|
27
|
+
const oneMinusRR = BASIS_POINTS - RR;
|
|
20
28
|
const liabilityDivOneMinusRR = oneMinusRR === 0n
|
|
21
29
|
? 0n
|
|
22
|
-
: (liabilitySharesInStethWei *
|
|
30
|
+
: ceilDiv(liabilitySharesInStethWei * BASIS_POINTS, oneMinusRR);
|
|
23
31
|
const collateral = bigIntMax(parseEther('1'), liabilityDivOneMinusRR);
|
|
24
|
-
const
|
|
32
|
+
const recentlyRepaid = liabilityDivOneMinusRR <= parseEther('1')
|
|
25
33
|
? bigIntMax(locked - parseEther('1'), 0n)
|
|
26
34
|
: bigIntMax(locked - liabilityDivOneMinusRR, 0n);
|
|
27
|
-
const remainingMintingCapacityShares = totalMintingCapacitySharesInWei - liabilitySharesInWei;
|
|
28
|
-
const remainingMintingCapacitySteth = totalMintingCapacityStethWei - liabilitySharesInStethWei;
|
|
29
35
|
const reservedByFormula = oneMinusRR === 0n
|
|
30
36
|
? 0n
|
|
31
|
-
: (liabilitySharesInStethWei *
|
|
37
|
+
: ceilDiv(liabilitySharesInStethWei * BASIS_POINTS, oneMinusRR) -
|
|
32
38
|
liabilitySharesInStethWei;
|
|
33
39
|
const reserved = bigIntMin(totalValue - liabilitySharesInStethWei, reservedByFormula);
|
|
34
40
|
// Prevent division by 0
|
|
35
41
|
const utilizationRatio = totalMintingCapacityStethWei === 0n
|
|
36
42
|
? 0
|
|
37
|
-
: Number(((liabilitySharesInStethWei *
|
|
43
|
+
: Number(((liabilitySharesInStethWei * BASIS_POINTS) /
|
|
38
44
|
totalMintingCapacityStethWei) *
|
|
39
|
-
100n) / Number(
|
|
45
|
+
100n) / Number(BASIS_POINTS);
|
|
40
46
|
return {
|
|
41
47
|
healthRatio,
|
|
42
48
|
isHealthy,
|
|
43
|
-
|
|
49
|
+
availableToWithdrawal,
|
|
44
50
|
idleCapital,
|
|
45
51
|
totalLocked,
|
|
46
52
|
collateral,
|
|
47
|
-
|
|
53
|
+
recentlyRepaid,
|
|
48
54
|
utilizationRatio,
|
|
49
55
|
reserved,
|
|
50
56
|
totalMintingCapacityStethWei,
|
|
51
|
-
remainingMintingCapacitySteth,
|
|
52
|
-
remainingMintingCapacityShares,
|
|
53
57
|
};
|
|
54
58
|
};
|
|
55
59
|
//# sourceMappingURL=calculate-overview-v2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-overview-v2.js","sourceRoot":"","sources":["../../utils/calculate-overview-v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"calculate-overview-v2.js","sourceRoot":"","sources":["../../utils/calculate-overview-v2.ts"],"names":[],"mappings":"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"}
|
package/dist/version/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = 'v1.0.0-alpha.
|
|
1
|
+
export const version = 'v1.0.0-alpha.56'
|