@suzaku-network/suzaku-cli 1.0.2

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 (194) hide show
  1. package/LICENSE +96 -0
  2. package/README.md +1080 -0
  3. package/bin/cli.js +3 -0
  4. package/defaults/.env.anvil +4 -0
  5. package/defaults/.env.dexalot +7 -0
  6. package/defaults/.env.fuji +4 -0
  7. package/defaults/.env.kiteai +2 -0
  8. package/defaults/.env.mainnet +4 -0
  9. package/defaults/.env.template +10 -0
  10. package/dist/abis/AccessControl.d.ts +176 -0
  11. package/dist/abis/AccessControl.js +230 -0
  12. package/dist/abis/AccessControl.js.map +1 -0
  13. package/dist/abis/BalancerValidatorManager.d.ts +1121 -0
  14. package/dist/abis/BalancerValidatorManager.js +1469 -0
  15. package/dist/abis/BalancerValidatorManager.js.map +1 -0
  16. package/dist/abis/DefaultCollateral.d.ts +620 -0
  17. package/dist/abis/DefaultCollateral.js +811 -0
  18. package/dist/abis/DefaultCollateral.js.map +1 -0
  19. package/dist/abis/ERC20.d.ts +635 -0
  20. package/dist/abis/ERC20.js +831 -0
  21. package/dist/abis/ERC20.js.map +1 -0
  22. package/dist/abis/IWarpMessenger.d.ts +104 -0
  23. package/dist/abis/IWarpMessenger.js +139 -0
  24. package/dist/abis/IWarpMessenger.js.map +1 -0
  25. package/dist/abis/KiteStakingManager.d.ts +1459 -0
  26. package/dist/abis/KiteStakingManager.js +1886 -0
  27. package/dist/abis/KiteStakingManager.js.map +1 -0
  28. package/dist/abis/L1Middleware.d.ts +1712 -0
  29. package/dist/abis/L1Middleware.js +2242 -0
  30. package/dist/abis/L1Middleware.js.map +1 -0
  31. package/dist/abis/L1Registry.d.ts +415 -0
  32. package/dist/abis/L1Registry.js +544 -0
  33. package/dist/abis/L1Registry.js.map +1 -0
  34. package/dist/abis/L1RestakeDelegator.d.ts +865 -0
  35. package/dist/abis/L1RestakeDelegator.js +1118 -0
  36. package/dist/abis/L1RestakeDelegator.js.map +1 -0
  37. package/dist/abis/OperatorL1OptInService.d.ts +288 -0
  38. package/dist/abis/OperatorL1OptInService.js +374 -0
  39. package/dist/abis/OperatorL1OptInService.js.map +1 -0
  40. package/dist/abis/OperatorRegistry.d.ts +125 -0
  41. package/dist/abis/OperatorRegistry.js +166 -0
  42. package/dist/abis/OperatorRegistry.js.map +1 -0
  43. package/dist/abis/OperatorVaultOptInService.d.ts +288 -0
  44. package/dist/abis/OperatorVaultOptInService.js +374 -0
  45. package/dist/abis/OperatorVaultOptInService.js.map +1 -0
  46. package/dist/abis/Ownable.d.ts +59 -0
  47. package/dist/abis/Ownable.js +79 -0
  48. package/dist/abis/Ownable.js.map +1 -0
  49. package/dist/abis/PoASecurityModule.d.ts +225 -0
  50. package/dist/abis/PoASecurityModule.js +299 -0
  51. package/dist/abis/PoASecurityModule.js.map +1 -0
  52. package/dist/abis/RewardsNativeToken.d.ts +1334 -0
  53. package/dist/abis/RewardsNativeToken.js +1749 -0
  54. package/dist/abis/RewardsNativeToken.js.map +1 -0
  55. package/dist/abis/StakingVault.d.ts +2913 -0
  56. package/dist/abis/StakingVault.js +3780 -0
  57. package/dist/abis/StakingVault.js.map +1 -0
  58. package/dist/abis/StakingVaultOperations.d.ts +980 -0
  59. package/dist/abis/StakingVaultOperations.js +1270 -0
  60. package/dist/abis/StakingVaultOperations.js.map +1 -0
  61. package/dist/abis/UptimeTracker.d.ts +300 -0
  62. package/dist/abis/UptimeTracker.js +397 -0
  63. package/dist/abis/UptimeTracker.js.map +1 -0
  64. package/dist/abis/ValidatorManager.d.ts +842 -0
  65. package/dist/abis/ValidatorManager.js +1101 -0
  66. package/dist/abis/ValidatorManager.js.map +1 -0
  67. package/dist/abis/VaultFactory.d.ts +288 -0
  68. package/dist/abis/VaultFactory.js +378 -0
  69. package/dist/abis/VaultFactory.js.map +1 -0
  70. package/dist/abis/VaultManager.d.ts +519 -0
  71. package/dist/abis/VaultManager.js +678 -0
  72. package/dist/abis/VaultManager.js.map +1 -0
  73. package/dist/abis/VaultTokenized.d.ts +1626 -0
  74. package/dist/abis/VaultTokenized.js +2114 -0
  75. package/dist/abis/VaultTokenized.js.map +1 -0
  76. package/dist/abis/abi-selectors.json +700 -0
  77. package/dist/abis/index.d.ts +18356 -0
  78. package/dist/abis/index.js +58 -0
  79. package/dist/abis/index.js.map +1 -0
  80. package/dist/accessControl.d.ts +15 -0
  81. package/dist/accessControl.js +36 -0
  82. package/dist/accessControl.js.map +1 -0
  83. package/dist/balancer.d.ts +25 -0
  84. package/dist/balancer.js +42 -0
  85. package/dist/balancer.js.map +1 -0
  86. package/dist/cli.d.mts +1 -0
  87. package/dist/cli.d.ts +2 -0
  88. package/dist/cli.js +3183 -0
  89. package/dist/cli.js.map +1 -0
  90. package/dist/cli.mjs +31343 -0
  91. package/dist/cli.mjs.map +1 -0
  92. package/dist/client.d.ts +34 -0
  93. package/dist/client.js +76 -0
  94. package/dist/client.js.map +1 -0
  95. package/dist/config.d.ts +10 -0
  96. package/dist/config.js +63 -0
  97. package/dist/config.js.map +1 -0
  98. package/dist/delegator.d.ts +4 -0
  99. package/dist/delegator.js +16 -0
  100. package/dist/delegator.js.map +1 -0
  101. package/dist/index.d.mts +19770 -0
  102. package/dist/index.d.ts +7 -0
  103. package/dist/index.js +24 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/index.mjs +27451 -0
  106. package/dist/index.mjs.map +1 -0
  107. package/dist/keyStore.d.ts +3 -0
  108. package/dist/keyStore.js +105 -0
  109. package/dist/keyStore.js.map +1 -0
  110. package/dist/kiteStaking.d.ts +91 -0
  111. package/dist/kiteStaking.js +731 -0
  112. package/dist/kiteStaking.js.map +1 -0
  113. package/dist/l1.d.ts +5 -0
  114. package/dist/l1.js +22 -0
  115. package/dist/l1.js.map +1 -0
  116. package/dist/lib/autoCompletion.d.ts +3 -0
  117. package/dist/lib/autoCompletion.js +55 -0
  118. package/dist/lib/autoCompletion.js.map +1 -0
  119. package/dist/lib/cChainUtils.d.ts +42 -0
  120. package/dist/lib/cChainUtils.js +271 -0
  121. package/dist/lib/cChainUtils.js.map +1 -0
  122. package/dist/lib/castUtils.d.ts +18 -0
  123. package/dist/lib/castUtils.js +81 -0
  124. package/dist/lib/castUtils.js.map +1 -0
  125. package/dist/lib/chainList.d.ts +5 -0
  126. package/dist/lib/chainList.js +86 -0
  127. package/dist/lib/chainList.js.map +1 -0
  128. package/dist/lib/cliParser.d.ts +27 -0
  129. package/dist/lib/cliParser.js +167 -0
  130. package/dist/lib/cliParser.js.map +1 -0
  131. package/dist/lib/commandUtils.d.ts +13 -0
  132. package/dist/lib/commandUtils.js +38 -0
  133. package/dist/lib/commandUtils.js.map +1 -0
  134. package/dist/lib/coreWalletUtils.d.ts +3 -0
  135. package/dist/lib/coreWalletUtils.js +74 -0
  136. package/dist/lib/coreWalletUtils.js.map +1 -0
  137. package/dist/lib/justification.d.ts +90 -0
  138. package/dist/lib/justification.js +577 -0
  139. package/dist/lib/justification.js.map +1 -0
  140. package/dist/lib/ledgerUtils.d.ts +4 -0
  141. package/dist/lib/ledgerUtils.js +258 -0
  142. package/dist/lib/ledgerUtils.js.map +1 -0
  143. package/dist/lib/logger.d.ts +46 -0
  144. package/dist/lib/logger.js +226 -0
  145. package/dist/lib/logger.js.map +1 -0
  146. package/dist/lib/pChainUtils.d.ts +128 -0
  147. package/dist/lib/pChainUtils.js +436 -0
  148. package/dist/lib/pChainUtils.js.map +1 -0
  149. package/dist/lib/pass.d.ts +81 -0
  150. package/dist/lib/pass.js +353 -0
  151. package/dist/lib/pass.js.map +1 -0
  152. package/dist/lib/safeUtils.d.ts +25 -0
  153. package/dist/lib/safeUtils.js +93 -0
  154. package/dist/lib/safeUtils.js.map +1 -0
  155. package/dist/lib/transferUtils.d.ts +643 -0
  156. package/dist/lib/transferUtils.js +141 -0
  157. package/dist/lib/transferUtils.js.map +1 -0
  158. package/dist/lib/utils.d.ts +28 -0
  159. package/dist/lib/utils.js +166 -0
  160. package/dist/lib/utils.js.map +1 -0
  161. package/dist/lib/viemUtils.d.ts +80 -0
  162. package/dist/lib/viemUtils.js +317 -0
  163. package/dist/lib/viemUtils.js.map +1 -0
  164. package/dist/lib/warpUtils.d.ts +76 -0
  165. package/dist/lib/warpUtils.js +448 -0
  166. package/dist/lib/warpUtils.js.map +1 -0
  167. package/dist/middleware.d.ts +75 -0
  168. package/dist/middleware.js +430 -0
  169. package/dist/middleware.js.map +1 -0
  170. package/dist/operator.d.ts +4 -0
  171. package/dist/operator.js +22 -0
  172. package/dist/operator.js.map +1 -0
  173. package/dist/operatorOptIn.d.ts +8 -0
  174. package/dist/operatorOptIn.js +39 -0
  175. package/dist/operatorOptIn.js.map +1 -0
  176. package/dist/rewards.d.ts +116 -0
  177. package/dist/rewards.js +244 -0
  178. package/dist/rewards.js.map +1 -0
  179. package/dist/securityModule.d.ts +8 -0
  180. package/dist/securityModule.js +305 -0
  181. package/dist/securityModule.js.map +1 -0
  182. package/dist/stakingVault.d.ts +184 -0
  183. package/dist/stakingVault.js +1224 -0
  184. package/dist/stakingVault.js.map +1 -0
  185. package/dist/uptime.d.ts +54 -0
  186. package/dist/uptime.js +246 -0
  187. package/dist/uptime.js.map +1 -0
  188. package/dist/vault.d.ts +16 -0
  189. package/dist/vault.js +131 -0
  190. package/dist/vault.js.map +1 -0
  191. package/dist/vaultManager.d.ts +8 -0
  192. package/dist/vaultManager.js +40 -0
  193. package/dist/vaultManager.js.map +1 -0
  194. package/package.json +62 -0
@@ -0,0 +1,430 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.middlewareRegisterOperator = middlewareRegisterOperator;
7
+ exports.middlewareDisableOperator = middlewareDisableOperator;
8
+ exports.middlewareRemoveOperator = middlewareRemoveOperator;
9
+ exports.middlewareAddNode = middlewareAddNode;
10
+ exports.middlewareRemoveNode = middlewareRemoveNode;
11
+ exports.middlewareInitStakeUpdate = middlewareInitStakeUpdate;
12
+ exports.middlewareCalcNodeStakes = middlewareCalcNodeStakes;
13
+ exports.middlewareForceUpdateNodes = middlewareForceUpdateNodes;
14
+ exports.middlewareGetOperatorStake = middlewareGetOperatorStake;
15
+ exports.middlewareGetCurrentEpoch = middlewareGetCurrentEpoch;
16
+ exports.middlewareGetEpochStartTs = middlewareGetEpochStartTs;
17
+ exports.middlewareGetActiveNodesForEpoch = middlewareGetActiveNodesForEpoch;
18
+ exports.middlewareGetOperatorNodesLength = middlewareGetOperatorNodesLength;
19
+ exports.middlewareGetNodeStakeCache = middlewareGetNodeStakeCache;
20
+ exports.middlewareGetOperatorLockedStake = middlewareGetOperatorLockedStake;
21
+ exports.middlewareNodePendingRemoval = middlewareNodePendingRemoval;
22
+ exports.middlewareNodePendingUpdate = middlewareNodePendingUpdate;
23
+ exports.middlewareGetOperatorUsedStake = middlewareGetOperatorUsedStake;
24
+ exports.middlewareGetAllOperators = middlewareGetAllOperators;
25
+ exports.getAllOperators = getAllOperators;
26
+ exports.getCollateralClassIds = getCollateralClassIds;
27
+ exports.getActiveCollateralClasses = getActiveCollateralClasses;
28
+ exports.middlewareGetNodeLogs = middlewareGetNodeLogs;
29
+ exports.groupEventsByNodeId = groupEventsByNodeId;
30
+ exports.middlewareManualProcessNodeStakeCache = middlewareManualProcessNodeStakeCache;
31
+ exports.middlewareLastValidationId = middlewareLastValidationId;
32
+ exports.weightSync = weightSync;
33
+ exports.predictForceUpdateImpact = predictForceUpdateImpact;
34
+ exports.middlewareInfo = middlewareInfo;
35
+ const console_log_colors_1 = require("console-log-colors");
36
+ const cli_progress_1 = __importDefault(require("cli-progress"));
37
+ const utils_1 = require("./lib/utils");
38
+ const cChainUtils_1 = require("./lib/cChainUtils");
39
+ const logger_1 = require("./lib/logger");
40
+ async function middlewareRegisterOperator(middleware, operator) {
41
+ logger_1.logger.log("Registering operator...");
42
+ const hash = await middleware.safeWrite.registerOperator([operator]);
43
+ logger_1.logger.log("registerOperator done, tx hash:", hash);
44
+ }
45
+ async function middlewareDisableOperator(middleware, operator) {
46
+ logger_1.logger.log("Disabling operator...");
47
+ const hash = await middleware.safeWrite.disableOperator([operator]);
48
+ logger_1.logger.log("disableOperator done, tx hash:", hash);
49
+ }
50
+ async function middlewareRemoveOperator(middleware, operator) {
51
+ logger_1.logger.log("Removing operator...");
52
+ const hash = await middleware.safeWrite.removeOperator([operator]);
53
+ logger_1.logger.log("removeOperator done, tx hash:", hash);
54
+ }
55
+ // addNode
56
+ async function middlewareAddNode(middleware, nodeId, blsKey, remainingBalanceOwner, disableOwner, initialStake) {
57
+ logger_1.logger.log("Calling function addNode...");
58
+ // Parse NodeID to bytes32 format
59
+ const nodeIdHex32 = (0, utils_1.parseNodeID)(nodeId);
60
+ const hash = await middleware.safeWrite.addNode([nodeIdHex32, blsKey, { threshold: remainingBalanceOwner[0], addresses: remainingBalanceOwner[1] }, { threshold: disableOwner[0], addresses: disableOwner[1] }, initialStake]);
61
+ logger_1.logger.log("addNode executed successfully, tx hash:", hash);
62
+ return hash;
63
+ }
64
+ // removeNode
65
+ async function middlewareRemoveNode(middleware, nodeId) {
66
+ logger_1.logger.log("Calling function removeNode...");
67
+ // Parse NodeID to bytes32 format
68
+ const nodeIdHex32 = (0, utils_1.parseNodeID)(nodeId);
69
+ const hash = await middleware.safeWrite.removeNode([nodeIdHex32]);
70
+ logger_1.logger.log("removeNode executed successfully, tx hash:", hash);
71
+ return hash;
72
+ }
73
+ // initializeValidatorWeightUpdate
74
+ async function middlewareInitStakeUpdate(middleware, nodeId, newStake) {
75
+ logger_1.logger.log("Calling function initializeValidatorStakeUpdate...");
76
+ // Parse NodeID to bytes32 format
77
+ const nodeIdHex32 = (0, utils_1.parseNodeID)(nodeId);
78
+ const hash = await middleware.safeWrite.initializeValidatorStakeUpdate([nodeIdHex32, newStake]);
79
+ logger_1.logger.log("initializeValidatorStakeUpdate executed successfully, tx hash:", hash);
80
+ return hash;
81
+ }
82
+ // calcAndCacheNodeStakeForAllOperators
83
+ async function middlewareCalcNodeStakes(middleware) {
84
+ logger_1.logger.log("Calculating node stakes for all operators...");
85
+ const hash = await middleware.safeWrite.calcAndCacheNodeStakeForAllOperators();
86
+ logger_1.logger.log("calcAndCacheNodeStakeForAllOperators done, tx hash:", hash);
87
+ }
88
+ // forceUpdateNodes
89
+ async function middlewareForceUpdateNodes(middleware, operator, limitStake) {
90
+ logger_1.logger.log("Calling forceUpdateNodes...");
91
+ const hash = await middleware.safeWrite.forceUpdateNodes([operator, limitStake]);
92
+ logger_1.logger.log("forceUpdateNodes executed successfully");
93
+ logger_1.logger.log("tx hash:", hash);
94
+ }
95
+ // getOperatorStake
96
+ async function middlewareGetOperatorStake(middleware, operator, epoch, collateralClass) {
97
+ logger_1.logger.log("Reading operator stake...");
98
+ const val = await middleware.read.getOperatorStake([operator, epoch, collateralClass]);
99
+ logger_1.logger.log(val);
100
+ }
101
+ // getCurrentEpoch
102
+ async function middlewareGetCurrentEpoch(middleware) {
103
+ logger_1.logger.log("Reading current epoch...");
104
+ const val = await middleware.read.getCurrentEpoch();
105
+ logger_1.logger.log(val);
106
+ }
107
+ // getEpochStartTs
108
+ async function middlewareGetEpochStartTs(middleware, epoch) {
109
+ logger_1.logger.log("Reading epoch start timestamp...");
110
+ const val = await middleware.read.getEpochStartTs([epoch]);
111
+ logger_1.logger.log(val);
112
+ }
113
+ // getActiveNodesForEpoch
114
+ async function middlewareGetActiveNodesForEpoch(middleware, operator, epoch) {
115
+ logger_1.logger.log("Reading active nodes for epoch...");
116
+ const nodeIds = (await middleware.read.getActiveNodesForEpoch([operator, epoch])).map((b) => (0, utils_1.encodeNodeID)(b));
117
+ logger_1.logger.log(nodeIds);
118
+ logger_1.logger.addData('nodeIds', nodeIds);
119
+ }
120
+ // getOperatorNodesLength
121
+ async function middlewareGetOperatorNodesLength(middleware, operator) {
122
+ logger_1.logger.log("Reading operator nodes length...");
123
+ const length = await middleware.read.getOperatorNodesLength([operator]);
124
+ logger_1.logger.log(length);
125
+ }
126
+ // nodeStakeCache
127
+ async function middlewareGetNodeStakeCache(middleware, epoch, validationId) {
128
+ logger_1.logger.log("Reading node stake cache...");
129
+ const val = await middleware.read.nodeStakeCache([epoch, validationId]);
130
+ logger_1.logger.log(val);
131
+ }
132
+ // operatorLockedStake
133
+ async function middlewareGetOperatorLockedStake(middleware, operator) {
134
+ logger_1.logger.log("Reading operator locked stake...");
135
+ const val = await middleware.read.operatorLockedStake([operator]);
136
+ logger_1.logger.log(val);
137
+ }
138
+ // nodePendingRemoval
139
+ async function middlewareNodePendingRemoval(middleware, validatorId) {
140
+ logger_1.logger.log("Reading nodePendingRemoval...");
141
+ const val = await middleware.read.nodePendingRemoval([validatorId]);
142
+ logger_1.logger.log(val);
143
+ }
144
+ // nodePendingUpdate - Note: This function is not available in the current contract
145
+ async function middlewareNodePendingUpdate(middleware, validatorId) {
146
+ logger_1.logger.log("Node pending update check is not available in the current contract version");
147
+ logger_1.logger.log(`ValidatorId: ${validatorId}`);
148
+ logger_1.logger.log("This functionality may be available through other contract methods or in future versions");
149
+ }
150
+ // getOperatorUsedStakeCached
151
+ async function middlewareGetOperatorUsedStake(middleware, operator) {
152
+ logger_1.logger.log("Reading operator used stake cached...");
153
+ const val = await middleware.read.getOperatorUsedStakeCached([operator]);
154
+ logger_1.logger.log(val);
155
+ }
156
+ // getAllOperators
157
+ async function middlewareGetAllOperators(middleware) {
158
+ logger_1.logger.log("Reading all operators from middleware...");
159
+ const operators = await middleware.read.getAllOperators();
160
+ logger_1.logger.log(operators);
161
+ }
162
+ /**
163
+ * Gets all operator nodes
164
+ */
165
+ async function getAllOperators(middleware) {
166
+ const operators = await middleware.read.getAllOperators();
167
+ logger_1.logger.log("All operators:", operators);
168
+ return operators;
169
+ }
170
+ /**
171
+ * Gets all collateral class IDs
172
+ */
173
+ async function getCollateralClassIds(middleware) {
174
+ const collateralClassIds = await middleware.read.getCollateralClassIds();
175
+ logger_1.logger.log("Collateral class IDs:", collateralClassIds);
176
+ return collateralClassIds;
177
+ }
178
+ /**
179
+ * Gets active collateral classes (primary and secondary)
180
+ */
181
+ async function getActiveCollateralClasses(middleware) {
182
+ const result = await middleware.read.getActiveCollateralClasses();
183
+ logger_1.logger.log("Active collateral classes - Primary:", result[0], "Secondaries:", result[1]);
184
+ return result;
185
+ }
186
+ async function middlewareGetNodeLogs(client, middleware, config, nodeId, snowscanApiKey, quiet) {
187
+ logger_1.logger.log("Reading logs from middleware and balancer...");
188
+ const to = await client.getBlockNumber();
189
+ const from = await (0, cChainUtils_1.blockAtTimestamp)(client, BigInt(await middleware.read.START_TIME()));
190
+ const bar = snowscanApiKey ? undefined : new cli_progress_1.default.SingleBar({}, cli_progress_1.default.Presets.shades_classic);
191
+ if (bar)
192
+ bar.start(0, 0);
193
+ const logsProm = [];
194
+ logsProm.push((0, cChainUtils_1.GetContractEvents)(client, middleware.address, Number(from), Number(to), config.abis.L1Middleware, ["NodeAdded", "NodeRemoved", "NodeStakeUpdated"], snowscanApiKey, snowscanApiKey ? false : true, bar));
195
+ const [l1ValidatorManagerAddress, balancerAddress] = await middleware.multicall(['BALANCER', 'balancerValidatorManager']);
196
+ const completeEventsContractAddress = l1ValidatorManagerAddress || balancerAddress;
197
+ if (completeEventsContractAddress) {
198
+ logsProm.push((0, cChainUtils_1.GetContractEvents)(client, completeEventsContractAddress, Number(from), Number(to), config.abis.BalancerValidatorManager, undefined, snowscanApiKey, snowscanApiKey ? false : true, bar));
199
+ }
200
+ const balancer = await config.contracts.BalancerValidatorManager(balancerAddress);
201
+ const allLogs = await Promise.all(logsProm);
202
+ let logs = allLogs.flat().sort((a, b) => Number(a.blockNumber - b.blockNumber));
203
+ logs = await (0, cChainUtils_1.fillEventsNodeId)(balancer, logs);
204
+ if (quiet) {
205
+ return logs;
206
+ }
207
+ // Human readable addresses and structured logs
208
+ const logOfInterest = groupEventsByNodeId(logs.map((log) => {
209
+ log.address = log.address.toLowerCase() === middleware.address.toLowerCase() ? "Middleware" : "ValidatorManager";
210
+ return log;
211
+ }));
212
+ if (nodeId != undefined) {
213
+ const nodeIdHex32 = (0, utils_1.parseNodeID)(nodeId);
214
+ logger_1.logger.log('\t\t\t' + console_log_colors_1.color.blue(nodeId));
215
+ logger_1.logger.table(logOfInterest[nodeIdHex32] || []);
216
+ }
217
+ else {
218
+ for (const [key, value] of Object.entries(logOfInterest)) {
219
+ const nodeId = (0, utils_1.encodeNodeID)(key);
220
+ logger_1.logger.log('\t\t\t\t\t\t' + console_log_colors_1.color.blue(nodeId));
221
+ logger_1.logger.table(value);
222
+ }
223
+ }
224
+ }
225
+ function groupEventsByNodeId(events) {
226
+ return events.reduce((acc, log) => {
227
+ if (log.args.nodeId) {
228
+ const key = log.args.nodeId;
229
+ if (!acc[key]) {
230
+ acc[key] = [];
231
+ }
232
+ const same = acc[key].some((l) => l.hash === log.transactionHash);
233
+ const hash = same ? "↑same↑" : log.transactionHash;
234
+ const executionTime = log.timestamp ? same ? "↑same↑" : new Date(Number(log.timestamp) * 1000).toLocaleString() : 'N/A';
235
+ acc[key].push({
236
+ source: log.address,
237
+ event: log.eventName,
238
+ // args: JSON.stringify(log.args, (key, value) =>
239
+ // typeof value === 'bigint'
240
+ // ? value.toString()
241
+ // : value // return everything else unchanged
242
+ // ),// Too long in the table TODO: use a custom formatter
243
+ executionTime,
244
+ hash: hash,
245
+ });
246
+ }
247
+ return acc;
248
+ }, {});
249
+ }
250
+ async function middlewareManualProcessNodeStakeCache(middleware, numEpochsToProcess) {
251
+ logger_1.logger.log("Processing node stake cache...");
252
+ const hash = await middleware.safeWrite.manualProcessNodeStakeCache([numEpochsToProcess]);
253
+ logger_1.logger.log("manualProcessNodeStakeCache done, tx hash:", hash);
254
+ }
255
+ async function middlewareLastValidationId(client, middleware, balancer, nodeId) {
256
+ const nodeIdHex = (0, utils_1.parseNodeID)(nodeId);
257
+ // If already registered
258
+ const validationId = await balancer.read.getNodeValidationID([nodeIdHex]);
259
+ if (parseInt(validationId, 16) === 0) {
260
+ const toBlock = await (0, cChainUtils_1.blockAtTimestamp)(client, BigInt(await middleware.read.START_TIME()));
261
+ const fromBlock = await client.getBlockNumber();
262
+ const event = await (0, cChainUtils_1.collectEventsInRange)(fromBlock, toBlock, 1, (opts) => middleware.getEvents.NodeAdded({ nodeId: nodeIdHex }, opts));
263
+ if (event.length === 0) {
264
+ throw new Error(`Node ID ${nodeId} never registered in the middleware`);
265
+ }
266
+ else {
267
+ return event[0].args.validationID;
268
+ }
269
+ }
270
+ else {
271
+ return validationId;
272
+ }
273
+ }
274
+ async function weightSync(middleware, config, options) {
275
+ // middlewareManualProcessNodeStakeCache configuration
276
+ const [lastGlobalNodeStakeUpdateEpoch, currentEpoch, updateWindow] = await middleware.multicall(['lastGlobalNodeStakeUpdateEpoch', 'getCurrentEpoch', 'UPDATE_WINDOW']);
277
+ let epochsPerCall;
278
+ let loopCount;
279
+ if (options.epochs || options.loopEpochs) { // Fully specified by user
280
+ epochsPerCall = options.epochs || 1;
281
+ loopCount = options.loopEpochs || 1;
282
+ }
283
+ else { // Automatic calculation
284
+ epochsPerCall = currentEpoch - lastGlobalNodeStakeUpdateEpoch;
285
+ loopCount = epochsPerCall > 50 ? Math.ceil(epochsPerCall / 50) : 1; // Limit number of epochs processed in a single call to avoid gas issues
286
+ epochsPerCall = Math.ceil(epochsPerCall / loopCount);
287
+ }
288
+ const startEpoch = await middleware.read.getEpochStartTs([currentEpoch]);
289
+ const now = Date.now() / 1000;
290
+ if (now < startEpoch + updateWindow) {
291
+ throw new Error(`Not enough time has passed since the start of the current epoch. Please wait until the update window has passed(${startEpoch + updateWindow - now} seconds)`);
292
+ }
293
+ logger_1.logger.log(`Processing node stake cache: ${loopCount} iterations of ${epochsPerCall} epoch(s) each`);
294
+ for (let i = 0; i < loopCount; i++) {
295
+ logger_1.logger.log(`\nIteration ${i + 1}/${loopCount}`);
296
+ const hash = await middleware.safeWrite.manualProcessNodeStakeCache([epochsPerCall]);
297
+ logger_1.logger.log("manualProcessNodeStakeCache done, tx hash:", hash);
298
+ }
299
+ const processedEpochs = Math.max(epochsPerCall * loopCount, currentEpoch - lastGlobalNodeStakeUpdateEpoch);
300
+ // process stake cache for operators
301
+ const [collateralClasses, operators] = await middleware.multicall(['getCollateralClassIds', 'getAllOperators']);
302
+ const processedEpochsRange = Array.from({ length: processedEpochs }, (_, i) => i + lastGlobalNodeStakeUpdateEpoch);
303
+ for (const epoch of processedEpochsRange) {
304
+ for (const collateralClass of collateralClasses) {
305
+ logger_1.logger.log(`Processing epoch ${epoch} for collateral class ${collateralClass}`);
306
+ await middleware.safeWrite.calcAndCacheStakes([epoch, collateralClass]);
307
+ }
308
+ }
309
+ // TODO: fix type (too complex for now)
310
+ const predictions = await predictForceUpdateImpact(config, middleware, operators);
311
+ for (const prediction of predictions) {
312
+ if (prediction.willLoseWeight) {
313
+ logger_1.logger.log(`Operator ${prediction.operator} will ${prediction.willLoseWeight ? 'lose' : 'gain'} weight`);
314
+ logger_1.logger.log(`Current total stake: ${prediction.currentTotalStake}`);
315
+ logger_1.logger.log(`Capped total stake: ${prediction.cappedTotalStake}`);
316
+ logger_1.logger.log(`Registered stake: ${prediction.registeredStake}`);
317
+ logger_1.logger.log(`Stake deficit: ${prediction.stakeDeficit}`);
318
+ logger_1.logger.log(`Active nodes count: ${prediction.activeNodesCount}`);
319
+ await middleware.safeWrite.forceUpdateNodes([prediction.operator, 0n]);
320
+ }
321
+ else {
322
+ logger_1.logger.log(`Operator ${prediction.operator} will not lose weight`);
323
+ }
324
+ }
325
+ }
326
+ async function predictForceUpdateImpact(config, middleware, operators) {
327
+ // Replicate the calculation in the smart contract
328
+ if (operators.length === 0)
329
+ return [];
330
+ const [currentEpoch, weightScaleFactor, balancerAddress, primaryAssetClass] = await middleware.multicall([
331
+ 'getCurrentEpoch',
332
+ 'WEIGHT_SCALE_FACTOR',
333
+ 'BALANCER',
334
+ 'PRIMARY_ASSET_CLASS'
335
+ ]);
336
+ const balancer = await config.contracts.BalancerValidatorManager(balancerAddress);
337
+ const [, securityModuleMaxWeight] = await balancer.read.getSecurityModuleWeights([middleware.address]);
338
+ const maxStakeCap = BigInt(securityModuleMaxWeight) * weightScaleFactor;
339
+ const results = await middleware.multicall(operators.flatMap(op => [
340
+ {
341
+ name: 'getOperatorStake',
342
+ args: [op, currentEpoch, primaryAssetClass]
343
+ },
344
+ {
345
+ name: 'getOperatorUsedStakeCached',
346
+ args: [op]
347
+ },
348
+ {
349
+ name: 'operatorLockedStake',
350
+ args: [op]
351
+ },
352
+ {
353
+ name: 'getActiveNodesForEpoch',
354
+ args: [op, currentEpoch]
355
+ }
356
+ ]));
357
+ const predictions = [];
358
+ for (let i = 0; i < operators.length; i++) {
359
+ const baseIndex = i * 4;
360
+ const operator = operators[i];
361
+ const theoreticalStake = results[baseIndex];
362
+ const usedStake = results[baseIndex + 1];
363
+ const lockedStake = results[baseIndex + 2];
364
+ const activeNodes = results[baseIndex + 3];
365
+ let cappedStake = theoreticalStake;
366
+ // If the stake is above the max cap, cap it
367
+ if (cappedStake > maxStakeCap) {
368
+ cappedStake = maxStakeCap;
369
+ }
370
+ const registeredStake = usedStake + lockedStake;
371
+ let stakeDeficit = 0n;
372
+ let willLoseWeight = false;
373
+ // If the stake is below the registered stake, check if the operator will lose weight
374
+ if (cappedStake < registeredStake) {
375
+ stakeDeficit = registeredStake - cappedStake;
376
+ // If the stake deficit is behind the weight scale factor, the operator will lose weight
377
+ if (stakeDeficit >= weightScaleFactor) {
378
+ if (activeNodes.length > 0) {
379
+ willLoseWeight = true;
380
+ }
381
+ }
382
+ }
383
+ predictions.push({
384
+ operator,
385
+ willLoseWeight,
386
+ currentTotalStake: theoreticalStake,
387
+ cappedTotalStake: cappedStake,
388
+ registeredStake,
389
+ stakeDeficit,
390
+ activeNodesCount: activeNodes.length
391
+ });
392
+ }
393
+ return predictions;
394
+ }
395
+ async function middlewareInfo(middleware) {
396
+ logger_1.logger.log("Fetching middleware information...");
397
+ const results = await middleware.multicall([
398
+ 'owner',
399
+ 'BALANCER',
400
+ 'PRIMARY_ASSET_CLASS',
401
+ 'PRIMARY_ASSET',
402
+ 'WEIGHT_SCALE_FACTOR',
403
+ 'UPDATE_WINDOW',
404
+ 'START_TIME',
405
+ 'getCurrentEpoch',
406
+ 'getAllOperators',
407
+ 'getCollateralClassIds',
408
+ 'lastGlobalNodeStakeUpdateEpoch',
409
+ 'getVaultManager'
410
+ ]);
411
+ const info = {
412
+ middlewareAddress: middleware.address,
413
+ owner: results[0],
414
+ balancerValidatorManager: results[1],
415
+ primaryAssetClass: results[2]?.toString(),
416
+ primaryAsset: results[3],
417
+ weightScaleFactor: results[4]?.toString(),
418
+ updateWindow: results[5]?.toString(),
419
+ startTime: new Date(Number(results[6]) * 1000).toLocaleString(),
420
+ currentEpoch: results[7]?.toString(),
421
+ operatorsCount: results[8].length,
422
+ collateralClassIds: results[9]?.map(id => id.toString()),
423
+ lastGlobalNodeStakeUpdateEpoch: results[10]?.toString(),
424
+ vaultManager: results[11],
425
+ };
426
+ logger_1.logger.logJsonTree(info);
427
+ logger_1.logger.addData('middlewareInfo', info);
428
+ return info;
429
+ }
430
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { SafeSuzakuContract, SuzakuContract } from './lib/viemUtils';
2
+ declare function registerOperator(operatorRegistry: SafeSuzakuContract['OperatorRegistry'], metadataUrl: string): Promise<void>;
3
+ declare function listOperators(operatorRegistry: SuzakuContract['OperatorRegistry']): Promise<void>;
4
+ export { registerOperator, listOperators };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerOperator = registerOperator;
4
+ exports.listOperators = listOperators;
5
+ const logger_1 = require("./lib/logger");
6
+ async function registerOperator(operatorRegistry, metadataUrl) {
7
+ logger_1.logger.log("Registering operator...");
8
+ const hash = await operatorRegistry.safeWrite.registerOperator([metadataUrl]);
9
+ logger_1.logger.log("Registered operator successfully, Transaction hash:", hash);
10
+ }
11
+ async function listOperators(operatorRegistry) {
12
+ const result = await operatorRegistry.read.getAllOperators();
13
+ const [addresses, metadataUrls] = result;
14
+ const totalOperators = addresses.length;
15
+ logger_1.logger.log(`\nTotal operators: ${totalOperators}\n`);
16
+ const operators = Array.from({ length: totalOperators }, (_, i) => ({
17
+ address: addresses[i],
18
+ metadataUrl: metadataUrls[i]
19
+ }));
20
+ logger_1.logger.logJsonTree(operators);
21
+ }
22
+ //# sourceMappingURL=operator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator.js","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":";;AAiCS,4CAAgB;AAAE,sCAAa;AAhCxC,yCAAsC;AAEtC,KAAK,UAAU,gBAAgB,CAC3B,gBAAwD,EACxD,WAAmB;IAEnB,eAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9E,eAAM,CAAC,GAAG,CAAC,qDAAqD,EAAE,IAAI,CAAC,CAAC;AAE5E,CAAC;AAED,KAAK,UAAU,aAAa,CACxB,gBAAoD;IAEpD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IAE7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC;IACzC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;IAExC,eAAM,CAAC,GAAG,CAAC,sBAAsB,cAAc,IAAI,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACrB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAC,CAAC;IACJ,eAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAElC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { SafeSuzakuContract, SuzakuContract } from './lib/viemUtils';
2
+ import { Hex } from 'viem';
3
+ export declare function optInL1(optInService: SafeSuzakuContract['OperatorL1OptInService'], l1Address: Hex): Promise<void>;
4
+ export declare function optOutL1(optInService: SafeSuzakuContract['OperatorL1OptInService'], l1Address: Hex): Promise<void>;
5
+ export declare function checkOptInL1(optInService: SuzakuContract['OperatorL1OptInService'], operator: Hex, l1Address: Hex): Promise<boolean>;
6
+ export declare function optInVault(optInService: SafeSuzakuContract['OperatorVaultOptInService'], vaultAddress: Hex): Promise<void>;
7
+ export declare function optOutVault(optInService: SafeSuzakuContract['OperatorVaultOptInService'], vaultAddress: Hex): Promise<void>;
8
+ export declare function checkOptInVault(optInService: SuzakuContract['OperatorVaultOptInService'], operator: Hex, vaultAddress: Hex): Promise<boolean>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optInL1 = optInL1;
4
+ exports.optOutL1 = optOutL1;
5
+ exports.checkOptInL1 = checkOptInL1;
6
+ exports.optInVault = optInVault;
7
+ exports.optOutVault = optOutVault;
8
+ exports.checkOptInVault = checkOptInVault;
9
+ const logger_1 = require("./lib/logger");
10
+ // L1 opt-in functionality
11
+ async function optInL1(optInService, l1Address) {
12
+ logger_1.logger.log("Opting in to L1...");
13
+ const hash = await optInService.safeWrite.optIn([l1Address]);
14
+ logger_1.logger.log("L1 opt-in successful, tx hash:", hash);
15
+ }
16
+ async function optOutL1(optInService, l1Address) {
17
+ const hash = await optInService.safeWrite.optOut([l1Address]);
18
+ logger_1.logger.log("L1 opt-out successful, tx hash:", hash);
19
+ }
20
+ async function checkOptInL1(optInService, operator, l1Address) {
21
+ const result = await optInService.read.isOptedIn([operator, l1Address]);
22
+ logger_1.logger.log(`Operator ${operator} opt-in status for L1 ${l1Address}: ${result}`);
23
+ return result;
24
+ }
25
+ // Vault opt-in functionality
26
+ async function optInVault(optInService, vaultAddress) {
27
+ const hash = await optInService.safeWrite.optIn([vaultAddress]);
28
+ logger_1.logger.log("Vault opt-in successful, tx hash:", hash);
29
+ }
30
+ async function optOutVault(optInService, vaultAddress) {
31
+ const hash = await optInService.safeWrite.optOut([vaultAddress]);
32
+ logger_1.logger.log("Vault opt-out successful, tx hash:", hash);
33
+ }
34
+ async function checkOptInVault(optInService, operator, vaultAddress) {
35
+ const result = await optInService.read.isOptedIn([operator, vaultAddress]);
36
+ logger_1.logger.log(`Operator ${operator} opt-in status for vault ${vaultAddress}: ${result}`);
37
+ return result;
38
+ }
39
+ //# sourceMappingURL=operatorOptIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operatorOptIn.js","sourceRoot":"","sources":["../src/operatorOptIn.ts"],"names":[],"mappings":";;AAKA,0BAOC;AAED,4BAMC;AAED,oCAUC;AAGD,gCAMC;AAED,kCAMC;AAED,0CAUC;AA3DD,yCAAsC;AAEtC,0BAA0B;AACnB,KAAK,UAAU,OAAO,CAC3B,YAA0D,EAC1D,SAAc;IAEd,eAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,eAAM,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAEM,KAAK,UAAU,QAAQ,CAC5B,YAA0D,EAC1D,SAAc;IAEd,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,eAAM,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,YAAsD,EACtD,QAAa,EACb,SAAc;IAEd,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,CAC9C,CAAC,QAAQ,EAAE,SAAS,CAAC,CACtB,CAAC;IACF,eAAM,CAAC,GAAG,CAAC,YAAY,QAAQ,yBAAyB,SAAS,KAAK,MAAM,EAAE,CAAC,CAAC;IAChF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6BAA6B;AACtB,KAAK,UAAU,UAAU,CAC9B,YAA6D,EAC7D,YAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAChE,eAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,YAA6D,EAC7D,YAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACjE,eAAM,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,YAAyD,EACzD,QAAa,EACb,YAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,CAC9C,CAAC,QAAQ,EAAE,YAAY,CAAC,CACzB,CAAC;IACF,eAAM,CAAC,GAAG,CAAC,YAAY,QAAQ,4BAA4B,YAAY,KAAK,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC;AAChB,CAAC"}