@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,577 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractPayloadFromAddressedCall = extractPayloadFromAddressedCall;
|
|
4
|
+
exports.calculateValidationID = calculateValidationID;
|
|
5
|
+
exports.GetRegistrationJustification = GetRegistrationJustification;
|
|
6
|
+
exports.hexToUint8Array = hexToUint8Array;
|
|
7
|
+
exports.parseRegisterL1ValidatorMessage = parseRegisterL1ValidatorMessage;
|
|
8
|
+
exports.parseUint32 = parseUint32;
|
|
9
|
+
// Using more generic types without specific library dependencies
|
|
10
|
+
const buffer_1 = require("buffer");
|
|
11
|
+
const viem_1 = require("viem");
|
|
12
|
+
const avalanchejs_1 = require("@avalabs/avalanchejs");
|
|
13
|
+
const sha2_1 = require("@noble/hashes/sha2");
|
|
14
|
+
const warpUtils_1 = require("./warpUtils");
|
|
15
|
+
const logger_1 = require("./logger");
|
|
16
|
+
const codecVersion = 0;
|
|
17
|
+
const REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID = 1;
|
|
18
|
+
/**
|
|
19
|
+
* Extracts the addressedCall from an unsignedWarpMessage
|
|
20
|
+
*
|
|
21
|
+
* UnsignedMessage structure from convertWarp:
|
|
22
|
+
* - codecVersion (uint16 - 2 bytes)
|
|
23
|
+
* - networkID (uint32 - 4 bytes)
|
|
24
|
+
* - sourceChainID (32 bytes)
|
|
25
|
+
* - message length (uint32 - 4 bytes)
|
|
26
|
+
* - message (the variable-length bytes we want)
|
|
27
|
+
*
|
|
28
|
+
* @param messageBytes - The raw unsignedWarpMessage bytes
|
|
29
|
+
* @returns The extracted message (addressedCall)
|
|
30
|
+
*/
|
|
31
|
+
function extractAddressedCall(messageBytes) {
|
|
32
|
+
try {
|
|
33
|
+
// logger.log(`Parsing UnsignedMessage of length: ${messageBytes.length} bytes`);
|
|
34
|
+
if (messageBytes.length < 42) { // 2 + 4 + 32 + 4 = minimum 42 bytes
|
|
35
|
+
// logger.log('UnsignedMessage too short');
|
|
36
|
+
return new Uint8Array();
|
|
37
|
+
}
|
|
38
|
+
// const codecVersion = (messageBytes[0] << 8) | messageBytes[1];
|
|
39
|
+
// logger.log(`Raw codecVersion bytes: 0x${Buffer.from([messageBytes[0], messageBytes[1]]).toString('hex')}`);
|
|
40
|
+
// const networkIDBytes = messageBytes.slice(2, 6);
|
|
41
|
+
// logger.log(`Raw networkID bytes: 0x${Buffer.from(networkIDBytes).toString('hex')}`);
|
|
42
|
+
// const networkID = (messageBytes[2] << 24) |
|
|
43
|
+
// (messageBytes[3] << 16) |
|
|
44
|
+
// (messageBytes[4] << 8) |
|
|
45
|
+
// messageBytes[5];
|
|
46
|
+
// logger.log(`UnsignedMessage -> codecVersion: ${codecVersion}, NetworkID: ${networkID}`);
|
|
47
|
+
// const sourceChainIDBytes = messageBytes.slice(6, 38);
|
|
48
|
+
// logger.log(`Raw sourceChainID bytes: 0x${Buffer.from(sourceChainIDBytes).toString('hex')}`);
|
|
49
|
+
// try {
|
|
50
|
+
// let sourceChainIDStr = utils.base58check.encode(Buffer.from(sourceChainIDBytes));
|
|
51
|
+
// logger.log(`UnsignedMessage -> SourceChainID: ${sourceChainIDStr}`);
|
|
52
|
+
// } catch (e) {
|
|
53
|
+
// logger.log('Could not encode sourceChainID from UnsignedMessage');
|
|
54
|
+
// }
|
|
55
|
+
const messageLength = (messageBytes[38] << 24) |
|
|
56
|
+
(messageBytes[39] << 16) |
|
|
57
|
+
(messageBytes[40] << 8) |
|
|
58
|
+
messageBytes[41];
|
|
59
|
+
// logger.log(`UnsignedMessage -> AddressedCall length: ${messageLength} bytes`);
|
|
60
|
+
if (messageLength <= 0 || 42 + messageLength > messageBytes.length) {
|
|
61
|
+
// logger.log('Invalid message length or message extends beyond UnsignedMessage data bounds');
|
|
62
|
+
return new Uint8Array();
|
|
63
|
+
}
|
|
64
|
+
const addressedCall = messageBytes.slice(42, 42 + messageLength);
|
|
65
|
+
// logger.log(`Extracted AddressedCall of length ${addressedCall.length} bytes`);
|
|
66
|
+
return addressedCall;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
logger_1.logger.error('Error extracting addressedCall from UnsignedMessage:', error);
|
|
70
|
+
return new Uint8Array();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Decodes a Base58Check encoded ID string (like SubnetID or ChainID) into its raw bytes.
|
|
75
|
+
* Returns null if decoding fails.
|
|
76
|
+
* @param idString - The ID string.
|
|
77
|
+
* @returns The decoded bytes as Uint8Array or null.
|
|
78
|
+
*/
|
|
79
|
+
function decodeID(idString) {
|
|
80
|
+
if (!idString) {
|
|
81
|
+
logger_1.logger.error("Invalid ID format: empty string");
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
return avalanchejs_1.utils.base58check.decode(idString);
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
logger_1.logger.error("Error decoding ID:", idString, e);
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Decodes a Base58Check encoded NodeID string (e.g., "NodeID-...") into its raw bytes.
|
|
94
|
+
* Returns null if decoding fails.
|
|
95
|
+
* @param nodeIDString - The NodeID string.
|
|
96
|
+
* @returns The decoded bytes as Uint8Array or null.
|
|
97
|
+
*/
|
|
98
|
+
function decodeNodeID(nodeIDString) {
|
|
99
|
+
if (!nodeIDString || !nodeIDString.startsWith("NodeID-")) {
|
|
100
|
+
logger_1.logger.error("Invalid NodeID format:", nodeIDString);
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
// Remove "NodeID-" prefix before decoding
|
|
105
|
+
return avalanchejs_1.utils.base58check.decode(nodeIDString.substring(7));
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
logger_1.logger.error("Error decoding NodeID:", nodeIDString, e);
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Converts a non-negative integer (up to 32 bits) to a 4-byte Big Endian Uint8Array.
|
|
114
|
+
* @param value - The number to convert.
|
|
115
|
+
* @returns A 4-byte Uint8Array.
|
|
116
|
+
*/
|
|
117
|
+
function uint32ToBigEndianBytes(value) {
|
|
118
|
+
const buffer = buffer_1.Buffer.alloc(4);
|
|
119
|
+
buffer.writeUInt32BE(value, 0);
|
|
120
|
+
return new Uint8Array(buffer);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Appends a uint32 index to a byte array (typically a SubnetID) to compute a derived ID.
|
|
124
|
+
* This mimics the Go `ids.ID.Append(uint32)` logic used for bootstrap validator IDs.
|
|
125
|
+
* @param baseIDBytes - The base ID bytes (e.g., SubnetID).
|
|
126
|
+
* @param index - The uint32 index to append.
|
|
127
|
+
* @returns The combined ID bytes.
|
|
128
|
+
*/
|
|
129
|
+
function computeDerivedID(baseIDBytes, index) {
|
|
130
|
+
const indexBytes = uint32ToBigEndianBytes(index);
|
|
131
|
+
const combined = new Uint8Array(baseIDBytes.length + indexBytes.length);
|
|
132
|
+
combined.set(baseIDBytes, 0);
|
|
133
|
+
combined.set(indexBytes, baseIDBytes.length);
|
|
134
|
+
return combined;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Compares two Uint8Arrays for byte equality.
|
|
138
|
+
* @param a - First Uint8Array.
|
|
139
|
+
* @param b - Second Uint8Array.
|
|
140
|
+
* @returns True if arrays are identical, false otherwise.
|
|
141
|
+
*/
|
|
142
|
+
function compareBytes(a, b) {
|
|
143
|
+
if (!a || !b)
|
|
144
|
+
return false;
|
|
145
|
+
if (a.length !== b.length)
|
|
146
|
+
return false;
|
|
147
|
+
for (let i = 0; i < a.length; i++) {
|
|
148
|
+
if (a[i] !== b[i])
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Encodes a non-negative integer into Protobuf Varint format.
|
|
155
|
+
* @param value - The non-negative integer to encode.
|
|
156
|
+
* @returns A Uint8Array containing the Varint bytes.
|
|
157
|
+
*/
|
|
158
|
+
function encodeVarint(value) {
|
|
159
|
+
const bytes = [];
|
|
160
|
+
while (value >= 0x80) {
|
|
161
|
+
bytes.push((value & 0x7f) | 0x80);
|
|
162
|
+
value >>>= 7; // Use unsigned right shift
|
|
163
|
+
}
|
|
164
|
+
bytes.push(value);
|
|
165
|
+
return new Uint8Array(bytes);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Manually marshals the ConvertSubnetToL1TxData justification protobuf.
|
|
169
|
+
* L1ValidatorRegistrationJustification {
|
|
170
|
+
* oneof preimage {
|
|
171
|
+
* // Field 1
|
|
172
|
+
* SubnetIDIndex convert_subnet_to_l1_tx_data = 1;
|
|
173
|
+
* // Field 2
|
|
174
|
+
* bytes register_l1_validator_message = 2;
|
|
175
|
+
* }
|
|
176
|
+
* }
|
|
177
|
+
* SubnetIDIndex {
|
|
178
|
+
* bytes subnet_id = 1; // wire type 2
|
|
179
|
+
* uint32 index = 2; // wire type 0 (varint)
|
|
180
|
+
* }
|
|
181
|
+
*
|
|
182
|
+
* @param subnetIDBytes - The raw bytes of the subnet ID.
|
|
183
|
+
* @param index - The bootstrap index.
|
|
184
|
+
* @returns The marshalled L1ValidatorRegistrationJustification bytes.
|
|
185
|
+
*/
|
|
186
|
+
function marshalConvertSubnetToL1TxDataJustification(subnetIDBytes, index) {
|
|
187
|
+
// Marshal Inner SubnetIDIndex message
|
|
188
|
+
// Field 1: subnet_id (bytes)
|
|
189
|
+
const subnetIdTag = new Uint8Array([0x0a]); // Field 1, wire type 2
|
|
190
|
+
const subnetIdLen = encodeVarint(subnetIDBytes.length);
|
|
191
|
+
// Field 2: index (uint32, varint)
|
|
192
|
+
const indexTag = new Uint8Array([0x10]); // Field 2, wire type 0
|
|
193
|
+
const indexVarint = encodeVarint(index);
|
|
194
|
+
const innerMsgLength = subnetIdTag.length + subnetIdLen.length + subnetIDBytes.length + indexTag.length + indexVarint.length;
|
|
195
|
+
const innerMsgBytes = new Uint8Array(innerMsgLength);
|
|
196
|
+
let offset = 0;
|
|
197
|
+
innerMsgBytes.set(subnetIdTag, offset);
|
|
198
|
+
offset += subnetIdTag.length;
|
|
199
|
+
innerMsgBytes.set(subnetIdLen, offset);
|
|
200
|
+
offset += subnetIdLen.length;
|
|
201
|
+
innerMsgBytes.set(subnetIDBytes, offset);
|
|
202
|
+
offset += subnetIDBytes.length;
|
|
203
|
+
innerMsgBytes.set(indexTag, offset);
|
|
204
|
+
offset += indexTag.length;
|
|
205
|
+
innerMsgBytes.set(indexVarint, offset);
|
|
206
|
+
// Marshal Outer L1ValidatorRegistrationJustification message
|
|
207
|
+
// Field 1: convert_subnet_to_l1_tx_data (message)
|
|
208
|
+
const outerTag = new Uint8Array([0x0a]); // Field 1, wire type 2
|
|
209
|
+
const outerLen = encodeVarint(innerMsgBytes.length);
|
|
210
|
+
const justificationBytes = new Uint8Array(outerTag.length + outerLen.length + innerMsgBytes.length);
|
|
211
|
+
offset = 0;
|
|
212
|
+
justificationBytes.set(outerTag, offset);
|
|
213
|
+
offset += outerTag.length;
|
|
214
|
+
justificationBytes.set(outerLen, offset);
|
|
215
|
+
offset += outerLen.length;
|
|
216
|
+
justificationBytes.set(innerMsgBytes, offset);
|
|
217
|
+
return justificationBytes;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Extracts the payload bytes from an AddressedCall byte array.
|
|
221
|
+
* Assumes AddressedCall structure:
|
|
222
|
+
* - TypeID (4 bytes, starting at index 2)
|
|
223
|
+
* - Source Address Length (4 bytes, starting at index 6)
|
|
224
|
+
* - Source Address (variable)
|
|
225
|
+
* - Payload Length (4 bytes, starting after source address)
|
|
226
|
+
* - Payload (variable)
|
|
227
|
+
*
|
|
228
|
+
* @param addressedCall - The AddressedCall bytes.
|
|
229
|
+
* @returns The extracted payload as a Uint8Array, or null if parsing fails or data is insufficient.
|
|
230
|
+
*/
|
|
231
|
+
function extractPayloadFromAddressedCall(addressedCall) {
|
|
232
|
+
try {
|
|
233
|
+
// Need at least 10 bytes for TypeID and Source Address Length.
|
|
234
|
+
if (addressedCall.length < 10) {
|
|
235
|
+
// logger.warn('AddressedCall too short to contain Source Address Length');
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
// Source Address Length starts at index 6
|
|
239
|
+
const sourceAddrLen = (addressedCall[6] << 24) | (addressedCall[7] << 16) | (addressedCall[8] << 8) | addressedCall[9];
|
|
240
|
+
if (sourceAddrLen < 0) { // Should not happen with unsigned bytes, but good practice
|
|
241
|
+
// logger.warn('Invalid Source Address Length (<0)');
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
// Position where Payload Length starts
|
|
245
|
+
const payloadLenPos = 10 + sourceAddrLen;
|
|
246
|
+
// Check if we have enough bytes to read Payload Length
|
|
247
|
+
if (payloadLenPos + 4 > addressedCall.length) {
|
|
248
|
+
// logger.warn('AddressedCall too short to contain Payload Length');
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
// Read Payload Length
|
|
252
|
+
const payloadLen = (addressedCall[payloadLenPos] << 24) |
|
|
253
|
+
(addressedCall[payloadLenPos + 1] << 16) |
|
|
254
|
+
(addressedCall[payloadLenPos + 2] << 8) |
|
|
255
|
+
addressedCall[payloadLenPos + 3];
|
|
256
|
+
// Check if payload length is valid
|
|
257
|
+
if (payloadLen <= 0) {
|
|
258
|
+
// logger.warn('Invalid Payload Length (<=0)');
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
const payloadStartPos = payloadLenPos + 4;
|
|
262
|
+
const payloadEndPos = payloadStartPos + payloadLen;
|
|
263
|
+
// Check if payload extends beyond data bounds
|
|
264
|
+
if (payloadEndPos > addressedCall.length) {
|
|
265
|
+
// logger.warn('Payload extends beyond AddressedCall data bounds');
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
// Extract Payload
|
|
269
|
+
const payloadBytes = addressedCall.slice(payloadStartPos, payloadEndPos);
|
|
270
|
+
return payloadBytes;
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
logger_1.logger.error('Error extracting payload from AddressedCall:', error);
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Calculates the validationID hash for a RegisterL1ValidatorMessage payload.
|
|
279
|
+
* Uses the SolidityValidationPeriod interface.
|
|
280
|
+
*/
|
|
281
|
+
function calculateValidationID(validationPeriod) {
|
|
282
|
+
const payload = (0, warpUtils_1.packRegisterL1ValidatorPayload)(validationPeriod);
|
|
283
|
+
return (0, sha2_1.sha256)(payload);
|
|
284
|
+
}
|
|
285
|
+
// Define the ABI for the SendWarpMessage event
|
|
286
|
+
const sendWarpMessageEventAbi = (0, viem_1.parseAbiItem)('event SendWarpMessage(address indexed sourceAddress, bytes32 indexed unsignedMessageID, bytes message)');
|
|
287
|
+
/**
|
|
288
|
+
* Gets the marshalled L1ValidatorRegistrationJustification protobuf bytes for a specific
|
|
289
|
+
* validation ID and subnet. It first checks if the validation ID corresponds to the hash
|
|
290
|
+
* of a derived bootstrap validator ID (SubnetID + Index). If not found, it queries
|
|
291
|
+
* Warp logs for a RegisterL1ValidatorMessage payload whose hash matches the validation ID
|
|
292
|
+
* and constructs the justification using that message payload.
|
|
293
|
+
*
|
|
294
|
+
* @param nodeID - The node ID of the validator (e.g., "NodeID-..."), used for logging and secondary confirmation.
|
|
295
|
+
* @param validationIDHex - The target validation ID as a '0x' prefixed hex string (bytes32).
|
|
296
|
+
* @param subnetIDStr - The subnet ID as a Base58Check string.
|
|
297
|
+
* @param ExtendedPublicClient - A client that can perform getLogs operations.
|
|
298
|
+
* @returns The marshalled L1ValidatorRegistrationJustification bytes as a Uint8Array, or null if not found/error.
|
|
299
|
+
*/
|
|
300
|
+
async function GetRegistrationJustification(nodeID, // Keep for logging/confirmation
|
|
301
|
+
validationIDHex, subnetIDStr, ExtendedPublicClient, latestBlock) {
|
|
302
|
+
const WARP_ADDRESS = '0x0200000000000000000000000000000000000005';
|
|
303
|
+
const NUM_BOOTSTRAP_VALIDATORS_TO_SEARCH = 100;
|
|
304
|
+
let targetValidationIDBytes;
|
|
305
|
+
try {
|
|
306
|
+
targetValidationIDBytes = (0, viem_1.hexToBytes)(validationIDHex);
|
|
307
|
+
if (targetValidationIDBytes.length !== 32) {
|
|
308
|
+
throw new Error(`Decoded validationID must be 32 bytes, got ${targetValidationIDBytes.length}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
catch (e) {
|
|
312
|
+
logger_1.logger.error(`Failed to decode provided validationIDHex '${validationIDHex}': ${e.message}`);
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
const subnetIDBytes = decodeID(subnetIDStr);
|
|
316
|
+
const targetNodeIDBytes = decodeNodeID(nodeID); // Decode for log confirmation
|
|
317
|
+
if (!subnetIDBytes) {
|
|
318
|
+
logger_1.logger.error(`Failed to decode provided SubnetID: ${subnetIDStr}`);
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
if (!targetNodeIDBytes) {
|
|
322
|
+
logger_1.logger.warn(`Failed to decode provided NodeID for confirmation: ${nodeID}`);
|
|
323
|
+
// Allow continuing without targetNodeIDBytes for confirmation
|
|
324
|
+
}
|
|
325
|
+
// 1. Check for bootstrap validators (comparing hash of derived ID against targetValidationIDBytes)
|
|
326
|
+
for (let index = 0; index < NUM_BOOTSTRAP_VALIDATORS_TO_SEARCH; index++) {
|
|
327
|
+
// Compute the 36-byte derived ID (SubnetID + Index)
|
|
328
|
+
const bootstrapDerivedBytes = computeDerivedID(subnetIDBytes, index);
|
|
329
|
+
// Compute the SHA-256 hash (32 bytes)
|
|
330
|
+
const bootstrapValidationIDHash = (0, sha2_1.sha256)(bootstrapDerivedBytes);
|
|
331
|
+
// Compare the derived hash with the target validation ID
|
|
332
|
+
if (compareBytes(bootstrapValidationIDHash, targetValidationIDBytes)) {
|
|
333
|
+
logger_1.logger.log(`ValidationID ${validationIDHex} matches HASH of bootstrap validator derived ID (subnet ${subnetIDStr}, index ${index})`);
|
|
334
|
+
// Marshal justification using the *original* subnetID and index
|
|
335
|
+
const justificationBytes = marshalConvertSubnetToL1TxDataJustification(subnetIDBytes, index);
|
|
336
|
+
return justificationBytes;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
logger_1.logger.log(`ValidationID ${validationIDHex} not found within the HASHES of the first ${NUM_BOOTSTRAP_VALIDATORS_TO_SEARCH} bootstrap validator indices for subnet ${subnetIDStr}. Checking Warp logs...`);
|
|
340
|
+
// 2. If not a bootstrap validator, search Warp logs
|
|
341
|
+
try {
|
|
342
|
+
// Start from the latest block and search backwards in batches
|
|
343
|
+
latestBlock = latestBlock ? latestBlock : await ExtendedPublicClient.getLogs({ fromBlock: 'latest' }).then(logs => logs.length > 0 ? logs[0].blockNumber : 0) || 0n;
|
|
344
|
+
const BATCH_SIZE = 2048;
|
|
345
|
+
let fromBlock = latestBlock;
|
|
346
|
+
let toBlock = latestBlock;
|
|
347
|
+
let justification = null;
|
|
348
|
+
logger_1.logger.log(`Starting search from latest block ${latestBlock} in batches of ${BATCH_SIZE} blocks...`);
|
|
349
|
+
while (fromBlock > 0n && !justification) {
|
|
350
|
+
// Calculate batch range
|
|
351
|
+
fromBlock = BigInt(Math.max(0, Number(toBlock) - BATCH_SIZE + 1));
|
|
352
|
+
logger_1.logger.log(`Searching for Warp logs in block range: ${fromBlock} to ${toBlock}...`);
|
|
353
|
+
const warpLogs = await ExtendedPublicClient.getLogs({
|
|
354
|
+
address: WARP_ADDRESS,
|
|
355
|
+
event: sendWarpMessageEventAbi,
|
|
356
|
+
fromBlock: fromBlock,
|
|
357
|
+
toBlock: toBlock,
|
|
358
|
+
});
|
|
359
|
+
if (warpLogs.length > 0) {
|
|
360
|
+
logger_1.logger.log(`Found ${warpLogs.length} Warp logs in block range ${fromBlock}-${toBlock}. Searching for justification matching ValidationID ${validationIDHex}...`);
|
|
361
|
+
for (const log of warpLogs) {
|
|
362
|
+
try {
|
|
363
|
+
const decodedArgs = log.args;
|
|
364
|
+
const fullMessageHex = decodedArgs.message;
|
|
365
|
+
if (!fullMessageHex)
|
|
366
|
+
continue;
|
|
367
|
+
const unsignedMessageBytes = buffer_1.Buffer.from(fullMessageHex.slice(2), 'hex');
|
|
368
|
+
const addressedCall = extractAddressedCall(unsignedMessageBytes);
|
|
369
|
+
if (addressedCall.length === 0)
|
|
370
|
+
continue;
|
|
371
|
+
// Check TypeID within AddressedCall for RegisterL1ValidatorMessage
|
|
372
|
+
if (addressedCall.length < 6)
|
|
373
|
+
continue;
|
|
374
|
+
const acTypeID = (addressedCall[2] << 24) | (addressedCall[3] << 16) | (addressedCall[4] << 8) | addressedCall[5];
|
|
375
|
+
const REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID_IN_AC = 1;
|
|
376
|
+
if (acTypeID !== REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID_IN_AC) {
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
const payloadBytes = extractPayloadFromAddressedCall(addressedCall);
|
|
380
|
+
if (!payloadBytes)
|
|
381
|
+
continue;
|
|
382
|
+
try {
|
|
383
|
+
// Unpack the payload
|
|
384
|
+
const parsedPayload = (0, warpUtils_1.unpackRegisterL1ValidatorPayload)(payloadBytes);
|
|
385
|
+
// Calculate the validationID (hash) of this message payload
|
|
386
|
+
const logValidationIDBytes = calculateValidationID(parsedPayload);
|
|
387
|
+
// Compare the calculated hash with the target validation ID
|
|
388
|
+
if (compareBytes(logValidationIDBytes, targetValidationIDBytes)) {
|
|
389
|
+
if (targetNodeIDBytes && !compareBytes(parsedPayload.nodeID, targetNodeIDBytes)) {
|
|
390
|
+
logger_1.logger.warn(`ValidationID match found (${validationIDHex}) in log ${log.transactionHash}, but NodeID in message (${avalanchejs_1.utils.base58check.encode(buffer_1.Buffer.from(parsedPayload.nodeID))}) does not match expected NodeID ${nodeID}. Skipping.`);
|
|
391
|
+
continue;
|
|
392
|
+
}
|
|
393
|
+
const tag = new Uint8Array([0x12]);
|
|
394
|
+
const lengthVarint = encodeVarint(payloadBytes.length);
|
|
395
|
+
const marshalledJustification = new Uint8Array(tag.length + lengthVarint.length + payloadBytes.length);
|
|
396
|
+
marshalledJustification.set(tag, 0);
|
|
397
|
+
marshalledJustification.set(lengthVarint, tag.length);
|
|
398
|
+
marshalledJustification.set(payloadBytes, tag.length + lengthVarint.length);
|
|
399
|
+
logger_1.logger.log(`Found matching ValidationID ${validationIDHex} (NodeID ${nodeID}) in Warp log (Tx: ${log.transactionHash}, Block: ${log.blockNumber}). Marshalled justification.`);
|
|
400
|
+
justification = marshalledJustification;
|
|
401
|
+
break; // Exit the loop once found
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
// logger.warn(`Error parsing/hashing RegisterL1ValidatorMessage payload from Tx ${log.transactionHash}:`, parseOrHashError);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
catch (logProcessingError) {
|
|
409
|
+
logger_1.logger.error(`Error processing log entry for tx ${log.transactionHash}:`, logProcessingError);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
logger_1.logger.log(`No Warp logs found in block range ${fromBlock}-${toBlock}.`);
|
|
415
|
+
}
|
|
416
|
+
// If justification was found, break out of the while loop
|
|
417
|
+
if (justification)
|
|
418
|
+
break;
|
|
419
|
+
// Move to previous batch
|
|
420
|
+
toBlock = fromBlock - 1n;
|
|
421
|
+
// Exit if we've scanned all blocks
|
|
422
|
+
if (toBlock < 0)
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
if (!justification) {
|
|
426
|
+
logger_1.logger.log(`No matching registration log found for ValidationID ${validationIDHex} in any Warp logs.`);
|
|
427
|
+
}
|
|
428
|
+
return justification;
|
|
429
|
+
}
|
|
430
|
+
catch (fetchLogError) {
|
|
431
|
+
logger_1.logger.error(`Error fetching or decoding logs for ValidationID ${validationIDHex}:`, fetchLogError);
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
// Helper functions
|
|
436
|
+
function hexToUint8Array(hex) {
|
|
437
|
+
// Remove '0x' prefix if present
|
|
438
|
+
const hexString = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
439
|
+
return buffer_1.Buffer.from(hexString, 'hex');
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Parses a RegisterL1ValidatorMessage from a byte array.
|
|
443
|
+
* The message format specification is:
|
|
444
|
+
*
|
|
445
|
+
* RegisterL1ValidatorMessage:
|
|
446
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
447
|
+
* | codecID : uint16 | 2 bytes |
|
|
448
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
449
|
+
* | typeID : uint32 | 4 bytes |
|
|
450
|
+
* +-----------------------+-------------+-------------------------------------------------------------------+
|
|
451
|
+
* | subnetID : [32]byte | 32 bytes |
|
|
452
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
453
|
+
* | nodeID : []byte | 4 + len(nodeID) bytes |
|
|
454
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
455
|
+
* | blsPublicKey : [48]byte | 48 bytes |
|
|
456
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
457
|
+
* | expiry : uint64 | 8 bytes |
|
|
458
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
459
|
+
* | remainingBalanceOwner : PChainOwner | 8 + len(addresses) * 20 bytes |
|
|
460
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
461
|
+
* | disableOwner : PChainOwner | 8 + len(addresses) * 20 bytes |
|
|
462
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
463
|
+
* | weight : uint64 | 8 bytes |
|
|
464
|
+
* +-----------------------+-------------+--------------------------------------------------------------------+
|
|
465
|
+
* | 122 + len(nodeID) + (len(addresses1) + len(addresses2)) * 20 bytes |
|
|
466
|
+
* +--------------------------------------------------------------------+
|
|
467
|
+
*
|
|
468
|
+
* PChainOwner:
|
|
469
|
+
* +-----------+------------+-------------------------------+
|
|
470
|
+
* | threshold : uint32 | 4 bytes |
|
|
471
|
+
* +-----------+------------+-------------------------------+
|
|
472
|
+
* | addresses : [][20]byte | 4 + len(addresses) * 20 bytes |
|
|
473
|
+
* +-----------+------------+-------------------------------+
|
|
474
|
+
* | 8 + len(addresses) * 20 bytes |
|
|
475
|
+
* +-------------------------------+
|
|
476
|
+
*/
|
|
477
|
+
function parseRegisterL1ValidatorMessage(input) {
|
|
478
|
+
let index = 0;
|
|
479
|
+
const validation = {
|
|
480
|
+
subnetId: '',
|
|
481
|
+
nodeID: '',
|
|
482
|
+
blsPublicKey: '0x',
|
|
483
|
+
registrationExpiry: 0n,
|
|
484
|
+
remainingBalanceOwner: { threshold: 0, addresses: [] },
|
|
485
|
+
disableOwner: { threshold: 0, addresses: [] },
|
|
486
|
+
weight: 0n
|
|
487
|
+
};
|
|
488
|
+
// Parse codec ID
|
|
489
|
+
const codecID = parseUint16(input, index);
|
|
490
|
+
if (codecID !== codecVersion) {
|
|
491
|
+
throw new Error(`Invalid codec ID: ${codecID}`);
|
|
492
|
+
}
|
|
493
|
+
index += 2;
|
|
494
|
+
// Parse type ID
|
|
495
|
+
const typeID = parseUint32(input, index);
|
|
496
|
+
if (typeID !== REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID) {
|
|
497
|
+
throw new Error(`Invalid message type: ${typeID}`);
|
|
498
|
+
}
|
|
499
|
+
index += 4;
|
|
500
|
+
// Parse subnetID
|
|
501
|
+
const subnetIDBytes = input.slice(index, index + 32);
|
|
502
|
+
validation.subnetId = avalanchejs_1.utils.base58check.encode(subnetIDBytes);
|
|
503
|
+
index += 32;
|
|
504
|
+
// Parse nodeID length
|
|
505
|
+
const nodeIDLength = parseUint32(input, index);
|
|
506
|
+
index += 4;
|
|
507
|
+
// Parse nodeID
|
|
508
|
+
const nodeIDBytes = input.slice(index, index + nodeIDLength);
|
|
509
|
+
validation.nodeID = `NodeID-${avalanchejs_1.utils.base58check.encode(nodeIDBytes)}`;
|
|
510
|
+
index += nodeIDLength;
|
|
511
|
+
// Parse BLS public key
|
|
512
|
+
const blsPublicKeyBytes = input.slice(index, index + 48);
|
|
513
|
+
validation.blsPublicKey = `0x${buffer_1.Buffer.from(blsPublicKeyBytes).toString('hex')}`;
|
|
514
|
+
index += 48;
|
|
515
|
+
// Parse registration expiry
|
|
516
|
+
validation.registrationExpiry = parseUint64(input, index);
|
|
517
|
+
index += 8;
|
|
518
|
+
// Parse remainingBalanceOwner threshold
|
|
519
|
+
validation.remainingBalanceOwner.threshold = parseUint32(input, index);
|
|
520
|
+
index += 4;
|
|
521
|
+
// Parse remainingBalanceOwner addresses length
|
|
522
|
+
const remainingBalanceOwnerAddressesLength = parseUint32(input, index);
|
|
523
|
+
index += 4;
|
|
524
|
+
// Parse remainingBalanceOwner addresses
|
|
525
|
+
validation.remainingBalanceOwner.addresses = [];
|
|
526
|
+
for (let i = 0; i < remainingBalanceOwnerAddressesLength; i++) {
|
|
527
|
+
const addrBytes = input.slice(index, index + 20);
|
|
528
|
+
const addr = `0x${buffer_1.Buffer.from(addrBytes).toString('hex')}`;
|
|
529
|
+
validation.remainingBalanceOwner.addresses.push(addr);
|
|
530
|
+
index += 20;
|
|
531
|
+
}
|
|
532
|
+
// Parse disableOwner threshold
|
|
533
|
+
validation.disableOwner.threshold = parseUint32(input, index);
|
|
534
|
+
index += 4;
|
|
535
|
+
// Parse disableOwner addresses length
|
|
536
|
+
const disableOwnerAddressesLength = parseUint32(input, index);
|
|
537
|
+
index += 4;
|
|
538
|
+
// Parse disableOwner addresses
|
|
539
|
+
validation.disableOwner.addresses = [];
|
|
540
|
+
for (let i = 0; i < disableOwnerAddressesLength; i++) {
|
|
541
|
+
const addrBytes = input.slice(index, index + 20);
|
|
542
|
+
const addr = `0x${buffer_1.Buffer.from(addrBytes).toString('hex')}`;
|
|
543
|
+
validation.disableOwner.addresses.push(addr);
|
|
544
|
+
index += 20;
|
|
545
|
+
}
|
|
546
|
+
// Validate input length
|
|
547
|
+
const expectedLength = 122 + nodeIDLength + (remainingBalanceOwnerAddressesLength + disableOwnerAddressesLength) * 20;
|
|
548
|
+
if (input.length !== expectedLength) {
|
|
549
|
+
throw new Error(`Invalid message length: got ${input.length}, expected ${expectedLength}`);
|
|
550
|
+
}
|
|
551
|
+
// Parse weight
|
|
552
|
+
validation.weight = parseUint64(input, index);
|
|
553
|
+
return validation;
|
|
554
|
+
}
|
|
555
|
+
// Helper functions for parsing numbers
|
|
556
|
+
function parseUint16(input, offset) {
|
|
557
|
+
let result = 0;
|
|
558
|
+
for (let i = 0; i < 2; i++) {
|
|
559
|
+
result = (result << 8) | input[offset + i];
|
|
560
|
+
}
|
|
561
|
+
return result;
|
|
562
|
+
}
|
|
563
|
+
function parseUint32(input, offset) {
|
|
564
|
+
let result = 0;
|
|
565
|
+
for (let i = 0; i < 4; i++) {
|
|
566
|
+
result = (result << 8) | input[offset + i];
|
|
567
|
+
}
|
|
568
|
+
return result;
|
|
569
|
+
}
|
|
570
|
+
function parseUint64(input, offset) {
|
|
571
|
+
let result = 0n;
|
|
572
|
+
for (let i = 0; i < 8; i++) {
|
|
573
|
+
result = (result << 8n) | BigInt(input[offset + i]);
|
|
574
|
+
}
|
|
575
|
+
return result;
|
|
576
|
+
}
|
|
577
|
+
//# sourceMappingURL=justification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"justification.js","sourceRoot":"","sources":["../../src/lib/justification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PublicActions, WalletClient } from "viem";
|
|
2
|
+
import { ExtendedAccount, Network } from "../client";
|
|
3
|
+
export declare function getLedgerAccount(network: Network, accountIndex?: number): Promise<ExtendedAccount>;
|
|
4
|
+
export declare function toSafeProvider(client: WalletClient & PublicActions, account: ExtendedAccount): Promise<any>;
|