@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.
@@ -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 [vault, nodeOperatorFeeRate, reserveRatioBP, totalMintingCapacityShares, withdrawableValue, nodeOperatorDisbursableFee, totalValue, locked,] = await Promise.all([
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 totalMintingCapacityStethWei = await stethContract.read.getPooledEthBySharesRoundUp([
27
- totalMintingCapacityShares,
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.AvailableToWithdrawal),
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
- ['Pending Unlock, ETH', formatEther(overview.PendingUnlock)],
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(overview.remainingMintingCapacitySteth),
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":"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"}
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
- AvailableToWithdrawal: bigint;
16
+ availableToWithdrawal: bigint;
19
17
  idleCapital: bigint;
20
18
  totalLocked: bigint;
21
19
  collateral: bigint;
22
- PendingUnlock: bigint;
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 BASIS_POINTS_DENOMINATOR = 10000n;
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, liabilitySharesInWei, forceRebalanceThresholdBP, withdrawableEther, balance, locked, nodeOperatorDisbursableFee, totalMintingCapacityStethWei, totalMintingCapacitySharesInWei, unsettledLidoFees, } = args;
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 AvailableToWithdrawal = withdrawableEther;
23
+ const availableToWithdrawal = withdrawableEther;
16
24
  const idleCapital = balance;
17
25
  const totalLocked = locked + nodeOperatorDisbursableFee + unsettledLidoFees;
18
- const RR = (BigInt(reserveRatioBP) * SCALING_FACTOR) / BASIS_POINTS_DENOMINATOR; // RR with SCALING_FACTOR
19
- const oneMinusRR = SCALING_FACTOR - RR; // (1 - RR) with SCALING_FACTOR
26
+ const RR = BigInt(reserveRatioBP);
27
+ const oneMinusRR = BASIS_POINTS - RR;
20
28
  const liabilityDivOneMinusRR = oneMinusRR === 0n
21
29
  ? 0n
22
- : (liabilitySharesInStethWei * SCALING_FACTOR) / oneMinusRR;
30
+ : ceilDiv(liabilitySharesInStethWei * BASIS_POINTS, oneMinusRR);
23
31
  const collateral = bigIntMax(parseEther('1'), liabilityDivOneMinusRR);
24
- const PendingUnlock = liabilityDivOneMinusRR <= parseEther('1')
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 * SCALING_FACTOR) / oneMinusRR -
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 * SCALING_FACTOR) /
43
+ : Number(((liabilitySharesInStethWei * BASIS_POINTS) /
38
44
  totalMintingCapacityStethWei) *
39
- 100n) / Number(SCALING_FACTOR);
45
+ 100n) / Number(BASIS_POINTS);
40
46
  return {
41
47
  healthRatio,
42
48
  isHealthy,
43
- AvailableToWithdrawal,
49
+ availableToWithdrawal,
44
50
  idleCapital,
45
51
  totalLocked,
46
52
  collateral,
47
- PendingUnlock,
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;AAiB/D,MAAM,wBAAwB,GAAG,MAAO,CAAC;AACzC,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,cAAc,GAAG,GAAG,IAAI,QAAQ,CAAC;AAEvC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,MAAM,SAAS,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAkB,EAAE,EAAE;IACxD,MAAM,EACJ,UAAU,EACV,cAAc,EACd,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,OAAO,EACP,MAAM,EACN,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,EAC/B,iBAAiB,GAClB,GAAG,IAAI,CAAC;IAET,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QACjD,UAAU;QACV,yBAAyB;QACzB,yBAAyB;KAC1B,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC;IAC5B,MAAM,WAAW,GAAG,MAAM,GAAG,0BAA0B,GAAG,iBAAiB,CAAC;IAC5E,MAAM,EAAE,GACN,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,GAAG,wBAAwB,CAAC,CAAC,yBAAyB;IACjG,MAAM,UAAU,GAAG,cAAc,GAAG,EAAE,CAAC,CAAC,+BAA+B;IACvE,MAAM,sBAAsB,GAC1B,UAAU,KAAK,EAAE;QACf,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,yBAAyB,GAAG,cAAc,CAAC,GAAG,UAAU,CAAC;IAEhE,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACtE,MAAM,aAAa,GACjB,sBAAsB,IAAI,UAAU,CAAC,GAAG,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACzC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,8BAA8B,GAClC,+BAA+B,GAAG,oBAAoB,CAAC;IACzD,MAAM,6BAA6B,GACjC,4BAA4B,GAAG,yBAAyB,CAAC;IAE3D,MAAM,iBAAiB,GACrB,UAAU,KAAK,EAAE;QACf,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,yBAAyB,GAAG,cAAc,CAAC,GAAG,UAAU;YACzD,yBAAyB,CAAC;IAChC,MAAM,QAAQ,GAAG,SAAS,CACxB,UAAU,GAAG,yBAAyB,EACtC,iBAAiB,CAClB,CAAC;IAEF,wBAAwB;IACxB,MAAM,gBAAgB,GACpB,4BAA4B,KAAK,EAAE;QACjC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAM,CACJ,CAAC,CAAC,yBAAyB,GAAG,cAAc,CAAC;YAC3C,4BAA4B,CAAC;YAC7B,IAAI,CACP,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAEjC,OAAO;QACL,WAAW;QACX,SAAS;QACT,qBAAqB;QACrB,WAAW;QACX,WAAW;QACX,UAAU;QACV,aAAa;QACb,gBAAgB;QAChB,QAAQ;QACR,4BAA4B;QAC5B,6BAA6B;QAC7B,8BAA8B;KAC/B,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"calculate-overview-v2.js","sourceRoot":"","sources":["../../utils/calculate-overview-v2.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export const version = 'v1.0.0-alpha.55'
1
+ export const version = 'v1.0.0-alpha.56'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lidofinance/lsv-cli",
3
- "version": "1.0.0-alpha.55",
3
+ "version": "1.0.0-alpha.56",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"