@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,305 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.completeValidatorRegistration = completeValidatorRegistration;
4
+ exports.completeValidatorRemoval = completeValidatorRemoval;
5
+ exports.completeWeightUpdate = completeWeightUpdate;
6
+ const viem_1 = require("viem");
7
+ const config_1 = require("./config");
8
+ const utils_1 = require("./lib/utils");
9
+ const logger_1 = require("./lib/logger");
10
+ const console_log_colors_1 = require("console-log-colors");
11
+ const warpUtils_1 = require("./lib/warpUtils");
12
+ const pChainUtils_1 = require("./lib/pChainUtils");
13
+ const ts_belt_1 = require("@mobily/ts-belt");
14
+ const justification_1 = require("./lib/justification");
15
+ const avalanchejs_1 = require("@avalabs/avalanchejs");
16
+ async function completeValidatorRegistration(pchainClient, securityModule, balancer, config, blsProofOfPossession, addNodeTxHash, initialBalance, waitValidatorVisible) {
17
+ logger_1.logger.log("Completing validator registration...");
18
+ const client = config.client;
19
+ // Wait for transaction receipt to extract warp message and validation ID
20
+ const receipt = await client.waitForTransactionReceipt({ hash: addNodeTxHash });
21
+ const InitiatedValidatorRegistration = (0, viem_1.parseEventLogs)({
22
+ abi: balancer.abi,
23
+ logs: receipt.logs,
24
+ eventName: 'InitiatedValidatorRegistration'
25
+ })[0];
26
+ if (!InitiatedValidatorRegistration) {
27
+ logger_1.logger.error(console_log_colors_1.color.red("No InitiatedValidatorRegistration event found in the transaction logs, verify the transaction hash."));
28
+ process.exit(1);
29
+ }
30
+ const warpLogs = (0, viem_1.parseEventLogs)({
31
+ abi: config.abis.IWarpMessenger,
32
+ logs: receipt.logs,
33
+ })[0];
34
+ const signingSubnetId = await (0, warpUtils_1.getSigningSubnetIdFromWarpMessage)(client, warpLogs.args.message);
35
+ const nodeId = (0, utils_1.encodeNodeID)(InitiatedValidatorRegistration.args.nodeID); // Convert bytes32 to NodeID format by removing the first 12 bytes
36
+ // Check if the node is still registered as a validator on the P-Chain
37
+ const subnetIDHex = await balancer.read.subnetID();
38
+ const subnetID = avalanchejs_1.utils.base58check.encode((0, viem_1.hexToBytes)(subnetIDHex));
39
+ const isValidator = (await (0, pChainUtils_1.getCurrentValidators)(client, subnetID)).some((v) => v.nodeID === nodeId);
40
+ if (isValidator) {
41
+ logger_1.logger.log(console_log_colors_1.color.yellow("Node is already registered as a validator on the P-Chain, skipping registerL1Validator call."));
42
+ }
43
+ else {
44
+ // Get the unsigned warp message from the receipt
45
+ const RegisterL1ValidatorUnsignedWarpMsg = warpLogs.args.message;
46
+ // Collect signatures for the warp message
47
+ logger_1.logger.log("\nCollecting signatures for the L1ValidatorRegistrationMessage from the Validator Manager chain...");
48
+ const signedMessage = await (0, warpUtils_1.collectSignatures)({ network: client.network, message: RegisterL1ValidatorUnsignedWarpMsg, signingSubnetId });
49
+ // Register validator on P-Chain
50
+ logger_1.logger.log("\nRegistering validator on P-Chain...");
51
+ // eslint-disable-next-line
52
+ (0, ts_belt_1.pipe)(await (0, pChainUtils_1.registerL1Validator)({
53
+ client: pchainClient,
54
+ blsProofOfPossession: blsProofOfPossession,
55
+ signedMessage,
56
+ initialBalance: initialBalance
57
+ }), ts_belt_1.R.tap(pChainTxId => logger_1.logger.log("RegisterL1ValidatorTx executed on P-Chain:", pChainTxId))),
58
+ ts_belt_1.R.tapError(err => { logger_1.logger.error(err); process.exit(1); });
59
+ }
60
+ // Get the validation ID from the receipt logs
61
+ const validationIDHex = InitiatedValidatorRegistration.args.validationID;
62
+ // Pack and sign the P-Chain warp message
63
+ const validationIDBytes = (0, viem_1.hexToBytes)(validationIDHex);
64
+ const unsignedPChainWarpMsg = (0, warpUtils_1.packL1ValidatorRegistration)(validationIDBytes, true, client.network === 'fuji' ? 5 : 1, config_1.pChainChainID);
65
+ const unsignedPChainWarpMsgHex = (0, viem_1.bytesToHex)(unsignedPChainWarpMsg);
66
+ // Aggregate signatures from validators
67
+ logger_1.logger.log("\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...");
68
+ const signedPChainMessage = await (0, warpUtils_1.collectSignatures)({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });
69
+ // Convert the signed warp message to bytes and pack into access list
70
+ const signedPChainWarpMsgBytes = (0, viem_1.hexToBytes)(`0x${signedPChainMessage}`);
71
+ const accessList = (0, warpUtils_1.packWarpIntoAccessList)(signedPChainWarpMsgBytes);
72
+ logger_1.logger.log("\nCalling function completeValidatorRegistration...");
73
+ // TODO: Find a way to use the proper signature of the method
74
+ const method = securityModule.safeWrite.completeValidatorRegistration;
75
+ const hash = await method([0], {
76
+ account: client.account,
77
+ chain: null,
78
+ accessList
79
+ });
80
+ // Wait until the validator is visible on the P-Chain
81
+ if (waitValidatorVisible) {
82
+ logger_1.logger.log("Waiting for the validator to be visible on the P-Chain (may take a while)...");
83
+ await (0, utils_1.retryWhileError)(async () => (await (0, pChainUtils_1.getCurrentValidators)(client, subnetID)).some((v) => v.nodeID === nodeId), 5000, 180000, (res) => res === true);
84
+ }
85
+ logger_1.logger.log("completeValidatorRegistration executed successfully, tx hash:", hash);
86
+ }
87
+ async function completeValidatorRemoval(pchainClient, securityModule, balancerValidatorManager, config, initializeEndValidationTxHash, waitValidatorVisible, nodeIDs, addNodeTxHash) {
88
+ logger_1.logger.log("Completing validator removal...");
89
+ const client = config.client;
90
+ // Wait for the removeNode transaction to be confirmed to extract the unsigned L1ValidatorWeightMessage and validationID from the receipt
91
+ const receipt = await client.waitForTransactionReceipt({ hash: initializeEndValidationTxHash, confirmations: 1 });
92
+ if (receipt.status === 'reverted')
93
+ throw new Error(`Transaction ${initializeEndValidationTxHash} reverted, pls resend the removeNode transaction`);
94
+ // Select the NodeRemoved events from the receipt, filter by nodeIDs if provided and if securityModule is L1Middleware
95
+ let nodeRemoved;
96
+ if (securityModule.name === "L1Middleware") {
97
+ nodeRemoved = (0, viem_1.parseEventLogs)({
98
+ abi: securityModule.abi,
99
+ logs: receipt.logs,
100
+ eventName: 'NodeRemoved'
101
+ }).filter((e) => nodeIDs ? nodeIDs.includes((0, utils_1.encodeNodeID)(e.args.nodeId)) : true);
102
+ if (nodeRemoved.length === 0) {
103
+ logger_1.logger.error(console_log_colors_1.color.red("No matching NodeRemoved event found for the provided NodeIDs, verify the transaction hash and NodeIDs."));
104
+ process.exit(1);
105
+ }
106
+ }
107
+ // If securityModule is PoASecurityModule
108
+ else {
109
+ const validationId = (0, viem_1.parseEventLogs)({
110
+ abi: config.abis.ValidatorManager,
111
+ logs: receipt.logs,
112
+ eventName: 'InitiatedValidatorRemoval'
113
+ })[0].args.validationID;
114
+ if (!validationId) {
115
+ logger_1.logger.error(console_log_colors_1.color.red("No matching InitiatedValidatorRemoval event found for the provided NodeIDs, verify the transaction hash and NodeIDs."));
116
+ process.exit(1);
117
+ }
118
+ const nodeID = (await balancerValidatorManager.read.getValidator([validationId])).nodeID;
119
+ nodeRemoved = [{
120
+ args: {
121
+ nodeId: nodeID,
122
+ validationID: validationId
123
+ },
124
+ blockNumber: BigInt(receipt.blockNumber), // Not going to be used in GetRegistrationJustification because the justification will be found in the ConvertSubnetToL1Tx
125
+ }];
126
+ }
127
+ const initiatedValidatorRemovals = (0, viem_1.parseEventLogs)({
128
+ abi: balancerValidatorManager.abi,
129
+ logs: receipt.logs,
130
+ eventName: 'InitiatedValidatorRemoval'
131
+ });
132
+ const warpLogs = (0, viem_1.parseEventLogs)({
133
+ abi: config.abis.IWarpMessenger,
134
+ logs: receipt.logs,
135
+ });
136
+ const signingSubnetId = await (0, warpUtils_1.getSigningSubnetIdFromWarpMessage)(client, warpLogs[0].args.message);
137
+ const subnetIDHex = await balancerValidatorManager.read.subnetID();
138
+ const subnetID = avalanchejs_1.utils.base58check.encode((0, viem_1.hexToBytes)(subnetIDHex));
139
+ const currentValidators = (await (0, pChainUtils_1.getCurrentValidators)(client, subnetID));
140
+ for (const event of nodeRemoved) {
141
+ const eventIndex = nodeRemoved.indexOf(event);
142
+ const initiatedValidatorRemoval = initiatedValidatorRemovals.find((e) => e.args.validationID === event.args.validationID);
143
+ const warpLog = warpLogs.find((w) => w.args.messageID === initiatedValidatorRemoval.args.validatorWeightMessageID);
144
+ const validationID = event.args.validationID;
145
+ const nodeID = (0, utils_1.encodeNodeID)(event.args.nodeId); // Convert bytes32 to NodeID format by removing the first 12 bytes
146
+ logger_1.logger.log(nodeID);
147
+ let addNodeBlockNumber = event.blockNumber;
148
+ if (addNodeTxHash && addNodeTxHash.length > eventIndex) {
149
+ const receipt = await client.waitForTransactionReceipt({ hash: addNodeTxHash[eventIndex], confirmations: 0 });
150
+ if (receipt.status === 'reverted')
151
+ throw new Error(`Transaction ${addNodeTxHash[eventIndex]} reverted, pls use another addNode tx`);
152
+ const addNodeLogs = (0, viem_1.parseEventLogs)({
153
+ abi: config.abis.L1Middleware,
154
+ logs: receipt.logs,
155
+ });
156
+ if (!addNodeLogs.some((w) => w.eventName === 'NodeAdded')) {
157
+ logger_1.logger.error(console_log_colors_1.color.red("No matching NodeAdded event found for the provided NodeIDs, verify the addNode tx hash."));
158
+ process.exit(1);
159
+ }
160
+ addNodeBlockNumber = receipt.blockNumber;
161
+ }
162
+ // Check if the node is still registered as a validator on the P-Chain
163
+ const isValidator = currentValidators.some((v) => v.nodeID === nodeID);
164
+ if (!isValidator) {
165
+ logger_1.logger.log(console_log_colors_1.color.yellow("Node is not registered as a validator on the P-Chain."));
166
+ }
167
+ else {
168
+ // Get the unsigned L1ValidatorWeightMessage with weight=0 generated by the ValidatorManager from the receipt
169
+ const unsignedL1ValidatorWeightMessage = warpLog.args.message;
170
+ // Aggregate signatures from validators
171
+ const signedL1ValidatorWeightMessage = await (0, warpUtils_1.collectSignatures)({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });
172
+ logger_1.logger.log("Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain");
173
+ // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage
174
+ (0, ts_belt_1.pipe)(await (0, pChainUtils_1.setValidatorWeight)({
175
+ client: pchainClient,
176
+ validationID: validationID,
177
+ message: signedL1ValidatorWeightMessage
178
+ }), ts_belt_1.R.tapError((error) => {
179
+ throw new Error("SetL1ValidatorWeightTx failed on P-Chain: " + error + '\n');
180
+ }), ts_belt_1.R.tap((txId) => {
181
+ logger_1.logger.log("SetL1ValidatorWeightTx executed on P-Chain: " + txId);
182
+ }));
183
+ }
184
+ // Get SubnetID in Hex from the BalancerValidatorManager
185
+ const subnetIDHex = await balancerValidatorManager.read.subnetID();
186
+ // Convert SubnetID to cb58
187
+ const subnetIDC58 = avalanchejs_1.utils.base58check.encode((0, viem_1.hexToBytes)(subnetIDHex));
188
+ // get justification for original register validator tx (the unsigned warp msg emitted)
189
+ const justification = await (0, justification_1.GetRegistrationJustification)(nodeID, validationID, subnetIDC58, client, addNodeBlockNumber);
190
+ if (!justification) {
191
+ throw new Error("Justification not found for validator removal");
192
+ }
193
+ // Pack and sign the P-Chain warp message
194
+ const validationIDBytes = (0, viem_1.hexToBytes)(validationID);
195
+ const unsignedPChainWarpMsg = (0, warpUtils_1.packL1ValidatorRegistration)(validationIDBytes, false, client.network === 'fuji' ? 5 : 1, config_1.pChainChainID);
196
+ const unsignedPChainWarpMsgHex = (0, viem_1.bytesToHex)(unsignedPChainWarpMsg);
197
+ // Aggregate signatures from validators
198
+ // logger.log("\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...");
199
+ const signedPChainMessage = await (0, warpUtils_1.collectSignatures)({ network: client.network, message: unsignedPChainWarpMsgHex, justification: (0, viem_1.bytesToHex)(justification), signingSubnetId });
200
+ logger_1.logger.log("Aggregated signatures for the L1ValidatorRegistrationMessage from the P-Chain");
201
+ // Convert the signed warp message to bytes and pack into access list
202
+ const signedPChainWarpMsgBytes = (0, viem_1.hexToBytes)(`0x${signedPChainMessage}`);
203
+ const accessList = (0, warpUtils_1.packWarpIntoAccessList)(signedPChainWarpMsgBytes);
204
+ // Execute completeEndValidation transaction
205
+ logger_1.logger.log("Executing completeEndValidation transaction...");
206
+ // TODO: Find a way to use the proper signature of the method
207
+ const method = securityModule.safeWrite.completeValidatorRemoval;
208
+ const completeHash = await method([0], {
209
+ account: client.account,
210
+ chain: null,
211
+ accessList
212
+ });
213
+ if (waitValidatorVisible) { // Wait only for the last validator is enough
214
+ logger_1.logger.log("Waiting for the validator to be removed from the P-Chain (may take a while)...");
215
+ await (0, utils_1.retryWhileError)(async () => (await (0, pChainUtils_1.getCurrentValidators)(client, subnetID)).some((v) => v.nodeID === nodeID), 5000, 180000, (res) => res === false);
216
+ }
217
+ logger_1.logger.log("completeValidatorRemoval executed successfully, tx hash:", completeHash);
218
+ }
219
+ }
220
+ async function completeWeightUpdate(pchainClient, securityModule, config, validatorWeightUpdateTxHash, nodeIDs) {
221
+ logger_1.logger.log("Completing node stake update...");
222
+ const client = config.client;
223
+ // Wait for the removeNode transaction to be confirmed to extract the unsigned L1ValidatorWeightMessage and validationID from the receipt
224
+ const receipt = await client.waitForTransactionReceipt({ hash: validatorWeightUpdateTxHash });
225
+ const balancerAddress = await securityModule.read.balancerValidatorManager();
226
+ const balancer = await config.contracts.BalancerValidatorManager(balancerAddress);
227
+ // Convert nodeIDs to validationIDs
228
+ let validationIds;
229
+ if (nodeIDs) {
230
+ validationIds = (await client.multicall({
231
+ contracts: nodeIDs.map((id) => {
232
+ return {
233
+ ...balancer,
234
+ functionName: 'getNodeValidationID',
235
+ args: [(0, utils_1.parseNodeID)(id)]
236
+ };
237
+ })
238
+ })).reduce((acc, res) => {
239
+ if (res.result) {
240
+ acc.push(res.result);
241
+ }
242
+ else {
243
+ logger_1.logger.warn(console_log_colors_1.color.yellow(`Warning: No validation ID found for NodeID ${nodeIDs[acc.length]}`));
244
+ }
245
+ ;
246
+ return acc;
247
+ }, []);
248
+ }
249
+ else
250
+ validationIds = undefined;
251
+ const InitiatedValidatorWeightUpdates = (0, viem_1.parseEventLogs)({
252
+ abi: config.abis.BalancerValidatorManager,
253
+ logs: receipt.logs,
254
+ eventName: 'InitiatedValidatorWeightUpdate'
255
+ }).filter((e) => validationIds ? validationIds.includes(e.args.validationID) : true);
256
+ if (InitiatedValidatorWeightUpdates.length === 0) {
257
+ logger_1.logger.error(console_log_colors_1.color.red("No matching NodeStakeUpdated event found for the provided NodeIDs. Verify the transaction hash and NodeIDs."));
258
+ process.exit(1);
259
+ }
260
+ const warpLogs = (0, viem_1.parseEventLogs)({
261
+ abi: config.abis.IWarpMessenger,
262
+ logs: receipt.logs,
263
+ });
264
+ const signingSubnetId = await (0, warpUtils_1.getSigningSubnetIdFromWarpMessage)(client, warpLogs[0].args.message);
265
+ for (const event of InitiatedValidatorWeightUpdates) {
266
+ const InitiatedValidatorWeightUpdate = InitiatedValidatorWeightUpdates.find((e) => e.args.validationID === event.args.validationID);
267
+ const warpLog = warpLogs.find((w) => w.args.messageID === InitiatedValidatorWeightUpdate.args.weightUpdateMessageID);
268
+ const weight = InitiatedValidatorWeightUpdate.args.weight;
269
+ const nonce = InitiatedValidatorWeightUpdate.args.nonce;
270
+ const validationIDHex = InitiatedValidatorWeightUpdate.args.validationID;
271
+ const unsignedL1ValidatorWeightMessage = warpLog.args.message;
272
+ // Aggregate signatures from validators
273
+ // logger.log("\nAggregating signatures for the L1ValidatorWeightMessage from the Validator Manager chain...");
274
+ const signedL1ValidatorWeightMessage = await (0, warpUtils_1.collectSignatures)({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });
275
+ logger_1.logger.log("Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain");
276
+ // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage
277
+ (0, ts_belt_1.pipe)(await (0, pChainUtils_1.setValidatorWeight)({
278
+ client: pchainClient,
279
+ validationID: validationIDHex,
280
+ message: signedL1ValidatorWeightMessage
281
+ }), ts_belt_1.R.tap(pChainSetWeightTxId => logger_1.logger.log("SetL1ValidatorWeightTx executed on P-Chain:", pChainSetWeightTxId)), ts_belt_1.R.tapError(err => {
282
+ if (!err.includes('warp message contains stale nonce')) {
283
+ logger_1.logger.error(err);
284
+ process.exit(1);
285
+ }
286
+ logger_1.logger.warn(console_log_colors_1.color.yellow(`Warning: Skipping SetL1ValidatorWeightTx for validationID ${validationIDHex} due to stale nonce (already issued)`));
287
+ }));
288
+ // Pack and sign the P-Chain warp message
289
+ const validationIDBytes = (0, viem_1.hexToBytes)(validationIDHex);
290
+ const unsignedPChainWarpMsg = (0, warpUtils_1.packL1ValidatorWeightMessage)(validationIDBytes, BigInt(nonce), BigInt(weight), client.network === 'fuji' ? 5 : 1, config_1.pChainChainID);
291
+ const unsignedPChainWarpMsgHex = (0, viem_1.bytesToHex)(unsignedPChainWarpMsg);
292
+ // Aggregate signatures from validators
293
+ // logger.log("\nAggregating signatures for the L1ValidatorWeightMessage from the P-Chain...");
294
+ const signedPChainMessage = await (0, warpUtils_1.collectSignatures)({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });
295
+ logger_1.logger.log("Aggregated signatures for the L1ValidatorWeightMessage from the P-Chain");
296
+ // Convert the signed warp message to bytes and pack into access list
297
+ const signedPChainWarpMsgBytes = (0, viem_1.hexToBytes)(`0x${signedPChainMessage}`);
298
+ const accessList = (0, warpUtils_1.packWarpIntoAccessList)(signedPChainWarpMsgBytes);
299
+ // TODO: Find a way to use the proper signature of the method
300
+ const method = securityModule.safeWrite.completeValidatorWeightUpdate;
301
+ const hash = await method([0], { chain: client.chain, accessList });
302
+ logger_1.logger.log("completeStakeUpdate done, tx hash:", hash);
303
+ }
304
+ }
305
+ //# sourceMappingURL=securityModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securityModule.js","sourceRoot":"","sources":["../src/securityModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ import { ExtendedClient, ExtendedWalletClient } from './client';
2
+ import { Config } from './config';
3
+ import { SafeSuzakuContract, SuzakuContract } from './lib/viemUtils';
4
+ import { Hex } from 'viem';
5
+ import { NodeId } from './lib/utils';
6
+ export declare function getValidatorManagerAddress(config: Config<ExtendedWalletClient>, stakingVault: SafeSuzakuContract['StakingVault']): Promise<{
7
+ validatorManagerAddress: Hex;
8
+ stakingManager: SafeSuzakuContract['KiteStakingManager'];
9
+ stakingManagerStorageLocation: Hex;
10
+ }>;
11
+ /**
12
+ * Deposit native tokens (AVAX) into the StakingVault
13
+ * @param client - The wallet client
14
+ * @param stakingVault - The StakingVault contract instance
15
+ * @param amount - Amount to deposit in AVAX (will be converted to wei with 9 decimals)
16
+ * @param minShares - Minimum shares expected from the deposit (slippage protection)
17
+ */
18
+ export declare function depositStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], amount: string, minShares: bigint): Promise<void>;
19
+ /**
20
+ * Request withdrawal from the StakingVault
21
+ * @param client - The wallet client
22
+ * @param stakingVault - The StakingVault contract instance
23
+ * @param shares - Amount of shares to withdraw (in wei, 18 decimals)
24
+ */
25
+ export declare function requestWithdrawalStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], shares: string): Promise<void>;
26
+ /**
27
+ * Claim withdrawal from the StakingVault
28
+ * @param client - The wallet client
29
+ * @param stakingVault - The StakingVault contract instance
30
+ * @param requestId - The withdrawal request ID to claim
31
+ */
32
+ export declare function claimWithdrawalStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], requestId: bigint): Promise<void>;
33
+ /**
34
+ * Process epoch in the StakingVault
35
+ * @param client - The wallet client
36
+ * @param stakingVault - The StakingVault contract instance
37
+ */
38
+ export declare function processEpochStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault']): Promise<void>;
39
+ /**
40
+ * Initiate validator registration in the StakingVault
41
+ * @param client - The wallet client
42
+ * @param config - The config object
43
+ * @param stakingVault - The StakingVault contract instance
44
+ * @param nodeId - The node ID
45
+ * @param blsKey - The BLS public key
46
+ * @param remainingBalanceOwner - P-Chain remaining balance owner struct
47
+ * @param disableOwner - P-Chain disable owner struct
48
+ * @param stakeAmount - The stake amount in AVAX (will be converted to wei with 18 decimals)
49
+ */
50
+ export declare function initiateValidatorRegistrationStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], nodeId: NodeId, blsKey: Hex, remainingBalanceOwner: [number, Hex[]], disableOwner: [number, Hex[]], stakeAmount: string): Promise<void>;
51
+ /**
52
+ * Add an operator to the StakingVault
53
+ * @param client - The wallet client
54
+ * @param config - The config object
55
+ * @param stakingVault - The StakingVault contract instance
56
+ * @param operator - The operator address
57
+ * @param allocationBips - The allocation in basis points (1 bips = 0.01%)
58
+ * @param feeRecipient - The fee recipient address
59
+ */
60
+ export declare function addOperatorStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], operator: Hex, allocationBips: bigint, feeRecipient: Hex): Promise<void>;
61
+ /**
62
+ * Complete validator registration in the StakingVault
63
+ * @param client - The wallet client
64
+ * @param pchainClient - The P-Chain wallet client
65
+ * @param config - The config object
66
+ * @param stakingVault - The StakingVault contract
67
+ * @param validatorManager - The ValidatorManager contract
68
+ * @param blsProofOfPossession - The BLS proof of possession
69
+ * @param initiateTxHash - The initiateValidatorRegistration transaction hash
70
+ * @param initialBalance - The initial balance for the validator (in nAVAX, 9 decimals)
71
+ * @param waitValidatorVisible - Whether to wait for the validator to be visible on P-Chain
72
+ */
73
+ export declare function completeValidatorRegistrationStakingVault(pchainClient: ExtendedWalletClient, config: Config<ExtendedWalletClient>, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], blsProofOfPossession: string, initiateTxHash: Hex, initialBalance: bigint, waitValidatorVisible: boolean): Promise<`0x${string}`>;
74
+ /**
75
+ * Initiate validator removal in the StakingVault
76
+ * @param client - The wallet client
77
+ * @param config - The config object
78
+ * @param stakingVault - The StakingVault contract instance
79
+ * @param validatorManager - The ValidatorManager contract instance
80
+ * @param nodeId - The node ID of the validator to remove
81
+ */
82
+ export declare function initiateValidatorRemovalStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], nodeId: NodeId): Promise<`0x${string}`>;
83
+ /**
84
+ * Force remove a validator from the StakingVault (admin/emergency operation).
85
+ * @param client - The wallet client
86
+ * @param stakingVault - The StakingVault contract instance
87
+ * @param validatorManager - The ValidatorManager contract instance
88
+ * @param nodeId - The node ID of the validator to force remove
89
+ */
90
+ export declare function forceRemoveValidatorStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], nodeId: NodeId): Promise<`0x${string}`>;
91
+ /**
92
+ * Complete validator removal in the StakingVault
93
+ * @param client - The wallet client
94
+ * @param pchainClient - The P-Chain wallet client
95
+ * @param config - The config object
96
+ * @param stakingVault - The StakingVault contract instance
97
+ * @param validatorManager - The ValidatorManager contract instance
98
+ * @param initiateRemovalTxHash - The initiateValidatorRemoval transaction hash
99
+ * @param waitValidatorVisible - Whether to wait for the validator to be removed from P-Chain
100
+ * @param nodeIDs - Optional node IDs to filter removals
101
+ * @param initiateTxHash - Optional initiate validator registration transaction hash for justification
102
+ */
103
+ export declare function completeValidatorRemovalStakingVault(pchainClient: ExtendedWalletClient, config: Config<ExtendedWalletClient>, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], initiateRemovalTxHash: Hex, waitValidatorVisible: boolean, nodeIDs?: NodeId[], initiateTxHash?: Hex): Promise<void>;
104
+ /**
105
+ * Initiate delegator registration in the StakingVault
106
+ * @param client - The wallet client
107
+ * @param config - The config object
108
+ * @param stakingVault - The StakingVault contract instance
109
+ * @param validatorManager - The ValidatorManager contract instance
110
+ * @param nodeId - The node ID of the validator to delegate to
111
+ * @param amount - The stake amount in AVAX (will be converted to wei with 18 decimals)
112
+ */
113
+ export declare function initiateDelegatorRegistrationStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], nodeId: NodeId, amount: string): Promise<`0x${string}`>;
114
+ /**
115
+ * Complete delegator registration in the StakingVault
116
+ * @param client - The wallet client
117
+ * @param pchainClient - The P-Chain wallet client
118
+ * @param config - The config object
119
+ * @param stakingVault - The StakingVault contract instance
120
+ * @param validatorManager - The ValidatorManager contract instance
121
+ * @param initiateTxHash - The initiateDelegatorRegistration transaction hash
122
+ * @param rpcUrl - RPC URL for getting validator uptime
123
+ * @param uptimeBlockchainID - The uptime blockchain ID (Hex) for the source chain ID
124
+ */
125
+ export declare function completeDelegatorRegistrationStakingVault(pchainClient: ExtendedWalletClient, config: Config<ExtendedWalletClient>, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], initiateTxHash: Hex, rpcUrl: string, uptimeBlockchainID: Hex): Promise<Hex>;
126
+ /**
127
+ * Initiate delegator removal in the StakingVault
128
+ * @param client - The wallet client
129
+ * @param stakingVaultAddress - The StakingVault contract address
130
+ * @param delegationID - The delegation ID to remove
131
+ */
132
+ export declare function initiateDelegatorRemovalStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], delegationID: Hex): Promise<`0x${string}`>;
133
+ /**
134
+ * Force remove a delegator from the StakingVault (admin/emergency operation).
135
+ * @param client - The wallet client
136
+ * @param stakingVault - The StakingVault contract instance
137
+ * @param delegationID - The delegation ID to force remove
138
+ */
139
+ export declare function forceRemoveDelegatorStakingVault(client: ExtendedWalletClient, stakingVault: SafeSuzakuContract['StakingVault'], delegationID: Hex): Promise<`0x${string}`>;
140
+ /**
141
+ * Complete delegator removal in the StakingVault
142
+ * @param client - The wallet client
143
+ * @param pchainClient - The P-Chain wallet client
144
+ * @param config - The config object
145
+ * @param stakingVault - The StakingVault contract instance
146
+ * @param validatorManager - The ValidatorManager contract instance
147
+ * @param initiateRemovalTxHash - The initiateDelegatorRemoval transaction hash
148
+ * @param waitValidatorVisible - Whether to wait for the validator to be removed from P-Chain
149
+ * @param delegationIDs - Optional delegation IDs to filter removals
150
+ * @param initiateTxHash - Optional initiate delegator registration transaction hash
151
+ */
152
+ export declare function completeDelegatorRemovalStakingVault(pchainClient: ExtendedWalletClient, config: Config<ExtendedWalletClient>, stakingVault: SafeSuzakuContract['StakingVault'], validatorManager: SafeSuzakuContract['ValidatorManager'], initiateRemovalTxHash: Hex, delegationIDs?: Hex[], initiateTxHash?: Hex): Promise<Hex>;
153
+ export declare function claimOperatorFees(stakingVault: SafeSuzakuContract['StakingVault']): Promise<`0x${string}`>;
154
+ export declare function claimEscrowedWithdrawal(stakingVault: SafeSuzakuContract['StakingVault'], recipient: Hex): Promise<`0x${string}`>;
155
+ type StakingVaultContract = SuzakuContract['StakingVault'];
156
+ /**
157
+ * General overview of the vault
158
+ */
159
+ export declare function getGeneralInfo(stakingVault: StakingVaultContract, client: ExtendedClient): Promise<void>;
160
+ /**
161
+ * Fees configuration
162
+ */
163
+ export declare function getFeesInfo(stakingVault: StakingVaultContract): Promise<void>;
164
+ /**
165
+ * Operators overview
166
+ */
167
+ export declare function getOperatorsInfo(stakingVault: StakingVaultContract): Promise<void>;
168
+ /**
169
+ * Validators details per operator
170
+ */
171
+ export declare function getValidatorsInfo(stakingVault: StakingVaultContract): Promise<void>;
172
+ /**
173
+ * Delegations details per operator
174
+ */
175
+ export declare function getDelegatorsInfo(stakingVault: StakingVaultContract): Promise<void>;
176
+ /**
177
+ * Withdrawal queue info
178
+ */
179
+ export declare function getWithdrawalsInfo(stakingVault: StakingVaultContract): Promise<void>;
180
+ /**
181
+ * Epoch info
182
+ */
183
+ export declare function getEpochInfo(stakingVault: StakingVaultContract): Promise<void>;
184
+ export {};