@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.
- package/LICENSE +96 -0
- package/README.md +1080 -0
- package/bin/cli.js +3 -0
- package/defaults/.env.anvil +4 -0
- package/defaults/.env.dexalot +7 -0
- package/defaults/.env.fuji +4 -0
- package/defaults/.env.kiteai +2 -0
- package/defaults/.env.mainnet +4 -0
- package/defaults/.env.template +10 -0
- package/dist/abis/AccessControl.d.ts +176 -0
- package/dist/abis/AccessControl.js +230 -0
- package/dist/abis/AccessControl.js.map +1 -0
- package/dist/abis/BalancerValidatorManager.d.ts +1121 -0
- package/dist/abis/BalancerValidatorManager.js +1469 -0
- package/dist/abis/BalancerValidatorManager.js.map +1 -0
- package/dist/abis/DefaultCollateral.d.ts +620 -0
- package/dist/abis/DefaultCollateral.js +811 -0
- package/dist/abis/DefaultCollateral.js.map +1 -0
- package/dist/abis/ERC20.d.ts +635 -0
- package/dist/abis/ERC20.js +831 -0
- package/dist/abis/ERC20.js.map +1 -0
- package/dist/abis/IWarpMessenger.d.ts +104 -0
- package/dist/abis/IWarpMessenger.js +139 -0
- package/dist/abis/IWarpMessenger.js.map +1 -0
- package/dist/abis/KiteStakingManager.d.ts +1459 -0
- package/dist/abis/KiteStakingManager.js +1886 -0
- package/dist/abis/KiteStakingManager.js.map +1 -0
- package/dist/abis/L1Middleware.d.ts +1712 -0
- package/dist/abis/L1Middleware.js +2242 -0
- package/dist/abis/L1Middleware.js.map +1 -0
- package/dist/abis/L1Registry.d.ts +415 -0
- package/dist/abis/L1Registry.js +544 -0
- package/dist/abis/L1Registry.js.map +1 -0
- package/dist/abis/L1RestakeDelegator.d.ts +865 -0
- package/dist/abis/L1RestakeDelegator.js +1118 -0
- package/dist/abis/L1RestakeDelegator.js.map +1 -0
- package/dist/abis/OperatorL1OptInService.d.ts +288 -0
- package/dist/abis/OperatorL1OptInService.js +374 -0
- package/dist/abis/OperatorL1OptInService.js.map +1 -0
- package/dist/abis/OperatorRegistry.d.ts +125 -0
- package/dist/abis/OperatorRegistry.js +166 -0
- package/dist/abis/OperatorRegistry.js.map +1 -0
- package/dist/abis/OperatorVaultOptInService.d.ts +288 -0
- package/dist/abis/OperatorVaultOptInService.js +374 -0
- package/dist/abis/OperatorVaultOptInService.js.map +1 -0
- package/dist/abis/Ownable.d.ts +59 -0
- package/dist/abis/Ownable.js +79 -0
- package/dist/abis/Ownable.js.map +1 -0
- package/dist/abis/PoASecurityModule.d.ts +225 -0
- package/dist/abis/PoASecurityModule.js +299 -0
- package/dist/abis/PoASecurityModule.js.map +1 -0
- package/dist/abis/RewardsNativeToken.d.ts +1334 -0
- package/dist/abis/RewardsNativeToken.js +1749 -0
- package/dist/abis/RewardsNativeToken.js.map +1 -0
- package/dist/abis/StakingVault.d.ts +2913 -0
- package/dist/abis/StakingVault.js +3780 -0
- package/dist/abis/StakingVault.js.map +1 -0
- package/dist/abis/StakingVaultOperations.d.ts +980 -0
- package/dist/abis/StakingVaultOperations.js +1270 -0
- package/dist/abis/StakingVaultOperations.js.map +1 -0
- package/dist/abis/UptimeTracker.d.ts +300 -0
- package/dist/abis/UptimeTracker.js +397 -0
- package/dist/abis/UptimeTracker.js.map +1 -0
- package/dist/abis/ValidatorManager.d.ts +842 -0
- package/dist/abis/ValidatorManager.js +1101 -0
- package/dist/abis/ValidatorManager.js.map +1 -0
- package/dist/abis/VaultFactory.d.ts +288 -0
- package/dist/abis/VaultFactory.js +378 -0
- package/dist/abis/VaultFactory.js.map +1 -0
- package/dist/abis/VaultManager.d.ts +519 -0
- package/dist/abis/VaultManager.js +678 -0
- package/dist/abis/VaultManager.js.map +1 -0
- package/dist/abis/VaultTokenized.d.ts +1626 -0
- package/dist/abis/VaultTokenized.js +2114 -0
- package/dist/abis/VaultTokenized.js.map +1 -0
- package/dist/abis/abi-selectors.json +700 -0
- package/dist/abis/index.d.ts +18356 -0
- package/dist/abis/index.js +58 -0
- package/dist/abis/index.js.map +1 -0
- package/dist/accessControl.d.ts +15 -0
- package/dist/accessControl.js +36 -0
- package/dist/accessControl.js.map +1 -0
- package/dist/balancer.d.ts +25 -0
- package/dist/balancer.js +42 -0
- package/dist/balancer.js.map +1 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +3183 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +31343 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.js +76 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +63 -0
- package/dist/config.js.map +1 -0
- package/dist/delegator.d.ts +4 -0
- package/dist/delegator.js +16 -0
- package/dist/delegator.js.map +1 -0
- package/dist/index.d.mts +19770 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +27451 -0
- package/dist/index.mjs.map +1 -0
- package/dist/keyStore.d.ts +3 -0
- package/dist/keyStore.js +105 -0
- package/dist/keyStore.js.map +1 -0
- package/dist/kiteStaking.d.ts +91 -0
- package/dist/kiteStaking.js +731 -0
- package/dist/kiteStaking.js.map +1 -0
- package/dist/l1.d.ts +5 -0
- package/dist/l1.js +22 -0
- package/dist/l1.js.map +1 -0
- package/dist/lib/autoCompletion.d.ts +3 -0
- package/dist/lib/autoCompletion.js +55 -0
- package/dist/lib/autoCompletion.js.map +1 -0
- package/dist/lib/cChainUtils.d.ts +42 -0
- package/dist/lib/cChainUtils.js +271 -0
- package/dist/lib/cChainUtils.js.map +1 -0
- package/dist/lib/castUtils.d.ts +18 -0
- package/dist/lib/castUtils.js +81 -0
- package/dist/lib/castUtils.js.map +1 -0
- package/dist/lib/chainList.d.ts +5 -0
- package/dist/lib/chainList.js +86 -0
- package/dist/lib/chainList.js.map +1 -0
- package/dist/lib/cliParser.d.ts +27 -0
- package/dist/lib/cliParser.js +167 -0
- package/dist/lib/cliParser.js.map +1 -0
- package/dist/lib/commandUtils.d.ts +13 -0
- package/dist/lib/commandUtils.js +38 -0
- package/dist/lib/commandUtils.js.map +1 -0
- package/dist/lib/coreWalletUtils.d.ts +3 -0
- package/dist/lib/coreWalletUtils.js +74 -0
- package/dist/lib/coreWalletUtils.js.map +1 -0
- package/dist/lib/justification.d.ts +90 -0
- package/dist/lib/justification.js +577 -0
- package/dist/lib/justification.js.map +1 -0
- package/dist/lib/ledgerUtils.d.ts +4 -0
- package/dist/lib/ledgerUtils.js +258 -0
- package/dist/lib/ledgerUtils.js.map +1 -0
- package/dist/lib/logger.d.ts +46 -0
- package/dist/lib/logger.js +226 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/pChainUtils.d.ts +128 -0
- package/dist/lib/pChainUtils.js +436 -0
- package/dist/lib/pChainUtils.js.map +1 -0
- package/dist/lib/pass.d.ts +81 -0
- package/dist/lib/pass.js +353 -0
- package/dist/lib/pass.js.map +1 -0
- package/dist/lib/safeUtils.d.ts +25 -0
- package/dist/lib/safeUtils.js +93 -0
- package/dist/lib/safeUtils.js.map +1 -0
- package/dist/lib/transferUtils.d.ts +643 -0
- package/dist/lib/transferUtils.js +141 -0
- package/dist/lib/transferUtils.js.map +1 -0
- package/dist/lib/utils.d.ts +28 -0
- package/dist/lib/utils.js +166 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/viemUtils.d.ts +80 -0
- package/dist/lib/viemUtils.js +317 -0
- package/dist/lib/viemUtils.js.map +1 -0
- package/dist/lib/warpUtils.d.ts +76 -0
- package/dist/lib/warpUtils.js +448 -0
- package/dist/lib/warpUtils.js.map +1 -0
- package/dist/middleware.d.ts +75 -0
- package/dist/middleware.js +430 -0
- package/dist/middleware.js.map +1 -0
- package/dist/operator.d.ts +4 -0
- package/dist/operator.js +22 -0
- package/dist/operator.js.map +1 -0
- package/dist/operatorOptIn.d.ts +8 -0
- package/dist/operatorOptIn.js +39 -0
- package/dist/operatorOptIn.js.map +1 -0
- package/dist/rewards.d.ts +116 -0
- package/dist/rewards.js +244 -0
- package/dist/rewards.js.map +1 -0
- package/dist/securityModule.d.ts +8 -0
- package/dist/securityModule.js +305 -0
- package/dist/securityModule.js.map +1 -0
- package/dist/stakingVault.d.ts +184 -0
- package/dist/stakingVault.js +1224 -0
- package/dist/stakingVault.js.map +1 -0
- package/dist/uptime.d.ts +54 -0
- package/dist/uptime.js +246 -0
- package/dist/uptime.js.map +1 -0
- package/dist/vault.d.ts +16 -0
- package/dist/vault.js +131 -0
- package/dist/vault.js.map +1 -0
- package/dist/vaultManager.d.ts +8 -0
- package/dist/vaultManager.js +40 -0
- package/dist/vaultManager.js.map +1 -0
- 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 {};
|