@lidofinance/lsv-cli 1.0.0-alpha.61 → 1.0.0-alpha.62

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.
Files changed (166) hide show
  1. package/README.md +1 -1
  2. package/dist/abi/Dashboard.d.ts +706 -445
  3. package/dist/abi/Dashboard.js +331 -300
  4. package/dist/abi/Dashboard.js.map +1 -1
  5. package/dist/abi/LazyOracle.d.ts +278 -27
  6. package/dist/abi/LazyOracle.js +352 -27
  7. package/dist/abi/LazyOracle.js.map +1 -1
  8. package/dist/abi/LidoLocator.d.ts +28 -0
  9. package/dist/abi/LidoLocator.js +36 -0
  10. package/dist/abi/LidoLocator.js.map +1 -1
  11. package/dist/abi/OperatorGrid.d.ts +166 -1
  12. package/dist/abi/OperatorGrid.js +174 -1
  13. package/dist/abi/OperatorGrid.js.map +1 -1
  14. package/dist/abi/PredepositGuarantee.d.ts +181 -139
  15. package/dist/abi/PredepositGuarantee.js +191 -166
  16. package/dist/abi/PredepositGuarantee.js.map +1 -1
  17. package/dist/abi/StEth.d.ts +1 -1
  18. package/dist/abi/StEth.js +1 -1
  19. package/dist/abi/StEth.js.map +1 -1
  20. package/dist/abi/StakingVault.d.ts +184 -32
  21. package/dist/abi/StakingVault.js +203 -37
  22. package/dist/abi/StakingVault.js.map +1 -1
  23. package/dist/abi/VaultFactory.d.ts +470 -72
  24. package/dist/abi/VaultFactory.js +24 -1
  25. package/dist/abi/VaultFactory.js.map +1 -1
  26. package/dist/abi/VaultHub.d.ts +416 -420
  27. package/dist/abi/VaultHub.js +349 -398
  28. package/dist/abi/VaultHub.js.map +1 -1
  29. package/dist/abi/VaultViewer.d.ts +74 -42
  30. package/dist/abi/VaultViewer.js +82 -42
  31. package/dist/abi/VaultViewer.js.map +1 -1
  32. package/dist/abi/index.d.ts +0 -2
  33. package/dist/abi/index.js +0 -2
  34. package/dist/abi/index.js.map +1 -1
  35. package/dist/contracts/index.d.ts +0 -1
  36. package/dist/contracts/index.js +0 -1
  37. package/dist/contracts/index.js.map +1 -1
  38. package/dist/contracts/locator.d.ts +1428 -12
  39. package/dist/contracts/steth.d.ts +74 -74
  40. package/dist/contracts/vault-factory.d.ts +15731 -5838
  41. package/dist/contracts/vault-viewer.d.ts +1360 -768
  42. package/dist/contracts/vault-viewer.js +1 -1
  43. package/dist/features/index.d.ts +1 -0
  44. package/dist/features/index.js +1 -0
  45. package/dist/features/index.js.map +1 -1
  46. package/dist/features/lazy-oracle.d.ts +1 -0
  47. package/dist/features/lazy-oracle.js +42 -0
  48. package/dist/features/lazy-oracle.js.map +1 -0
  49. package/dist/features/vault-hub.js +0 -4
  50. package/dist/features/vault-hub.js.map +1 -1
  51. package/dist/features/vault-operations/dashboard-by-vault.d.ts +2 -1
  52. package/dist/features/vault-operations/dashboard-by-vault.js +3 -1
  53. package/dist/features/vault-operations/dashboard-by-vault.js.map +1 -1
  54. package/dist/features/vault-operations/vault-health.js +2 -2
  55. package/dist/features/vault-operations/vault-health.js.map +1 -1
  56. package/dist/features/vault-operations/vault-info.js +29 -32
  57. package/dist/features/vault-operations/vault-info.js.map +1 -1
  58. package/dist/features/vault-operations/vault-overview.js +35 -28
  59. package/dist/features/vault-operations/vault-overview.js.map +1 -1
  60. package/dist/features/vault-operations/vault-roles.d.ts +1 -1
  61. package/dist/features/vault-operations/vault-roles.js +6 -6
  62. package/dist/features/vault-operations/vault-roles.js.map +1 -1
  63. package/dist/features/vault.js +4 -2
  64. package/dist/features/vault.js.map +1 -1
  65. package/dist/index.js +8 -3
  66. package/dist/index.js.map +1 -1
  67. package/dist/programs/contracts/dashboard/config.js +49 -40
  68. package/dist/programs/contracts/dashboard/config.js.map +1 -1
  69. package/dist/programs/contracts/dashboard/read.js +38 -3
  70. package/dist/programs/contracts/dashboard/read.js.map +1 -1
  71. package/dist/programs/contracts/dashboard/write.js +121 -84
  72. package/dist/programs/contracts/dashboard/write.js.map +1 -1
  73. package/dist/programs/contracts/hub/config.js +7 -17
  74. package/dist/programs/contracts/hub/config.js.map +1 -1
  75. package/dist/programs/contracts/hub/write.js +7 -69
  76. package/dist/programs/contracts/hub/write.js.map +1 -1
  77. package/dist/programs/contracts/lazy-oracle/config.js +5 -0
  78. package/dist/programs/contracts/lazy-oracle/config.js.map +1 -1
  79. package/dist/programs/contracts/lazy-oracle/read.js +7 -0
  80. package/dist/programs/contracts/lazy-oracle/read.js.map +1 -1
  81. package/dist/programs/contracts/operator-grid/config.js +21 -10
  82. package/dist/programs/contracts/operator-grid/config.js.map +1 -1
  83. package/dist/programs/contracts/operator-grid/read.js +21 -1
  84. package/dist/programs/contracts/operator-grid/read.js.map +1 -1
  85. package/dist/programs/contracts/operator-grid/write.js +48 -6
  86. package/dist/programs/contracts/operator-grid/write.js.map +1 -1
  87. package/dist/programs/contracts/pdg/config.js +9 -2
  88. package/dist/programs/contracts/pdg/config.js.map +1 -1
  89. package/dist/programs/contracts/pdg/read.js +16 -1
  90. package/dist/programs/contracts/pdg/read.js.map +1 -1
  91. package/dist/programs/contracts/pdg/write.js +26 -89
  92. package/dist/programs/contracts/pdg/write.js.map +1 -1
  93. package/dist/programs/contracts/vault/config.js +12 -0
  94. package/dist/programs/contracts/vault/config.js.map +1 -1
  95. package/dist/programs/contracts/vault/write.js +84 -20
  96. package/dist/programs/contracts/vault/write.js.map +1 -1
  97. package/dist/programs/use-cases/deposits/read.js +19 -2
  98. package/dist/programs/use-cases/deposits/read.js.map +1 -1
  99. package/dist/programs/use-cases/deposits/write.js +22 -32
  100. package/dist/programs/use-cases/deposits/write.js.map +1 -1
  101. package/dist/programs/use-cases/metrics/read.js +7 -6
  102. package/dist/programs/use-cases/metrics/read.js.map +1 -1
  103. package/dist/programs/use-cases/report/read.js +14 -7
  104. package/dist/programs/use-cases/report/read.js.map +1 -1
  105. package/dist/programs/use-cases/report/write.js +4 -2
  106. package/dist/programs/use-cases/report/write.js.map +1 -1
  107. package/dist/programs/use-cases/vault-operations/create-vault.js +6 -2
  108. package/dist/programs/use-cases/vault-operations/create-vault.js.map +1 -1
  109. package/dist/programs/use-cases/vault-operations/write.js +98 -8
  110. package/dist/programs/use-cases/vault-operations/write.js.map +1 -1
  111. package/dist/providers/wallet.d.ts +60 -60
  112. package/dist/tests/utils/calculate-overview.test.js +1 -1
  113. package/dist/tests/utils/calculate-overview.test.js.map +1 -1
  114. package/dist/tests/utils/health.test.js +2 -2
  115. package/dist/tests/utils/health.test.js.map +1 -1
  116. package/dist/types/common.d.ts +4 -0
  117. package/dist/utils/arguments.d.ts +3 -1
  118. package/dist/utils/arguments.js +39 -0
  119. package/dist/utils/arguments.js.map +1 -1
  120. package/dist/utils/calculate-overview-v2.d.ts +4 -2
  121. package/dist/utils/calculate-overview-v2.js +5 -8
  122. package/dist/utils/calculate-overview-v2.js.map +1 -1
  123. package/dist/utils/calculate-overview.d.ts +1 -1
  124. package/dist/utils/calculate-overview.js +2 -2
  125. package/dist/utils/calculate-overview.js.map +1 -1
  126. package/dist/utils/charts/blessed/charts-apr.js +2 -1
  127. package/dist/utils/charts/blessed/charts-apr.js.map +1 -1
  128. package/dist/utils/charts/blessed/charts-rewards.js +2 -1
  129. package/dist/utils/charts/blessed/charts-rewards.js.map +1 -1
  130. package/dist/utils/charts/overview.d.ts +1 -1
  131. package/dist/utils/charts/overview.js +1 -1
  132. package/dist/utils/charts/overview.js.map +1 -1
  133. package/dist/utils/charts/simple/simple-charts.js +2 -1
  134. package/dist/utils/charts/simple/simple-charts.js.map +1 -1
  135. package/dist/utils/commands/confirmations.d.ts +7 -3
  136. package/dist/utils/commands/confirmations.js +39 -29
  137. package/dist/utils/commands/confirmations.js.map +1 -1
  138. package/dist/utils/commands/report.js +2 -1
  139. package/dist/utils/commands/report.js.map +1 -1
  140. package/dist/utils/health/calculate-health.d.ts +1 -1
  141. package/dist/utils/health/calculate-health.js +2 -2
  142. package/dist/utils/health/calculate-health.js.map +1 -1
  143. package/dist/utils/health/health-utils.d.ts +77 -77
  144. package/dist/utils/health/health-utils.js +11 -10
  145. package/dist/utils/health/health-utils.js.map +1 -1
  146. package/dist/utils/report/report.js +1 -0
  147. package/dist/utils/report/report.js.map +1 -1
  148. package/dist/utils/report/statistic-data.js +2 -2
  149. package/dist/utils/report/statistic-data.js.map +1 -1
  150. package/dist/utils/report/types.d.ts +10 -2
  151. package/dist/utils/statistic/report-statistic.js +13 -14
  152. package/dist/utils/statistic/report-statistic.js.map +1 -1
  153. package/dist/utils/transactions/tx-wc.js +15 -2
  154. package/dist/utils/transactions/tx-wc.js.map +1 -1
  155. package/dist/utils/wallet-connect.d.ts +40 -40
  156. package/dist/version/index.js +1 -1
  157. package/package.json +12 -2
  158. package/dist/abi/TokenManager.d.ts +0 -577
  159. package/dist/abi/TokenManager.js +0 -756
  160. package/dist/abi/TokenManager.js.map +0 -1
  161. package/dist/abi/Voting.d.ts +0 -676
  162. package/dist/abi/Voting.js +0 -884
  163. package/dist/abi/Voting.js.map +0 -1
  164. package/dist/contracts/token-manager.d.ts +0 -3
  165. package/dist/contracts/token-manager.js +0 -13
  166. package/dist/contracts/token-manager.js.map +0 -1
@@ -16,18 +16,6 @@ export const readCommandConfig = {
16
16
  name: 'total-value',
17
17
  description: 'get the total value of the vault in ether',
18
18
  },
19
- infraFeeBP: {
20
- name: 'infra-fee',
21
- description: 'get infra fee basis points.',
22
- },
23
- liquidityFeeBP: {
24
- name: 'liquidity-fee',
25
- description: 'get liquidity fee basis points',
26
- },
27
- reservationFeeBP: {
28
- name: 'reservation-fee',
29
- description: 'get reservation fee basis points',
30
- },
31
19
  totalMintingCapacityShares: {
32
20
  name: 'total-minting-capacity',
33
21
  description: 'get the overall capacity for stETH shares that can be minted by the vault',
@@ -40,18 +28,6 @@ export const readCommandConfig = {
40
28
  name: 'liability-shares',
41
29
  description: 'get the number of stETHshares minted',
42
30
  },
43
- shareLimit: {
44
- name: 's-limit',
45
- description: 'get the stETH share limit of the vault',
46
- },
47
- reserveRatioBP: {
48
- name: 'reserve-ratio',
49
- description: 'get reserve ratio in basis points',
50
- },
51
- forcedRebalanceThresholdBP: {
52
- name: 'force-rebalance-threshold',
53
- description: 'get the rebalance threshold of the vault in basis points',
54
- },
55
31
  remainingMintingCapacityShares: {
56
32
  name: 'remaining-minting-capacity',
57
33
  description: 'get the remaining capacity for stETH shares that can be minted by the vault if additional ether is funded',
@@ -71,22 +47,14 @@ export const readCommandConfig = {
71
47
  name: 'has-role',
72
48
  description: 'get has role by role and account',
73
49
  },
74
- nodeOperatorDisbursableFee: {
75
- name: 'no-disbursable-fee',
76
- description: 'get the node operator`s disbursable fee',
77
- },
78
- feePeriodStartReport: {
79
- name: 'no-fee-report',
80
- description: 'get last report for which node operator fee was disbursed. Updated on each disbursement',
50
+ accruedFee: {
51
+ name: 'no-accrued-fee',
52
+ description: 'get the node operator`s accrued fee',
81
53
  },
82
- nodeOperatorFeeRate: {
54
+ feeRate: {
83
55
  name: 'no-fee-rate',
84
56
  description: 'get node operator fee rate in basis points',
85
57
  },
86
- rewardsAdjustment: {
87
- name: 'rewards-adjustment',
88
- description: 'get rewards offset that excludes side deposits and consolidations',
89
- },
90
58
  confirmation: {
91
59
  name: 'confirmation',
92
60
  description: 'get the confirmation expiry for a given call data and confirmer',
@@ -95,10 +63,6 @@ export const readCommandConfig = {
95
63
  name: 'get-confirm-expiry',
96
64
  description: 'get the confirmation expiry',
97
65
  },
98
- MANUAL_REWARDS_ADJUSTMENT_LIMIT: {
99
- name: 'manual-rewards-adjustment-limit',
100
- description: 'get the maximum value that can be set via manual adjustment',
101
- },
102
66
  MAX_CONFIRM_EXPIRY: {
103
67
  name: 'MAX_CONFIRM_EXPIRY',
104
68
  description: 'get the max confirm expiry',
@@ -111,5 +75,50 @@ export const readCommandConfig = {
111
75
  name: 'supports-interface',
112
76
  description: 'get supports interface by id',
113
77
  },
78
+ healthShortfallShares: {
79
+ name: 'health-shortfall-shares',
80
+ description: 'get the amount of shares to rebalance to restore vault healthiness or to cover redemptions',
81
+ },
82
+ minimalReserve: {
83
+ name: 'minimal-reserve',
84
+ description: 'get the amount of ether that is locked on the vault only as a reserve',
85
+ },
86
+ obligations: {
87
+ name: 'obligations',
88
+ description: 'get the amount of shares to burn to restore vault healthiness or to cover redemptions and the amount of outstanding Lido fees',
89
+ },
90
+ feeRecipient: {
91
+ name: 'node-operator-fee-recipient',
92
+ description: 'get the address of the node operator fee recipient',
93
+ },
94
+ maxLockableValue: {
95
+ name: 'max-lockable-value',
96
+ description: 'get the max total lockable amount of ether for the vault (excluding the Lido and node operator fees)',
97
+ },
98
+ latestReport: {
99
+ name: 'latest-report',
100
+ aliases: ['lr'],
101
+ description: 'get the latest report data containing the total value and in-out delta',
102
+ },
103
+ settledGrowth: {
104
+ name: 'settled-growth',
105
+ description: 'get settled growth of the vault not subject to fees',
106
+ },
107
+ pdgPolicy: {
108
+ name: 'pdg-policy',
109
+ description: 'get the current active PDG policy set by `DEFAULT_ADMIN_ROLE`',
110
+ },
111
+ latestCorrectionTimestamp: {
112
+ name: 'latest-correction-timestamp',
113
+ description: 'get the timestamp of the most recent settled growth correction',
114
+ },
115
+ isApprovedToConnect: {
116
+ name: 'is-approved-to-connect',
117
+ description: 'get the flag indicating whether the vault is approved by the node operator to connect to VaultHub',
118
+ },
119
+ obligationsShortfallValue: {
120
+ name: 'obligations-shortfall-value',
121
+ description: 'get the amount of ether required to cover obligations shortfall of the vault',
122
+ },
114
123
  };
115
124
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../programs/contracts/dashboard/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAC5B;IACE,iBAAiB,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kEAAkE;KACrE;IACD,eAAe,EAAE;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sBAAsB;KACpC;IACD,SAAS,EAAE;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,sBAAsB;KACpC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2CAA2C;KACzD;IACD,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6BAA6B;KAC3C;IACD,cAAc,EAAE;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,gCAAgC;KAC9C;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,kCAAkC;KAChD;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,2EAA2E;KAC9E;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;KACzC;IACD,eAAe,EAAE;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sCAAsC;KACpD;IACD,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wCAAwC;KACtD;IACD,cAAc,EAAE;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,mCAAmC;KACjD;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,0DAA0D;KACxE;IACD,8BAA8B,EAAE;QAC9B,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACT,2GAA2G;QAC7G,SAAS,EAAE;YACT,YAAY,EAAE;gBACZ,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,+CAA+C;gBAC5D,QAAQ,EAAE,UAAU;aACrB;SACF;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8CAA8C;KAC5D;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kCAAkC;KAChD;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,yCAAyC;KACvD;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,yFAAyF;KAC5F;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,4CAA4C;KAC1D;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,mEAAmE;KACtE;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,iEAAiE;KACpE;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,6BAA6B;KAC3C;IACD,+BAA+B,EAAE;QAC/B,IAAI,EAAE,iCAAiC;QACvC,WAAW,EACT,6DAA6D;KAChE;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,4BAA4B;KAC1C;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,4BAA4B;KAC1C;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,8BAA8B;KAC5C;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../programs/contracts/dashboard/config.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Option } from 'commander';
2
2
  import { DashboardAbi } from '../../../abi/index.js';
3
3
  import { getDashboardBaseInfo, getDashboardRoles, getDashboardHealth, getDashboardOverview, } from '../../../features/index.js';
4
4
  import { getDashboardContract, getVaultHubContract } from '../../../contracts/index.js';
5
- import { generateReadCommands, logResult, logInfo, getCommandsJson, stringToAddress, callReadMethodSilent, getConfirmationsInfo, } from '../../../utils/index.js';
5
+ import { generateReadCommands, logResult, logInfo, getCommandsJson, stringToAddress, callReadMethodSilent, getConfirmationsInfo, logTable, } from '../../../utils/index.js';
6
6
  import { dashboard } from './main.js';
7
7
  import { readCommandConfig } from './config.js';
8
8
  const dashboardRead = dashboard
@@ -58,17 +58,52 @@ dashboardRead
58
58
  data: [['Dashboard Address', vaultConnection.owner]],
59
59
  });
60
60
  });
61
+ dashboardRead
62
+ .command('vault-by-dashboard')
63
+ .description('get vault address by dashboard')
64
+ .argument('<dashboard>', 'dashboard address', stringToAddress)
65
+ .action(async (dashboard) => {
66
+ const dashboardContract = getDashboardContract(dashboard);
67
+ const vault = await callReadMethodSilent(dashboardContract, 'stakingVault');
68
+ logResult({
69
+ data: [['Vault Address', vault]],
70
+ });
71
+ });
61
72
  dashboardRead
62
73
  .command('confirmations-log')
63
74
  .description('get pending confirmations')
64
75
  .argument('<address>', 'dashboard address', stringToAddress)
65
76
  .action(async (address) => {
66
77
  const contract = getDashboardContract(address);
67
- await getConfirmationsInfo(contract, contract.abi);
78
+ const confirmations = await getConfirmationsInfo(contract, contract.abi);
79
+ if (!confirmations)
80
+ return console.error('No confirmations found');
81
+ logResult({});
82
+ Object.entries(confirmations).forEach(([data, { member, role, expiryTimestamp, expiryDate, decodedData }], idx) => {
83
+ console.info(`\nEvent ${idx + 1}`);
84
+ logTable({
85
+ data: [
86
+ ['Member', member],
87
+ ['Role', role],
88
+ [
89
+ 'Expiry Timestamp',
90
+ `${expiryTimestamp.toString()} (${expiryDate})`,
91
+ ],
92
+ ['Data', data],
93
+ ],
94
+ });
95
+ console.info('Decoded data:');
96
+ logTable({
97
+ data: [
98
+ ['Function', decodedData.functionName],
99
+ ['Argument', decodedData.args[0]],
100
+ ],
101
+ });
102
+ });
68
103
  });
69
104
  dashboardRead
70
105
  .command('confirming-roles')
71
- .description('get confirming roles')
106
+ .description('get the roles that can:change the confirm expiry, set the node operator fee, set a new owner of the StakingVault')
72
107
  .argument('<address>', 'dashboard address', stringToAddress)
73
108
  .action(async (address) => {
74
109
  const contract = getDashboardContract(address);
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../programs/contracts/dashboard/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../programs/contracts/dashboard/read.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { parseEther, formatEther } from 'viem';
2
2
  import { Option } from 'commander';
3
- import { getAccount } from '../../../providers/index.js';
4
- import { getDashboardContract, getStakingVaultContract } from '../../../contracts/index.js';
3
+ import { getDashboardContract, getOperatorGridContract, getStakingVaultContract, } from '../../../contracts/index.js';
5
4
  import { mintShares, burnShares, mintSteth, burnSteth, checkIsReportFresh, } from '../../../features/index.js';
6
- import { callReadMethod, callWriteMethodWithReceipt, jsonToRoleAssignment, confirmOperation, stringToBigInt, parseDepositArray, logInfo, getCommandsJson, stringToAddress, createPDGProof, confirmProposal, formatBP, callReadMethodSilent, showSpinner, stringToBigIntArrayWei, stringToHexArray, etherToWei, } from '../../../utils/index.js';
5
+ import { callReadMethod, callWriteMethodWithReceipt, jsonToRoleAssignment, confirmOperation, stringToBigInt, parseDepositArray, logInfo, getCommandsJson, stringToAddress, createPDGProof, confirmProposal, formatBP, callReadMethodSilent, showSpinner, stringToBigIntArrayWei, stringToHexArray, etherToWei, stringToNumber, } from '../../../utils/index.js';
7
6
  import { dashboard } from './main.js';
8
7
  const dashboardWrite = dashboard
9
8
  .command('write')
@@ -124,10 +123,11 @@ dashboardWrite
124
123
  const confirm = await confirmOperation(confirmationMessage);
125
124
  if (!confirm)
126
125
  return;
126
+ const gweiAmounts = amounts.map((amount) => parseEther(formatEther(amount), 'gwei'));
127
127
  await callWriteMethodWithReceipt({
128
128
  contract,
129
129
  methodName: 'triggerValidatorWithdrawals',
130
- payload: [mergedPubkeys, amounts.map(BigInt), recipient],
130
+ payload: [mergedPubkeys, gweiAmounts, recipient],
131
131
  value: fee,
132
132
  });
133
133
  });
@@ -204,13 +204,14 @@ dashboardWrite
204
204
  .action(async (address, ether) => {
205
205
  const contract = getDashboardContract(address);
206
206
  const vault = await callReadMethod(contract, 'stakingVault');
207
- const confirm = await confirmOperation(`Are you sure you want to rebalance the vault ${vault} with ${formatEther(ether)} ether?`);
207
+ const confirm = await confirmOperation(`Are you sure you want to rebalance the vault ${vault} with ${formatEther(ether)} ether by transferring?`);
208
208
  if (!confirm)
209
209
  return;
210
210
  await callWriteMethodWithReceipt({
211
211
  contract,
212
212
  methodName: 'rebalanceVaultWithEther',
213
213
  payload: [ether],
214
+ value: ether,
214
215
  });
215
216
  });
216
217
  dashboardWrite
@@ -232,38 +233,38 @@ dashboardWrite
232
233
  });
233
234
  dashboardWrite
234
235
  .command('recover-erc20')
235
- .description('recovers ERC20 tokens or ether from the dashboard contract to sender')
236
+ .description('recovers ERC20 tokens or ether from the dashboard contract to the recipient')
236
237
  .argument('<address>', 'dashboard address', stringToAddress)
237
- .argument('<token>', 'Address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether')
238
- .argument('<recipient>', 'Address of the recovery recipient', stringToAddress)
239
- .argument('<amount>', 'amount of ether to recover (in ETH)')
240
- .action(async (address, token, recipient, amount) => {
238
+ .argument('<token>', 'address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether (EIP-7528)', stringToAddress)
239
+ .argument('<amount>', 'amount of tokens or ether to recover (in ETH)', etherToWei)
240
+ .argument('<recipient>', 'address of the recovery recipient', stringToAddress)
241
+ .action(async (address, token, amount, recipient) => {
241
242
  const contract = getDashboardContract(address);
242
- const confirm = await confirmOperation(`Are you sure you want to recover ${amount} ${token} from the dashboard contract ${address} to ${recipient}?`);
243
+ const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with amount ${formatEther(amount)} from the dashboard contract ${address} to ${recipient}?`);
243
244
  if (!confirm)
244
245
  return;
245
246
  await callWriteMethodWithReceipt({
246
247
  contract,
247
248
  methodName: 'recoverERC20',
248
- payload: [token, recipient, parseEther(amount)],
249
+ payload: [token, recipient, amount],
249
250
  });
250
251
  });
251
252
  dashboardWrite
252
- .command('recover-erc721')
253
- .description('Transfers a given token_id of an ERC721-compatible NFT (defined by the token contract address)')
253
+ .command('collect-erc20-from-vault')
254
+ .description('collects ERC20 tokens from vault contract balance to the recipient')
254
255
  .argument('<address>', 'dashboard address', stringToAddress)
255
- .argument('<token>', 'an ERC721-compatible token')
256
- .argument('<tokenId>', 'token id to recover')
257
- .argument('<recipient>', 'Address of the recovery recipient', stringToAddress)
258
- .action(async (address, token, tokenId, recipient) => {
256
+ .argument('<token>', 'address of the token to recover or 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for ether (EIP-7528)', stringToAddress)
257
+ .argument('<amount>', 'amount of tokens or ether to recover (in ETH)', etherToWei)
258
+ .argument('<recipient>', 'address of the recovery recipient', stringToAddress)
259
+ .action(async (address, token, amount, recipient) => {
259
260
  const contract = getDashboardContract(address);
260
- const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with id ${tokenId} from the dashboard contract ${address} to ${recipient}?`);
261
+ const confirm = await confirmOperation(`Are you sure you want to recover the token ${token} with amount ${formatEther(amount)} from the dashboard contract ${address} to ${recipient}?`);
261
262
  if (!confirm)
262
263
  return;
263
264
  await callWriteMethodWithReceipt({
264
265
  contract,
265
- methodName: 'recoverERC721',
266
- payload: [token, BigInt(tokenId), recipient],
266
+ methodName: 'collectERC20FromVault',
267
+ payload: [token, recipient, amount],
267
268
  });
268
269
  });
269
270
  dashboardWrite
@@ -284,7 +285,7 @@ dashboardWrite
284
285
  });
285
286
  dashboardWrite
286
287
  .command('deposit-resume')
287
- .description('Mass-grants multiple roles to multiple accounts.')
288
+ .description('resumes deposits to beacon chain')
288
289
  .argument('<address>', 'dashboard address', stringToAddress)
289
290
  .action(async (address) => {
290
291
  const contract = getDashboardContract(address);
@@ -300,7 +301,7 @@ dashboardWrite
300
301
  });
301
302
  dashboardWrite
302
303
  .command('role-grant')
303
- .description('Mass-revokes multiple roles from multiple accounts.')
304
+ .description('mass-grants multiple roles to multiple accounts.')
304
305
  .argument('<address>', 'dashboard address', stringToAddress)
305
306
  .argument('<roleAssignmentJSON>', 'JSON array of role assignments', jsonToRoleAssignment)
306
307
  .addHelpText('after', `Role assignment format:
@@ -327,7 +328,7 @@ dashboardWrite
327
328
  });
328
329
  dashboardWrite
329
330
  .command('role-revoke')
330
- .description('Resumes beacon chain deposits on the staking vault.')
331
+ .description('mass-revokes multiple roles from multiple accounts')
331
332
  .argument('<address>', 'dashboard address', stringToAddress)
332
333
  .argument('<roleAssignmentJSON>', 'JSON array of role assignments', jsonToRoleAssignment)
333
334
  .addHelpText('after', `Role assignment format:
@@ -352,28 +353,10 @@ dashboardWrite
352
353
  payload: [roleAssignment],
353
354
  });
354
355
  });
355
- dashboardWrite
356
- .command('compensate-disproven-predeposit')
357
- .alias('compensate')
358
- .description('Compensates ether of disproven validator`s predeposit from PDG to the recipient')
359
- .argument('<address>', 'dashboard address', stringToAddress)
360
- .argument('<pubkey>', 'validator that was proven invalid in PDG')
361
- .argument('<recipient>', 'address to receive the `PDG.PREDEPOSIT_AMOUNT`', stringToAddress)
362
- .action(async (address, pubkey, recipient) => {
363
- const contract = getDashboardContract(address);
364
- 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}?`);
365
- if (!confirm)
366
- return;
367
- await callWriteMethodWithReceipt({
368
- contract,
369
- methodName: 'compensateDisprovenPredepositFromPDG',
370
- payload: [pubkey, recipient],
371
- });
372
- });
373
356
  dashboardWrite
374
357
  .command('unguaranteed-deposit-to-beacon-chain')
375
358
  .alias('unguaranteed-deposit')
376
- .description('Withdraws ether from vault and deposits directly to provided validators bypassing the default PDG process')
359
+ .description('withdraws ether from vault and deposits directly to provided validators bypassing the default PDG process')
377
360
  .argument('<address>', 'dashboard address', stringToAddress)
378
361
  .argument('<deposits>', 'array of IStakingVault.Deposit structs containing deposit data', parseDepositArray)
379
362
  .addHelpText('after', `Deposit format:
@@ -401,23 +384,19 @@ dashboardWrite
401
384
  dashboardWrite
402
385
  .command('prove-unknown-validators-to-pdg')
403
386
  .alias('prove-unknown-validators')
404
- .description('Proves validators with correct vault WC if they are unknown to PDG')
387
+ .description('proves validators with correct vault WC if they are unknown to PDG')
405
388
  .argument('<address>', 'dashboard address', stringToAddress)
406
389
  .argument('<validatorIndex...>', 'index of the validator to prove')
407
390
  .action(async (address, validatorIndexes) => {
408
- const account = await getAccount();
409
391
  const contract = getDashboardContract(address);
410
392
  const vault = await callReadMethod(contract, 'stakingVault');
411
393
  const vaultContract = getStakingVaultContract(vault);
412
394
  const pdgContract = await callReadMethodSilent(vaultContract, 'depositor');
413
395
  const payload = [];
414
- const PDG_PROVE_VALIDATOR_ROLE = await callReadMethodSilent(contract, 'PDG_PROVE_VALIDATOR_ROLE');
415
- const hasRole = await callReadMethodSilent(contract, 'hasRole', [
416
- PDG_PROVE_VALIDATOR_ROLE,
417
- account.address,
418
- ]);
419
- if (!hasRole) {
420
- throw new Error(`You do not have role (PDG_PROVE_VALIDATOR_ROLE - ${PDG_PROVE_VALIDATOR_ROLE}) to prove validators to PDG`);
396
+ const pdgPolicy = await callReadMethodSilent(contract, 'pdgPolicy');
397
+ const isAllowed = pdgPolicy === 2;
398
+ if (!isAllowed) {
399
+ throw new Error(`Dashboard PDG policy is not set to allow proving unknown validators to PDG`);
421
400
  }
422
401
  for (const validatorIndex of validatorIndexes) {
423
402
  const hideSpinner = showSpinner({
@@ -506,7 +485,8 @@ dashboardWrite
506
485
  .argument('<address>', 'dashboard address', stringToAddress)
507
486
  .argument('<tier>', 'tier to change to', stringToBigInt)
508
487
  .argument('<requestedShareLimit>', 'requested new share limit for the vault (in shares)', etherToWei)
509
- .action(async (address, tier, requestedShareLimit) => {
488
+ .option('-f, --fund', 'optional fund the vault with 1 ETH', false)
489
+ .action(async (address, tier, requestedShareLimit, { fund }) => {
510
490
  const contract = getDashboardContract(address);
511
491
  const vault = await callReadMethod(contract, 'stakingVault');
512
492
  const confirm = await confirmOperation(`Are you sure you want to change the tier of the vault ${vault} to ${tier} and connect to VaultHub?
@@ -517,40 +497,28 @@ dashboardWrite
517
497
  contract,
518
498
  methodName: 'connectAndAcceptTier',
519
499
  payload: [tier, requestedShareLimit],
500
+ value: fund ? parseEther('1') : undefined,
520
501
  });
521
502
  });
522
503
  dashboardWrite
523
- .command('increase-rewards-adjustment')
524
- .description('increases rewards adjustment to correct fee calculation due to non-rewards ether on CL')
525
- .argument('<address>', 'dashboard address', stringToAddress)
526
- .argument('<amount>', 'amount to increase the rewards adjustment by (in ETH)', etherToWei)
527
- .action(async (address, amount) => {
528
- const contract = getDashboardContract(address);
529
- const confirm = await confirmOperation(`Are you sure you want to increase the rewards adjustment by ${formatEther(amount)} ETH?`);
530
- if (!confirm)
531
- return;
532
- await callWriteMethodWithReceipt({
533
- contract,
534
- methodName: 'increaseRewardsAdjustment',
535
- payload: [amount],
536
- });
537
- });
538
- dashboardWrite
539
- .command('set-rewards-adjustment')
540
- .description('set `rewardsAdjustment` to a new proposed value if `confirmingRoles()` agree')
504
+ .command('set-pdg-policy')
505
+ .description('set the PDG policy')
541
506
  .argument('<address>', 'dashboard address', stringToAddress)
542
- .argument('<amount>', 'amount to set the accrued rewards adjustment to (in ETH)', etherToWei)
543
- .action(async (address, amount) => {
507
+ .argument('<policy>', 'policy to set the PDG policy to', stringToNumber)
508
+ .action(async (address, policy) => {
544
509
  const contract = getDashboardContract(address);
545
- const currentAdjustment = await callReadMethod(contract, 'rewardsAdjustment');
546
- const confirm = await confirmOperation(`Are you sure you want to set the rewards adjustment to ${formatEther(amount)} ETH?
547
- Current adjustment: ${formatEther(currentAdjustment[0])} ETH`);
510
+ const PDG_POLICY = {
511
+ 0: 'STRICT',
512
+ 1: 'ALLOW_PROVE',
513
+ 2: 'ALLOW_DEPOSIT_AND_PROVE',
514
+ };
515
+ const confirm = await confirmOperation(`Are you sure you want to set the PDG policy to ${policy} (${PDG_POLICY[policy]})?`);
548
516
  if (!confirm)
549
517
  return;
550
518
  await callWriteMethodWithReceipt({
551
519
  contract,
552
- methodName: 'setRewardsAdjustment',
553
- payload: [amount, currentAdjustment[0]],
520
+ methodName: 'setPDGPolicy',
521
+ payload: [policy],
554
522
  });
555
523
  });
556
524
  dashboardWrite
@@ -566,7 +534,7 @@ dashboardWrite
566
534
  return;
567
535
  await callWriteMethodWithReceipt({
568
536
  contract,
569
- methodName: 'setNodeOperatorFeeRecipient',
537
+ methodName: 'setFeeRecipient',
570
538
  payload: [recipient],
571
539
  });
572
540
  });
@@ -576,13 +544,25 @@ dashboardWrite
576
544
  .argument('<address>', 'dashboard address', stringToAddress)
577
545
  .action(async (address) => {
578
546
  const contract = getDashboardContract(address);
579
- const log = await confirmProposal(contract);
547
+ const vault = await callReadMethodSilent(contract, 'stakingVault');
548
+ const operatorGridContract = await getOperatorGridContract();
549
+ const log = await confirmProposal({
550
+ contract: contract,
551
+ vault,
552
+ additionalContracts: [operatorGridContract],
553
+ });
580
554
  if (!log)
581
555
  return;
556
+ const isChangeTier = log.decodedData.functionName === 'changeTier';
557
+ // ChangeTier event from OperatorGrid has 3 args (vault, tierId, shareLimit), but we need only 2 (tierId, shareLimit)
558
+ let args = log.decodedData.args;
559
+ if (isChangeTier && args && args.length === 3) {
560
+ args = [args[1], args[2]];
561
+ }
582
562
  await callWriteMethodWithReceipt({
583
563
  contract,
584
564
  methodName: log.decodedData.functionName,
585
- payload: log.decodedData.args,
565
+ payload: args,
586
566
  });
587
567
  });
588
568
  dashboardWrite
@@ -615,7 +595,7 @@ dashboardWrite
615
595
  return;
616
596
  await callWriteMethodWithReceipt({
617
597
  contract,
618
- methodName: 'setNodeOperatorFeeRate',
598
+ methodName: 'setFeeRate',
619
599
  payload: [fee],
620
600
  });
621
601
  });
@@ -625,14 +605,71 @@ dashboardWrite
625
605
  .argument('<address>', 'dashboard address', stringToAddress)
626
606
  .action(async (address) => {
627
607
  const contract = getDashboardContract(address);
628
- const nodeOperatorFeeRecipient = await callReadMethodSilent(contract, 'nodeOperatorFeeRecipient');
608
+ const nodeOperatorFeeRecipient = await callReadMethodSilent(contract, 'feeRecipient');
629
609
  const confirm = await confirmOperation(`Are you sure you want to transfer the node operator fee to ${nodeOperatorFeeRecipient}?`);
630
610
  if (!confirm)
631
611
  return;
632
612
  await callWriteMethodWithReceipt({
633
613
  contract,
634
- methodName: 'disburseNodeOperatorFee',
614
+ methodName: 'disburseFee',
615
+ payload: [],
616
+ });
617
+ });
618
+ dashboardWrite
619
+ .command('change-tier')
620
+ .alias('ct')
621
+ .description('vault tier change with multi-role confirmation')
622
+ .argument('<address>', 'dashboard address', stringToAddress)
623
+ .argument('<tierId>', 'tier id', stringToBigInt)
624
+ .argument('<requestedShareLimit>', 'requested share limit (in shares)', etherToWei)
625
+ .action(async (address, tierId, requestedShareLimit) => {
626
+ const contract = getDashboardContract(address);
627
+ const vault = await callReadMethod(contract, 'stakingVault');
628
+ const confirm = await confirmOperation(`Are you sure you want to change the current tier to tier ID ${tierId} for vault ${vault} with share limit ${formatEther(requestedShareLimit)} shares?`);
629
+ if (!confirm)
630
+ return;
631
+ await callWriteMethodWithReceipt({
632
+ contract,
633
+ methodName: 'changeTier',
634
+ payload: [tierId, requestedShareLimit],
635
+ });
636
+ });
637
+ dashboardWrite
638
+ .command('sync-tier')
639
+ .alias('st')
640
+ .description('requests a sync of tier on the OperatorGrid')
641
+ .argument('<address>', 'dashboard address', stringToAddress)
642
+ .addHelpText('after', `Tier sync confirmation logic:
643
+ - Both vault owner (via this function) AND node operator confirmations are required
644
+ - First call returns false (pending), second call with both confirmations completes the sync
645
+ - Confirmations expire after the configured period (default: 1 day)`)
646
+ .action(async (address) => {
647
+ const contract = getDashboardContract(address);
648
+ const vault = await callReadMethod(contract, 'stakingVault');
649
+ const confirm = await confirmOperation(`Are you sure you want to sync the tier of the vault ${vault}?`);
650
+ if (!confirm)
651
+ return;
652
+ await callWriteMethodWithReceipt({
653
+ contract,
654
+ methodName: 'syncTier',
635
655
  payload: [],
636
656
  });
637
657
  });
658
+ dashboardWrite
659
+ .command('update-share-limit')
660
+ .description('requests a change of share limit on the OperatorGrid')
661
+ .argument('<address>', 'dashboard address', stringToAddress)
662
+ .argument('<shareLimit>', 'share limit', stringToBigInt)
663
+ .action(async (address, shareLimit) => {
664
+ const contract = getDashboardContract(address);
665
+ const vault = await callReadMethod(contract, 'stakingVault');
666
+ const confirm = await confirmOperation(`Are you sure you want to request a change of share limit on the OperatorGrid for the vault ${vault} to ${shareLimit}?`);
667
+ if (!confirm)
668
+ return;
669
+ await callWriteMethodWithReceipt({
670
+ contract,
671
+ methodName: 'updateShareLimit',
672
+ payload: [shareLimit],
673
+ });
674
+ });
638
675
  //# sourceMappingURL=write.js.map