@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/cChainUtils.ts","../src/lib/safeColors.ts","../src/lib/utils.ts","../src/lib/justification.ts","../src/lib/warpUtils.ts","../src/abis/L1Registry.ts","../src/abis/OperatorRegistry.ts","../src/abis/VaultManager.ts","../src/abis/L1Middleware.ts","../src/abis/VaultTokenized.ts","../src/abis/L1RestakeDelegator.ts","../src/abis/BalancerValidatorManager.ts","../src/abis/VaultFactory.ts","../src/abis/OperatorVaultOptInService.ts","../src/abis/OperatorL1OptInService.ts","../src/abis/UptimeTracker.ts","../src/abis/PoASecurityModule.ts","../src/abis/DefaultCollateral.ts","../src/abis/ERC20.ts","../src/abis/IWarpMessenger.ts","../src/abis/ValidatorManager.ts","../src/abis/AccessControl.ts","../src/abis/RewardsNativeToken.ts","../src/abis/Ownable.ts","../src/abis/KiteStakingManager.ts","../src/abis/StakingVault.ts","../src/abis/StakingVaultOperations.ts","../src/abis/index.ts","../src/lib/viemUtils.ts","../src/lib/safeUtils.ts","../src/abis/abi-selectors.json","../src/lib/castUtils.ts","../src/config.ts","../src/lib/pChainUtils.ts","../src/lib/logger.ts","../src/lib/transferUtils.ts","../src/middleware.ts","../src/securityModule.ts","../src/lib/chainList.ts","../src/client.ts","../src/lib/coreWalletUtils.ts","../src/kiteStaking.ts","../src/uptime.ts","../src/stakingVault.ts"],"sourcesContent":["import { decodeEventLog, Hex, Abi } from 'viem';\nimport { ExtendedClient, ExtendedPublicClient } from '../client';\nimport { SafeSuzakuContract } from './viemUtils';\nimport { logger } from './logger';\n\nexport interface ProgressBar {\n start(total: number, startValue: number): void;\n increment(value?: number): void;\n stop(): void;\n getProgress(): number;\n getTotal(): number;\n setTotal(total: number): void;\n}\n\ntype CommonEvent = {\n address: string;\n topics: string[];\n data: string;\n blockNumber: string | number | bigint;\n blockHash: string;\n transactionHash: string;\n transactionIndex: string | number;\n timeStamp?: string | number;\n logIndex: string | number;\n eventName?: string;\n args?: Record<string, any>;\n};\n\nexport type DecodedEvent = {\n blockNumber: bigint;\n transactionHash: Hex;\n eventName: string;\n args: Record<string, any>;\n address: string;\n timestamp: number;\n}\n\nexport async function getChainId(rpcUrl: string): Promise<number> {\n const ret = await fetch(rpcUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"eth_chainId\",\n params: [],\n id: 1,\n }),\n });\n const data = await ret.json();\n return data.result;\n}\n\n// TODO: optimize eventNames filtering it from apis\nexport async function GetContractEvents(\n client: ExtendedClient,\n address: Hex,\n fromBlock: number,\n toBlock: number,\n abi: Abi,\n eventNames?: string[],\n snowscanApiKey?: string,\n forceTimestamp: boolean = true,\n bar?: ProgressBar\n): Promise<DecodedEvent[]> {\n let events: CommonEvent[] = [];\n try {\n if (snowscanApiKey) {\n // Fetch logs from Snowscan API (transactions are not decoded)\n const url = `https://api${client.network === 'fuji' ? '-testnet' : ''}.snowscan.xyz/api`;\n const urlParams = new URLSearchParams({\n module: 'logs',\n action: 'getLogs',\n address,\n fromBlock: fromBlock.toString(),\n toBlock: toBlock.toString(),\n apikey: snowscanApiKey\n });\n\n const res = await fetch(`${url}?${urlParams}`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n const data = (await res.json()) as { status: string, message: string, result: any[] };\n events = data.result\n .reduce((acc: [], log) =>\n [Object.assign(log, decodeEventLog({\n abi,\n data: log.data,\n topics: log.topics,\n })), ...acc]\n , []\n )\n } else {\n // Fetch logs using viem client\n toBlock = toBlock - 2 // to avoid reading the current block, which may not be finalized yet\n\n const blockToScan = toBlock - fromBlock;\n if (bar) {\n bar.setTotal(bar.getTotal() + blockToScan);\n }\n for (let i = fromBlock; i <= toBlock; i += 2000) {\n\n const toSub = i + 2000 > toBlock ? toBlock : i + 2000;\n events.push(...await client.getContractEvents({\n address: address,\n abi: abi,\n fromBlock: BigInt(i),\n toBlock: BigInt(toSub)\n }))\n if (bar) bar.increment(2000);\n }\n if (bar) {\n bar.increment(blockToScan - (toBlock - fromBlock));\n if (bar.getProgress() === 1) bar.stop();\n }\n }\n } catch (error) {\n logger.error(\"Read contract failed:\", error);\n if (error instanceof Error) {\n logger.error(error.message);\n }\n }\n\n // Filter and format events\n const result = events.filter((log: CommonEvent) => eventNames ? eventNames.includes(log.eventName!) : true)\n .map(log => {\n return {\n blockNumber: typeof (log.blockNumber) === 'bigint' ? log.blockNumber : BigInt(log.blockNumber),\n transactionHash: log.transactionHash,\n eventName: log.eventName,\n args: log.args,\n address: log.address,\n timestamp: Number(log.timeStamp!)\n } as DecodedEvent\n });\n return forceTimestamp ? snowscanApiKey ? result : PatchEventsTimestamp(client, result) : result;\n}\n\nexport async function PatchEventsTimestamp(\n client: ExtendedClient,\n events: DecodedEvent[],\n): Promise<DecodedEvent[]> {\n const blockTimstamps = (await Promise.all([...new Set(events.map(event => event.blockNumber))]\n .map((blockNumber: bigint) =>\n client.getBlock({\n blockNumber,\n includeTransactions: false,\n })))\n )\n .reduce((acc, block) => {\n acc[Number(block.number)] = Number(block.timestamp);\n return acc;\n }, {} as Record<number, number>);\n\n return events.map(event => ({\n ...event,\n timestamp: event.timestamp || blockTimstamps[Number(event.blockNumber)],\n }));\n}\n\nexport async function fillEventsNodeId(\n balancer: SafeSuzakuContract['BalancerValidatorManager'],\n events: DecodedEvent[],\n): Promise<DecodedEvent[]> {\n\n const validationIdMap: Record<string, string> = {};\n\n for (let i = 0; i < events.length; i++) {\n const event = events[i];\n const validationId = event.args.validationID as Hex | undefined;\n const nodeId = event.args.nodeId;\n if (nodeId && validationId) {\n validationIdMap[validationId] = nodeId;\n } else if (!nodeId && validationId && validationIdMap[validationId]) {\n event.args.nodeId = validationIdMap[validationId];\n } else if (!nodeId && validationId && !validationIdMap[validationId]) {\n event.args.nodeId = (await balancer.read.getValidator([validationId])).nodeID;\n validationIdMap[event.args.validationId] = event.args.nodeId;\n }\n events[i] = event;\n };\n\n return events;\n}\n\n/**\n * @title BlockAtTimestampFast\n * @notice Returns the block number closest to a given UNIX timestamp.\n * @param client viem PublicClient (RPC)\n * @param ts Target UNIX timestamp (in seconds, BigInt)\n * @param mode \"lte\" → greatest block with timestamp ≤ ts; \"gte\" → smallest block with timestamp ≥ ts\n * @param recentWindow Number of recent blocks to compute the local average (default: 10_000n)\n * @return Block number as BigInt that satisfies the chosen mode.\n */\nexport async function blockAtTimestamp(\n client: ExtendedClient,\n ts: bigint,\n mode: \"lte\" | \"gte\" = \"lte\",\n recentWindow: bigint = 10_000_0n\n): Promise<bigint> {\n const cache = new Map<bigint, bigint>();\n const getTS = async (n: bigint) => {\n const v = cache.get(n);\n if (v !== undefined) return v;\n const b = await client.getBlock({ blockNumber: n });\n cache.set(n, b.timestamp);\n return b.timestamp;\n };\n\n const latestN = await client.getBlockNumber();\n const [latestTs, genesisTs] = await Promise.all([getTS(latestN), getTS(0n)]);\n\n if (ts <= genesisTs) return 0n;\n if (ts >= latestTs) return latestN;\n\n // --- Local average over a recent window (seed estimate near 'ts') ---\n const b0 = latestN > recentWindow ? latestN - recentWindow : 0n;\n const [t0, t1] = await Promise.all([getTS(b0), getTS(latestN)]);\n const avgRecent = Number(t1 - t0) / Math.max(1, Number(latestN - b0)) || 12; // sec/block fallback\n\n let est = latestN - BigInt(Math.floor(Number(latestTs - ts) / Math.max(1e-6, avgRecent)));\n if (est < 0n) est = 0n;\n if (est > latestN) est = latestN;\n\n // --- Exponential bracketing around 'est' ---\n let lo = 0n, hi = 0n, loTs = 0n, hiTs = 0n;\n const estTs = await getTS(est);\n\n if (estTs <= ts) {\n lo = est; loTs = estTs;\n let step = 1n;\n while (true) {\n const next = est + step;\n hi = next > latestN ? latestN : next;\n hiTs = await getTS(hi);\n if (hiTs > ts || hi === latestN) break;\n step <<= 1n; // double the step\n }\n } else {\n hi = est; hiTs = estTs;\n let step = 1n;\n while (true) {\n const next = est > step ? est - step : 0n;\n lo = next;\n loTs = await getTS(lo);\n if (loTs <= ts || lo === 0n) break;\n step <<= 1n; // double the step\n }\n }\n\n // --- Interpolation search (fallback to binary when needed) ---\n while (lo + 1n < hi) {\n const denom = hiTs - loTs;\n let mid = denom > 0n ? lo + ((ts - loTs) * (hi - lo)) / denom : (lo + hi) >> 1n;\n if (mid <= lo) mid = lo + 1n;\n else if (mid >= hi) mid = hi - 1n;\n\n const midTs = await getTS(mid);\n if (midTs <= ts) { lo = mid; loTs = midTs; }\n else { hi = mid; hiTs = midTs; }\n }\n\n return mode === \"lte\" ? lo : hi;\n}\n\ntype FetchOpts = { fromBlock: bigint; toBlock: bigint };\ntype Fetcher<T> = (opts: FetchOpts) => Promise<T[]>;\n\n/**\n * Collect events in [fromBlock, toBlock] by chunks.\n * @param fromBlock inclusive \"asc\" (oldest→newest) if fromBlock < toBlock, otherwise \"desc\" (newest→oldest).\n * @param toBlock inclusive\n * @param count -1 = all (default). If >0, stops after collecting `count` events.\n * @param fetcher e.g. (opts) => middlewareSvc.getEvents.NodeAdded(args, opts)\n * @param chunkSize block span per RPC call (default: 8_000n)\n * @returns collected events (ordered per `order`)\n */\nexport async function collectEventsInRange<T>(\n fromBlock: bigint,\n toBlock: bigint,\n count: number = -1,\n fetcher: Fetcher<T>\n): Promise<T[]> {\n const chunkSize = 2048n;\n\n let order = \"asc\";\n if (fromBlock > toBlock) {\n order = \"desc\";\n [fromBlock, toBlock] = [toBlock, fromBlock];\n }\n if (count === 0) return [];\n\n const out: T[] = [];\n\n if (order === \"asc\") {\n for (let start = fromBlock; start <= toBlock; start += chunkSize) {\n const end = start + chunkSize - 1n > toBlock ? toBlock : start + chunkSize - 1n;\n const batch = await fetcher({ fromBlock: start, toBlock: end });\n if (batch?.length) {\n out.push(...batch);\n if (count > 0 && out.length >= count) {\n out.length = count;\n return out;\n }\n }\n if (end === toBlock) break;\n }\n } else {\n for (let end = toBlock; end >= fromBlock; end -= chunkSize) {\n const start = end - (chunkSize - 1n) < fromBlock ? fromBlock : end - (chunkSize - 1n);\n let batch = await fetcher({ fromBlock: start, toBlock: end });\n if (batch?.length) {\n batch = [...batch].reverse();\n out.push(...batch);\n if (count > 0 && out.length >= count) {\n out.length = count;\n return out;\n }\n }\n if (start === fromBlock) break;\n }\n }\n return out;\n}\n","/**\n * Browser-safe color utilities.\n * In Node.js terminal environments, use ANSI colors from console-log-colors.\n * In browser environments, return strings as-is (no-op).\n */\n\nconst isBrowser = typeof window !== 'undefined' || typeof process === 'undefined' || !process.stdout;\n\n// Basic no-op function for colors\nconst noopColor = (s: string) => s;\n\nlet colors: Record<string, (s: string) => string> | null = null;\n\n// Dynamically try to load real colors if we are in a Node environment\nif (!isBrowser) {\n try {\n // Webpack / Next.js bundlers will ignore this if we trick the static analysis. \n // We use eval or a dynamic Function to require it only at runtime.\n const req = typeof module !== 'undefined' && module.require ? module.require : null;\n if (req) {\n const consoleLogColors = req('console-log-colors');\n if (consoleLogColors && consoleLogColors.color) {\n colors = consoleLogColors.color;\n }\n }\n } catch (e) {\n // Ignore errors\n }\n}\n\n// Proxied color object that safely gracefully falls back to no-op\nexport const color: Record<string, (s: string) => string> = new Proxy({} as any, {\n get(_target, prop: string) {\n if (colors && typeof colors[prop] === 'function') {\n return colors[prop];\n }\n return noopColor;\n },\n});\n","import { utils, secp256k1 } from \"@avalabs/avalanchejs\";\nimport { bytesToHex, hexToBytes } from '@noble/hashes/utils';\nimport { Address } from 'micro-eth-signer';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { base58 } from '@scure/base';\nimport { fromBytes, Hex, pad, sliceHex, getAddress, Account } from \"viem\";\nimport { logger } from './logger';\nimport { hexToUint8Array } from \"./justification\";\nimport { Addresses } from \"../client\";\n\nexport function bytes32ToAddress(bytes32: `0x${string}`) {\n // on garde les 20 derniers bytes (40 hex chars)\n const raw = sliceHex(bytes32, 12, 32); // bytes 12 → 32\n return getAddress(raw);\n}\n\n\nconst CHECKSUM_LENGTH = 4;\n\nexport function cb58ToBytes(cb58: string): Uint8Array {\n const decodedBytes = base58.decode(cb58);\n if (decodedBytes.length < CHECKSUM_LENGTH) {\n throw new Error('Input string is smaller than the checksum size');\n }\n return decodedBytes.slice(0, -CHECKSUM_LENGTH);\n}\n\nexport function cb58ToHex(cb58: string): Hex;\nexport function cb58ToHex(cb58: string, include0x: true): Hex;\nexport function cb58ToHex(cb58: string, include0x: false): string;\nexport function cb58ToHex(cb58: string, include0x?: boolean): Hex | string {\n const rawBytes = cb58ToBytes(cb58);\n const hex = bytesToHex(rawBytes);\n\n // Pad to 32 bytes (64 characters) - excluding the '0x' prefix\n const paddedHex = hex.padStart(64, '0');\n\n return (include0x === false ? '' : '0x') + paddedHex;\n}\n\n/**\n * Derives addresses from a private key\n * @param privateKeyHex - Private key in hexadecimal format\n * @returns Object containing derived addresses for different chains\n */\nexport function getAddresses(privateKeyHex: string, network: string): Addresses {\n const networkPrefix = network === 'mainnet' ? 'avax' : 'fuji';\n const publicKey = secp256k1.getPublicKey(hexToBytes(privateKeyHex.startsWith('0x') ? privateKeyHex.slice(2) : privateKeyHex));\n\n const pChainAddress = `P-${utils.formatBech32(\n networkPrefix,\n secp256k1.publicKeyBytesToAddress(publicKey)\n )}`;\n\n const cChainAddress = Address.fromPublicKey(publicKey) as Hex;\n\n return {\n C: cChainAddress,\n P: pChainAddress as `P-${string}`\n };\n}\n\nexport function getAddressesFromCoreExtension(publicKeys: { evm: string, XP: string }, network: string): Addresses {\n const networkPrefix = network === 'mainnet' ? 'avax' : 'fuji';\n\n const pChainAddress = `P-${utils.formatBech32(\n networkPrefix,\n secp256k1.publicKeyBytesToAddress(hexToUint8Array(`0x${publicKeys.XP}`))\n )}`;\n\n const cChainAddress = Address.fromPublicKey(hexToUint8Array(`0x${publicKeys.evm}`)) as Hex;\n\n return {\n C: cChainAddress,\n P: pChainAddress as `P-${string}`\n };\n}\n\nexport function getCchainAddress(privateKeyHex: string): string {\n const publicKey = secp256k1.getPublicKey(hexToBytes(privateKeyHex.startsWith('0x') ? privateKeyHex.slice(2) : privateKeyHex));\n return Address.fromPublicKey(publicKey) as Hex;\n}\n\n/**\n * Validates a private key format\n * @param privateKeyHex - Private key in hexadecimal format\n * @returns boolean indicating if the format is valid\n */\nexport function isValidPrivateKey(privateKeyHex: string): boolean {\n try {\n if (!privateKeyHex.match(/^[0-9a-fA-F]{64}$/)) {\n return false;\n }\n const privateKey = hexToBytes(privateKeyHex);\n return privateKey.length === 32;\n } catch {\n return false;\n }\n}\n\nexport function bytesToCB58(bytes: Uint8Array): string {\n // Calculate checksum (first 4 bytes of sha256)\n const checksum = sha256(bytes).slice(0, 4);\n\n // Concatenate bytes and checksum\n const withChecksum = new Uint8Array(bytes.length + 4);\n withChecksum.set(bytes);\n withChecksum.set(checksum, bytes.length);\n\n // Encode to base58\n return base58.encode(withChecksum);\n}\n\nexport type NodeId = `NodeID-${string}`;\n\nexport const parseNodeID = (nodeID: NodeId, padding = true): Hex => {\n const nodeIDWithoutPrefix = nodeID.replace(\"NodeID-\", \"\");\n const decodedID = utils.base58.decode(nodeIDWithoutPrefix)\n const nodeIDHex = fromBytes(decodedID, 'hex')\n const nodeIDHexTrimmed = nodeIDHex.slice(0, -8)\n return padding ? pad(nodeIDHexTrimmed as Hex, { size: 32 }) as Hex : nodeIDHexTrimmed as Hex;\n}\n\nexport const encodeNodeID = (nodeIDBytes: Hex): NodeId => {\n let nodeU8Array = hexToUint8Array(nodeIDBytes)\n nodeU8Array = nodeU8Array.length === 32 ? nodeU8Array.slice(12) : nodeU8Array;// Remove the first 12 bytes if it's a full bytes32\n const nodeId = `NodeID-${utils.base58check.encode(nodeU8Array)}`;\n return nodeId as NodeId;\n}\n\nexport async function retryWhileError<T>(\n fetcher: () => Promise<T>,\n intervalMs: number,\n timeoutMs: number,\n accept: (result: T) => boolean = () => true\n): Promise<T> {\n const start = Date.now();\n let lastErr: unknown;\n\n while (true) {\n try {\n const result = await fetcher();\n if (accept(result)) return result;\n else throw new Error(\"retryWhileError Result not accepted by:\\n\" + accept.toString() + \"\\n\");\n } catch (e) {\n lastErr = e;\n const elapsed = Date.now() - start;\n const remaining = timeoutMs - elapsed;\n if (remaining <= 0) break;\n await new Promise(res => setTimeout(res, Math.min(intervalMs, remaining)));\n }\n }\n\n logger.error(\"Timeout reached !\\n\", lastErr);\n process.exit(1);\n}\n\nexport function bigintReplacer(_key: string, value: any) {\n if (typeof value === \"bigint\") {\n return Number(value);\n }\n return value;\n}\n","// Using more generic types without specific library dependencies\nimport { Buffer } from 'buffer';\nimport { parseAbiItem, Hex, hexToBytes } from 'viem';\nimport { utils } from '@avalabs/avalanchejs';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { SolidityValidationPeriod, packRegisterL1ValidatorPayload, unpackRegisterL1ValidatorPayload } from './warpUtils';\nimport { ExtendedPublicClient } from '../client';\nimport { logger } from './logger';\n\nconst codecVersion = 0;\nconst REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID = 1;\n\n/**\n * Extracts the addressedCall from an unsignedWarpMessage\n * \n * UnsignedMessage structure from convertWarp:\n * - codecVersion (uint16 - 2 bytes)\n * - networkID (uint32 - 4 bytes)\n * - sourceChainID (32 bytes)\n * - message length (uint32 - 4 bytes)\n * - message (the variable-length bytes we want)\n * \n * @param messageBytes - The raw unsignedWarpMessage bytes\n * @returns The extracted message (addressedCall)\n */\nfunction extractAddressedCall(messageBytes: Uint8Array): Uint8Array {\n try {\n // logger.log(`Parsing UnsignedMessage of length: ${messageBytes.length} bytes`);\n\n if (messageBytes.length < 42) { // 2 + 4 + 32 + 4 = minimum 42 bytes\n // logger.log('UnsignedMessage too short');\n return new Uint8Array();\n }\n\n // const codecVersion = (messageBytes[0] << 8) | messageBytes[1];\n // logger.log(`Raw codecVersion bytes: 0x${Buffer.from([messageBytes[0], messageBytes[1]]).toString('hex')}`);\n\n // const networkIDBytes = messageBytes.slice(2, 6);\n // logger.log(`Raw networkID bytes: 0x${Buffer.from(networkIDBytes).toString('hex')}`);\n // const networkID = (messageBytes[2] << 24) |\n // (messageBytes[3] << 16) |\n // (messageBytes[4] << 8) |\n // messageBytes[5];\n\n // logger.log(`UnsignedMessage -> codecVersion: ${codecVersion}, NetworkID: ${networkID}`);\n\n // const sourceChainIDBytes = messageBytes.slice(6, 38);\n // logger.log(`Raw sourceChainID bytes: 0x${Buffer.from(sourceChainIDBytes).toString('hex')}`);\n // try {\n // let sourceChainIDStr = utils.base58check.encode(Buffer.from(sourceChainIDBytes));\n // logger.log(`UnsignedMessage -> SourceChainID: ${sourceChainIDStr}`);\n // } catch (e) {\n // logger.log('Could not encode sourceChainID from UnsignedMessage');\n // }\n\n const messageLength = (messageBytes[38] << 24) |\n (messageBytes[39] << 16) |\n (messageBytes[40] << 8) |\n messageBytes[41];\n\n // logger.log(`UnsignedMessage -> AddressedCall length: ${messageLength} bytes`);\n\n if (messageLength <= 0 || 42 + messageLength > messageBytes.length) {\n // logger.log('Invalid message length or message extends beyond UnsignedMessage data bounds');\n return new Uint8Array();\n }\n\n const addressedCall = messageBytes.slice(42, 42 + messageLength);\n // logger.log(`Extracted AddressedCall of length ${addressedCall.length} bytes`);\n\n return addressedCall;\n } catch (error) {\n logger.error('Error extracting addressedCall from UnsignedMessage:', error);\n return new Uint8Array();\n }\n}\n\n/**\n * Decodes a Base58Check encoded ID string (like SubnetID or ChainID) into its raw bytes.\n * Returns null if decoding fails.\n * @param idString - The ID string.\n * @returns The decoded bytes as Uint8Array or null.\n */\nfunction decodeID(idString: string): Uint8Array | null {\n if (!idString) {\n logger.error(\"Invalid ID format: empty string\");\n return null;\n }\n try {\n return utils.base58check.decode(idString);\n } catch (e) {\n logger.error(\"Error decoding ID:\", idString, e);\n return null;\n }\n}\n\n/**\n * Decodes a Base58Check encoded NodeID string (e.g., \"NodeID-...\") into its raw bytes.\n * Returns null if decoding fails.\n * @param nodeIDString - The NodeID string.\n * @returns The decoded bytes as Uint8Array or null.\n */\nfunction decodeNodeID(nodeIDString: string): Uint8Array | null {\n if (!nodeIDString || !nodeIDString.startsWith(\"NodeID-\")) {\n logger.error(\"Invalid NodeID format:\", nodeIDString);\n return null;\n }\n try {\n // Remove \"NodeID-\" prefix before decoding\n return utils.base58check.decode(nodeIDString.substring(7));\n } catch (e) {\n logger.error(\"Error decoding NodeID:\", nodeIDString, e);\n return null;\n }\n}\n\n/**\n * Converts a non-negative integer (up to 32 bits) to a 4-byte Big Endian Uint8Array.\n * @param value - The number to convert.\n * @returns A 4-byte Uint8Array.\n */\nfunction uint32ToBigEndianBytes(value: number): Uint8Array {\n const buffer = Buffer.alloc(4);\n buffer.writeUInt32BE(value, 0);\n return new Uint8Array(buffer);\n}\n\n/**\n * Appends a uint32 index to a byte array (typically a SubnetID) to compute a derived ID.\n * This mimics the Go `ids.ID.Append(uint32)` logic used for bootstrap validator IDs.\n * @param baseIDBytes - The base ID bytes (e.g., SubnetID).\n * @param index - The uint32 index to append.\n * @returns The combined ID bytes.\n */\nfunction computeDerivedID(baseIDBytes: Uint8Array, index: number): Uint8Array {\n const indexBytes = uint32ToBigEndianBytes(index);\n const combined = new Uint8Array(baseIDBytes.length + indexBytes.length);\n combined.set(baseIDBytes, 0);\n combined.set(indexBytes, baseIDBytes.length);\n return combined;\n}\n\n/**\n * Compares two Uint8Arrays for byte equality.\n * @param a - First Uint8Array.\n * @param b - Second Uint8Array.\n * @returns True if arrays are identical, false otherwise.\n */\nfunction compareBytes(a: Uint8Array | null, b: Uint8Array | null): boolean {\n if (!a || !b) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n/**\n * Encodes a non-negative integer into Protobuf Varint format.\n * @param value - The non-negative integer to encode.\n * @returns A Uint8Array containing the Varint bytes.\n */\nfunction encodeVarint(value: number): Uint8Array {\n const bytes: number[] = [];\n while (value >= 0x80) {\n bytes.push((value & 0x7f) | 0x80);\n value >>>= 7; // Use unsigned right shift\n }\n bytes.push(value);\n return new Uint8Array(bytes);\n}\n\n/**\n * Manually marshals the ConvertSubnetToL1TxData justification protobuf.\n * L1ValidatorRegistrationJustification {\n * oneof preimage {\n * // Field 1\n * SubnetIDIndex convert_subnet_to_l1_tx_data = 1;\n * // Field 2\n * bytes register_l1_validator_message = 2;\n * }\n * }\n * SubnetIDIndex {\n * bytes subnet_id = 1; // wire type 2\n * uint32 index = 2; // wire type 0 (varint)\n * }\n *\n * @param subnetIDBytes - The raw bytes of the subnet ID.\n * @param index - The bootstrap index.\n * @returns The marshalled L1ValidatorRegistrationJustification bytes.\n */\nfunction marshalConvertSubnetToL1TxDataJustification(subnetIDBytes: Uint8Array, index: number): Uint8Array {\n // Marshal Inner SubnetIDIndex message\n // Field 1: subnet_id (bytes)\n const subnetIdTag = new Uint8Array([0x0a]); // Field 1, wire type 2\n const subnetIdLen = encodeVarint(subnetIDBytes.length);\n // Field 2: index (uint32, varint)\n const indexTag = new Uint8Array([0x10]); // Field 2, wire type 0\n const indexVarint = encodeVarint(index);\n\n const innerMsgLength = subnetIdTag.length + subnetIdLen.length + subnetIDBytes.length + indexTag.length + indexVarint.length;\n const innerMsgBytes = new Uint8Array(innerMsgLength);\n let offset = 0;\n innerMsgBytes.set(subnetIdTag, offset); offset += subnetIdTag.length;\n innerMsgBytes.set(subnetIdLen, offset); offset += subnetIdLen.length;\n innerMsgBytes.set(subnetIDBytes, offset); offset += subnetIDBytes.length;\n innerMsgBytes.set(indexTag, offset); offset += indexTag.length;\n innerMsgBytes.set(indexVarint, offset);\n\n // Marshal Outer L1ValidatorRegistrationJustification message\n // Field 1: convert_subnet_to_l1_tx_data (message)\n const outerTag = new Uint8Array([0x0a]); // Field 1, wire type 2\n const outerLen = encodeVarint(innerMsgBytes.length);\n\n const justificationBytes = new Uint8Array(outerTag.length + outerLen.length + innerMsgBytes.length);\n offset = 0;\n justificationBytes.set(outerTag, offset); offset += outerTag.length;\n justificationBytes.set(outerLen, offset); offset += outerLen.length;\n justificationBytes.set(innerMsgBytes, offset);\n\n return justificationBytes;\n}\n\n/**\n * Extracts the payload bytes from an AddressedCall byte array.\n * Assumes AddressedCall structure:\n * - TypeID (4 bytes, starting at index 2)\n * - Source Address Length (4 bytes, starting at index 6)\n * - Source Address (variable)\n * - Payload Length (4 bytes, starting after source address)\n * - Payload (variable)\n *\n * @param addressedCall - The AddressedCall bytes.\n * @returns The extracted payload as a Uint8Array, or null if parsing fails or data is insufficient.\n */\nexport function extractPayloadFromAddressedCall(addressedCall: Uint8Array): Uint8Array | null {\n try {\n // Need at least 10 bytes for TypeID and Source Address Length.\n if (addressedCall.length < 10) {\n // logger.warn('AddressedCall too short to contain Source Address Length');\n return null;\n }\n\n // Source Address Length starts at index 6\n const sourceAddrLen = (addressedCall[6] << 24) | (addressedCall[7] << 16) | (addressedCall[8] << 8) | addressedCall[9];\n if (sourceAddrLen < 0) { // Should not happen with unsigned bytes, but good practice\n // logger.warn('Invalid Source Address Length (<0)');\n return null;\n }\n\n // Position where Payload Length starts\n const payloadLenPos = 10 + sourceAddrLen;\n\n // Check if we have enough bytes to read Payload Length\n if (payloadLenPos + 4 > addressedCall.length) {\n // logger.warn('AddressedCall too short to contain Payload Length');\n return null;\n }\n\n // Read Payload Length\n const payloadLen = (addressedCall[payloadLenPos] << 24) |\n (addressedCall[payloadLenPos + 1] << 16) |\n (addressedCall[payloadLenPos + 2] << 8) |\n addressedCall[payloadLenPos + 3];\n\n // Check if payload length is valid\n if (payloadLen <= 0) {\n // logger.warn('Invalid Payload Length (<=0)');\n return null;\n }\n\n const payloadStartPos = payloadLenPos + 4;\n const payloadEndPos = payloadStartPos + payloadLen;\n\n // Check if payload extends beyond data bounds\n if (payloadEndPos > addressedCall.length) {\n // logger.warn('Payload extends beyond AddressedCall data bounds');\n return null;\n }\n\n // Extract Payload\n const payloadBytes = addressedCall.slice(payloadStartPos, payloadEndPos);\n return payloadBytes;\n\n } catch (error) {\n logger.error('Error extracting payload from AddressedCall:', error);\n return null;\n }\n}\n\n/**\n * Calculates the validationID hash for a RegisterL1ValidatorMessage payload.\n * Uses the SolidityValidationPeriod interface.\n */\nexport function calculateValidationID(validationPeriod: SolidityValidationPeriod): Uint8Array {\n const payload = packRegisterL1ValidatorPayload(validationPeriod);\n return sha256(payload);\n}\n\n// Define the ABI for the SendWarpMessage event\nconst sendWarpMessageEventAbi = parseAbiItem(\n 'event SendWarpMessage(address indexed sourceAddress, bytes32 indexed unsignedMessageID, bytes message)'\n);\n\n/**\n * Gets the marshalled L1ValidatorRegistrationJustification protobuf bytes for a specific\n * validation ID and subnet. It first checks if the validation ID corresponds to the hash\n * of a derived bootstrap validator ID (SubnetID + Index). If not found, it queries\n * Warp logs for a RegisterL1ValidatorMessage payload whose hash matches the validation ID\n * and constructs the justification using that message payload.\n *\n * @param nodeID - The node ID of the validator (e.g., \"NodeID-...\"), used for logging and secondary confirmation.\n * @param validationIDHex - The target validation ID as a '0x' prefixed hex string (bytes32).\n * @param subnetIDStr - The subnet ID as a Base58Check string.\n * @param ExtendedPublicClient - A client that can perform getLogs operations.\n * @returns The marshalled L1ValidatorRegistrationJustification bytes as a Uint8Array, or null if not found/error.\n */\nexport async function GetRegistrationJustification(\n nodeID: string, // Keep for logging/confirmation\n validationIDHex: string,\n subnetIDStr: string,\n ExtendedPublicClient: { getLogs: ExtendedPublicClient['getLogs'] },\n latestBlock?: bigint | 0\n): Promise<Uint8Array | null> {\n const WARP_ADDRESS = '0x0200000000000000000000000000000000000005' as const;\n const NUM_BOOTSTRAP_VALIDATORS_TO_SEARCH = 100;\n\n let targetValidationIDBytes: Uint8Array;\n try {\n targetValidationIDBytes = hexToBytes(validationIDHex as Hex);\n if (targetValidationIDBytes.length !== 32) {\n throw new Error(`Decoded validationID must be 32 bytes, got ${targetValidationIDBytes.length}`);\n }\n } catch (e: any) {\n logger.error(`Failed to decode provided validationIDHex '${validationIDHex}': ${e.message}`);\n return null;\n }\n\n const subnetIDBytes = decodeID(subnetIDStr);\n const targetNodeIDBytes = decodeNodeID(nodeID); // Decode for log confirmation\n\n if (!subnetIDBytes) {\n logger.error(`Failed to decode provided SubnetID: ${subnetIDStr}`);\n return null;\n }\n if (!targetNodeIDBytes) {\n logger.warn(`Failed to decode provided NodeID for confirmation: ${nodeID}`);\n // Allow continuing without targetNodeIDBytes for confirmation\n }\n\n // 1. Check for bootstrap validators (comparing hash of derived ID against targetValidationIDBytes)\n for (let index = 0; index < NUM_BOOTSTRAP_VALIDATORS_TO_SEARCH; index++) {\n // Compute the 36-byte derived ID (SubnetID + Index)\n const bootstrapDerivedBytes = computeDerivedID(subnetIDBytes, index);\n // Compute the SHA-256 hash (32 bytes)\n const bootstrapValidationIDHash = sha256(bootstrapDerivedBytes);\n\n // Compare the derived hash with the target validation ID\n if (compareBytes(bootstrapValidationIDHash, targetValidationIDBytes)) {\n logger.log(`ValidationID ${validationIDHex} matches HASH of bootstrap validator derived ID (subnet ${subnetIDStr}, index ${index})`);\n // Marshal justification using the *original* subnetID and index\n const justificationBytes = marshalConvertSubnetToL1TxDataJustification(subnetIDBytes, index);\n return justificationBytes;\n }\n }\n 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...`);\n\n\n // 2. If not a bootstrap validator, search Warp logs\n try {\n // Start from the latest block and search backwards in batches\n latestBlock = latestBlock ? latestBlock : await ExtendedPublicClient.getLogs({ fromBlock: 'latest' }).then(logs => logs.length > 0 ? logs[0].blockNumber : 0) || 0n;\n const BATCH_SIZE = 2048;\n let fromBlock = latestBlock;\n let toBlock = latestBlock;\n let justification: Uint8Array<ArrayBuffer> | null = null;\n\n logger.log(`Starting search from latest block ${latestBlock} in batches of ${BATCH_SIZE} blocks...`);\n\n while (fromBlock > 0n && !justification) {\n // Calculate batch range\n fromBlock = BigInt(Math.max(0, Number(toBlock) - BATCH_SIZE + 1));\n\n logger.log(`Searching for Warp logs in block range: ${fromBlock} to ${toBlock}...`);\n\n const warpLogs = await ExtendedPublicClient.getLogs({\n address: WARP_ADDRESS,\n event: sendWarpMessageEventAbi,\n fromBlock: fromBlock,\n toBlock: toBlock,\n });\n\n if (warpLogs.length > 0) {\n logger.log(`Found ${warpLogs.length} Warp logs in block range ${fromBlock}-${toBlock}. Searching for justification matching ValidationID ${validationIDHex}...`);\n\n for (const log of warpLogs) {\n try {\n const decodedArgs = log.args as { message?: Hex };\n const fullMessageHex = decodedArgs.message;\n if (!fullMessageHex) continue;\n\n const unsignedMessageBytes = Buffer.from(fullMessageHex.slice(2), 'hex');\n const addressedCall = extractAddressedCall(unsignedMessageBytes);\n if (addressedCall.length === 0) continue;\n\n // Check TypeID within AddressedCall for RegisterL1ValidatorMessage\n if (addressedCall.length < 6) continue;\n const acTypeID = (addressedCall[2] << 24) | (addressedCall[3] << 16) | (addressedCall[4] << 8) | addressedCall[5];\n const REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID_IN_AC = 1;\n if (acTypeID !== REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID_IN_AC) {\n continue;\n }\n\n const payloadBytes = extractPayloadFromAddressedCall(addressedCall);\n if (!payloadBytes) continue;\n\n try {\n // Unpack the payload\n const parsedPayload: SolidityValidationPeriod = unpackRegisterL1ValidatorPayload(payloadBytes);\n // Calculate the validationID (hash) of this message payload\n const logValidationIDBytes = calculateValidationID(parsedPayload);\n\n // Compare the calculated hash with the target validation ID\n if (compareBytes(logValidationIDBytes, targetValidationIDBytes)) {\n if (targetNodeIDBytes && !compareBytes(parsedPayload.nodeID, targetNodeIDBytes)) {\n logger.warn(`ValidationID match found (${validationIDHex}) in log ${log.transactionHash}, but NodeID in message (${utils.base58check.encode(Buffer.from(parsedPayload.nodeID))}) does not match expected NodeID ${nodeID}. Skipping.`);\n continue;\n }\n\n const tag = new Uint8Array([0x12]);\n const lengthVarint = encodeVarint(payloadBytes.length);\n const marshalledJustification = new Uint8Array(tag.length + lengthVarint.length + payloadBytes.length);\n marshalledJustification.set(tag, 0);\n marshalledJustification.set(lengthVarint, tag.length);\n marshalledJustification.set(payloadBytes, tag.length + lengthVarint.length);\n\n logger.log(`Found matching ValidationID ${validationIDHex} (NodeID ${nodeID}) in Warp log (Tx: ${log.transactionHash}, Block: ${log.blockNumber}). Marshalled justification.`);\n justification = marshalledJustification;\n break; // Exit the loop once found\n }\n } catch {\n // logger.warn(`Error parsing/hashing RegisterL1ValidatorMessage payload from Tx ${log.transactionHash}:`, parseOrHashError);\n }\n } catch (logProcessingError) {\n logger.error(`Error processing log entry for tx ${log.transactionHash}:`, logProcessingError);\n }\n }\n } else {\n logger.log(`No Warp logs found in block range ${fromBlock}-${toBlock}.`);\n }\n\n // If justification was found, break out of the while loop\n if (justification) break;\n\n // Move to previous batch\n toBlock = fromBlock - 1n;\n\n // Exit if we've scanned all blocks\n if (toBlock < 0) break;\n }\n\n if (!justification) {\n logger.log(`No matching registration log found for ValidationID ${validationIDHex} in any Warp logs.`);\n }\n\n return justification;\n\n } catch (fetchLogError) {\n logger.error(`Error fetching or decoding logs for ValidationID ${validationIDHex}:`, fetchLogError);\n return null;\n }\n}\n\n// Helper functions\n\nexport function hexToUint8Array(hex: Hex): Uint8Array {\n // Remove '0x' prefix if present\n const hexString = hex.startsWith('0x') ? hex.slice(2) : hex;\n return Buffer.from(hexString, 'hex');\n}\n\nexport interface PChainOwner {\n threshold: number;\n addresses: Hex[];\n}\n\nexport interface ValidationPeriod {\n subnetId: string;\n nodeID: string;\n blsPublicKey: Hex;\n registrationExpiry: bigint;\n remainingBalanceOwner: PChainOwner;\n disableOwner: PChainOwner;\n weight: bigint;\n}\n\n/**\n * Parses a RegisterL1ValidatorMessage from a byte array.\n * The message format specification is:\n *\n * RegisterL1ValidatorMessage:\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | codecID : uint16 | 2 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | typeID : uint32 | 4 bytes |\n * +-----------------------+-------------+-------------------------------------------------------------------+\n * | subnetID : [32]byte | 32 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | nodeID : []byte | 4 + len(nodeID) bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | blsPublicKey : [48]byte | 48 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | expiry : uint64 | 8 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | remainingBalanceOwner : PChainOwner | 8 + len(addresses) * 20 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | disableOwner : PChainOwner | 8 + len(addresses) * 20 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | weight : uint64 | 8 bytes |\n * +-----------------------+-------------+--------------------------------------------------------------------+\n * | 122 + len(nodeID) + (len(addresses1) + len(addresses2)) * 20 bytes |\n * +--------------------------------------------------------------------+\n *\n * PChainOwner:\n * +-----------+------------+-------------------------------+\n * | threshold : uint32 | 4 bytes |\n * +-----------+------------+-------------------------------+\n * | addresses : [][20]byte | 4 + len(addresses) * 20 bytes |\n * +-----------+------------+-------------------------------+\n * | 8 + len(addresses) * 20 bytes |\n * +-------------------------------+\n */\nexport function parseRegisterL1ValidatorMessage(input: Uint8Array): ValidationPeriod {\n let index = 0;\n const validation: ValidationPeriod = {\n subnetId: '',\n nodeID: '',\n blsPublicKey: '0x',\n registrationExpiry: 0n,\n remainingBalanceOwner: { threshold: 0, addresses: [] },\n disableOwner: { threshold: 0, addresses: [] },\n weight: 0n\n };\n\n // Parse codec ID\n const codecID = parseUint16(input, index);\n if (codecID !== codecVersion) {\n throw new Error(`Invalid codec ID: ${codecID}`);\n }\n index += 2;\n\n // Parse type ID\n const typeID = parseUint32(input, index);\n if (typeID !== REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID) {\n throw new Error(`Invalid message type: ${typeID}`);\n }\n index += 4;\n\n // Parse subnetID\n const subnetIDBytes = input.slice(index, index + 32);\n validation.subnetId = utils.base58check.encode(subnetIDBytes);\n index += 32;\n\n // Parse nodeID length\n const nodeIDLength = parseUint32(input, index);\n index += 4;\n\n // Parse nodeID\n const nodeIDBytes = input.slice(index, index + nodeIDLength);\n validation.nodeID = `NodeID-${utils.base58check.encode(nodeIDBytes)}`;\n index += nodeIDLength;\n\n // Parse BLS public key\n const blsPublicKeyBytes = input.slice(index, index + 48);\n validation.blsPublicKey = `0x${Buffer.from(blsPublicKeyBytes).toString('hex')}`;\n index += 48;\n\n // Parse registration expiry\n validation.registrationExpiry = parseUint64(input, index);\n index += 8;\n\n // Parse remainingBalanceOwner threshold\n validation.remainingBalanceOwner.threshold = parseUint32(input, index);\n index += 4;\n\n // Parse remainingBalanceOwner addresses length\n const remainingBalanceOwnerAddressesLength = parseUint32(input, index);\n index += 4;\n\n // Parse remainingBalanceOwner addresses\n validation.remainingBalanceOwner.addresses = [];\n for (let i = 0; i < remainingBalanceOwnerAddressesLength; i++) {\n const addrBytes = input.slice(index, index + 20);\n const addr = `0x${Buffer.from(addrBytes).toString('hex')}`;\n validation.remainingBalanceOwner.addresses.push(addr as Hex);\n index += 20;\n }\n\n // Parse disableOwner threshold\n validation.disableOwner.threshold = parseUint32(input, index);\n index += 4;\n\n // Parse disableOwner addresses length\n const disableOwnerAddressesLength = parseUint32(input, index);\n index += 4;\n\n // Parse disableOwner addresses\n validation.disableOwner.addresses = [];\n for (let i = 0; i < disableOwnerAddressesLength; i++) {\n const addrBytes = input.slice(index, index + 20);\n const addr = `0x${Buffer.from(addrBytes).toString('hex')}`;\n validation.disableOwner.addresses.push(addr as Hex);\n index += 20;\n }\n\n // Validate input length\n const expectedLength = 122 + nodeIDLength + (remainingBalanceOwnerAddressesLength + disableOwnerAddressesLength) * 20;\n if (input.length !== expectedLength) {\n throw new Error(`Invalid message length: got ${input.length}, expected ${expectedLength}`);\n }\n\n // Parse weight\n validation.weight = parseUint64(input, index);\n\n return validation;\n}\n\n// Helper functions for parsing numbers\nfunction parseUint16(input: Uint8Array, offset: number): number {\n let result = 0;\n for (let i = 0; i < 2; i++) {\n result = (result << 8) | input[offset + i];\n }\n return result;\n}\n\nexport function parseUint32(input: Uint8Array, offset: number): number {\n let result = 0;\n for (let i = 0; i < 4; i++) {\n result = (result << 8) | input[offset + i];\n }\n return result;\n}\n\nfunction parseUint64(input: Uint8Array, offset: number): bigint {\n let result = 0n;\n for (let i = 0; i < 8; i++) {\n result = (result << 8n) | BigInt(input[offset + i]);\n }\n return result;\n}\n","import { fromBytes, hexToBytes, Hex, parseAbiItem, decodeEventLog, Log } from 'viem';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { cb58ToBytes, retryWhileError, cb58ToHex } from './utils';\nimport { PChainOwner } from './justification';\nimport { utils } from '@avalabs/avalanchejs';\nimport { ExtendedClient, Network } from '../client';\nimport { pChainChainID } from '../config';\nimport { logger } from './logger';\nimport { validatedBy } from './pChainUtils';\n\ninterface CollectSignaturesProps {\n network: Network, message: string, justification?: string, signingSubnetId?: string\n}\n\nexport interface PackL1ConversionMessageArgs {\n subnetId: string;\n managerChainID: string;\n managerAddress: string;\n validators: SubnetToL1ConversionValidatorData[];\n}\n\n// Existing interface from original TS file\nexport interface SubnetToL1ConversionValidatorData {\n nodeID: string;\n nodePOP: {\n publicKey: string;\n proofOfPossession: string;\n };\n weight: number; // Note: Solidity uses uint64 (bigint)\n}\n\n// Helper functions for packing messages\nconst codecVersion = 0;\nconst encodeUint16 = (num: number): Uint8Array => encodeNumber(num, 2);\nconst encodeUint32 = (num: number): Uint8Array => encodeNumber(num, 4);\nconst encodeUint64 = (num: bigint): Uint8Array => encodeNumber(num, 8);\n\nfunction encodeNumber(num: number | bigint, numberBytes: number): Uint8Array {\n const arr = new Uint8Array(numberBytes);\n const isBigInt = typeof num === 'bigint';\n let value = isBigInt ? num : BigInt(num);\n for (let i = numberBytes - 1; i >= 0; i--) {\n arr[i] = Number(value & 0xffn);\n value = value >> 8n;\n }\n return arr;\n}\n\nfunction encodeVarBytes(bytes: Uint8Array): Uint8Array {\n const lengthBytes = encodeUint32(bytes.length);\n const result = new Uint8Array(lengthBytes.length + bytes.length);\n result.set(lengthBytes);\n result.set(bytes, lengthBytes.length);\n return result;\n}\n\nfunction concatenateUint8Arrays(...arrays: Uint8Array[]): Uint8Array {\n const totalLength = arrays.reduce((acc, arr) => acc + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const arr of arrays) {\n result.set(arr, offset);\n offset += arr.length;\n }\n return result;\n}\n\nexport function packL1ConversionMessage(args: PackL1ConversionMessageArgs, networkID: number, sourceChainID: string): [Uint8Array, Uint8Array] {\n // Uses subnetToL1ConversionID -> marshalSubnetToL1ConversionData (based on TS interfaces)\n const subnetConversionID = subnetToL1ConversionID(args);\n\n // Uses newSubnetToL1Conversion (which packs codec, len=0, id)\n const addressedCallPayload = newSubnetToL1Conversion(subnetConversionID);\n\n // Uses newAddressedCall (which packs codec, type=1, sourceAddr, payload)\n const subnetConversionAddressedCall = newAddressedCall(new Uint8Array([]), addressedCallPayload);\n\n // Uses newUnsignedMessage (which packs codec, network, sourceChain, message)\n const unsignedMessage = newUnsignedMessage(networkID, sourceChainID, subnetConversionAddressedCall);\n return [unsignedMessage, utils.base58check.decode(args.subnetId)];\n}\n\nexport function subnetToL1ConversionID(args: PackL1ConversionMessageArgs): Uint8Array {\n const data = marshalSubnetToL1ConversionData(args);\n return sha256(data);\n}\n\nexport function marshalSubnetToL1ConversionData(args: PackL1ConversionMessageArgs): Uint8Array {\n const parts: Uint8Array[] = [];\n\n parts.push(encodeUint16(CODEC_ID)); // Use constant CODEC_ID\n parts.push(utils.base58check.decode(args.subnetId));\n parts.push(utils.base58check.decode(args.managerChainID));\n parts.push(encodeVarBytes(utils.hexToBuffer(args.managerAddress)));\n parts.push(encodeUint32(args.validators.length));\n\n // Sort validators by nodeID (using existing compareNodeIDs)\n let sortedValidators;\n try {\n sortedValidators = [...args.validators].sort((a, b) => compareNodeIDs(a.nodeID, b.nodeID));\n } catch (error: any) {\n logger.warn(\"Error sorting validators, using original order:\", error);\n sortedValidators = args.validators;\n }\n\n for (const validator of sortedValidators) {\n if (!validator.nodeID || !validator.nodePOP || !validator.nodePOP.publicKey) { // Check publicKey existence\n throw new Error(`Invalid validator data: ${JSON.stringify(validator)}`);\n }\n\n let nodeIDBytes;\n try {\n nodeIDBytes = validator.nodeID.startsWith(\"NodeID-\")\n ? utils.base58check.decode(validator.nodeID.split(\"-\")[1])\n : utils.hexToBuffer(validator.nodeID);\n } catch (error: any) {\n throw new Error(`Failed to parse nodeID '${validator.nodeID}': ${error.message}`);\n }\n\n // NOTE: This uses nodePOP.publicKey, whereas the Solidity port uses blsPublicKey.\n // Ensure this publicKey corresponds to the expected BLS key if used for similar purposes.\n // Assuming nodePOP.publicKey is the BLS key here based on context.\n const blsPublicKeyBytes = utils.hexToBuffer(validator.nodePOP.publicKey);\n if (blsPublicKeyBytes.length !== 48) {\n logger.warn(`Expected BLS public key (nodePOP.publicKey) to be 48 bytes, got ${blsPublicKeyBytes.length}`);\n // Decide whether to throw or allow based on requirements\n // throw new Error(`Invalid BLS public key length from nodePOP.publicKey: ${blsPublicKeyBytes.length}`);\n }\n\n parts.push(encodeVarBytes(nodeIDBytes));\n parts.push(blsPublicKeyBytes); // Packing the publicKey as if it's the BLS key\n // Note: Solidity uses uint64 (bigint), TS interface uses number. Convert.\n parts.push(encodeUint64(BigInt(validator.weight)));\n }\n\n const result = concatenateUint8Arrays(...parts);\n return result;\n}\n\nexport const compareNodeIDs = (a: string, b: string) => {\n // logger.log(a, b); // Removed console log\n let aNodeID: Uint8Array;\n let bNodeID: Uint8Array;\n\n try {\n // Try to parse as NodeID-{base58check} or hex\n aNodeID = a.startsWith(\"NodeID-\") ? utils.base58check.decode(a.split(\"-\")[1]) : utils.hexToBuffer(a);\n bNodeID = b.startsWith(\"NodeID-\") ? utils.base58check.decode(b.split(\"-\")[1]) : utils.hexToBuffer(b);\n } catch (error: any) {\n // Fallback to string comparison if parsing fails (e.g., invalid format)\n logger.warn(`Failed to parse NodeIDs for comparison ('${a}', '${b}'), falling back to string compare: ${error.message}`);\n return a.localeCompare(b);\n }\n\n // Compare byte arrays lexicographically\n const minLength = Math.min(aNodeID.length, bNodeID.length);\n for (let i = 0; i < minLength; i++) {\n if (aNodeID[i] !== bNodeID[i]) {\n return aNodeID[i] < bNodeID[i] ? -1 : 1;\n }\n }\n // If one is a prefix of the other, the shorter one comes first\n return aNodeID.length - bNodeID.length;\n}\n\nfunction newAddressedCall(sourceAddress: Uint8Array, payload: Uint8Array): Uint8Array {\n return concatenateUint8Arrays(\n encodeUint16(codecVersion),\n encodeUint32(1),\n encodeVarBytes(sourceAddress),\n encodeVarBytes(payload)\n );\n}\n\nfunction newSubnetToL1Conversion(subnetConversionID: Uint8Array): Uint8Array {\n return concatenateUint8Arrays(\n encodeUint16(codecVersion),\n encodeUint32(0),\n subnetConversionID\n );\n}\n\nfunction newUnsignedMessage(networkID: number, sourceChainID: string, message: Uint8Array): Uint8Array {\n return concatenateUint8Arrays(\n encodeUint16(codecVersion),\n encodeUint32(networkID),\n cb58ToBytes(sourceChainID),\n encodeUint32(message.length),\n message\n );\n}\n\nexport function packWarpIntoAccessList(warpMessageBytes: Uint8Array): [{\n address: Hex,\n storageKeys: Hex[]\n}] {\n const CHUNK_SIZE = 32;\n const chunks: string[] = [];\n let currentChunk = Array.from(warpMessageBytes);\n\n // Add 0xFF terminator\n currentChunk.push(0xFF);\n\n // Pad to multiple of 32 bytes with zeros\n const paddingNeeded = (CHUNK_SIZE - (currentChunk.length % CHUNK_SIZE)) % CHUNK_SIZE;\n currentChunk = currentChunk.concat(Array(paddingNeeded).fill(0));\n\n // Split into 32-byte chunks\n for (let i = 0; i < currentChunk.length; i += CHUNK_SIZE) {\n const chunk = currentChunk.slice(i, i + CHUNK_SIZE);\n const hexChunk = chunk\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('');\n chunks.push(`0x${hexChunk}`);\n }\n\n return [{\n address: \"0x0200000000000000000000000000000000000005\",\n storageKeys: chunks as Hex[]\n }];\n}\n\ninterface SignatureResponse {\n signedMessage: string;\n}\n\nexport async function collectSignaturesInitializeValidatorSet(params: {\n network: Network,\n subnetId: string;\n validatorManagerBlockchainID: string;\n validatorManagerSubnetID: string;\n managerAddress: Hex;\n validators: {\n nodeID: string;\n blsPublicKey: string;\n blsProofOfPossession: string;\n weight: number;\n balance: number;\n }[];\n}): Promise<string> {\n\n // Pack the message locally\n const [message, justification] = packL1ConversionMessage({\n subnetId: params.subnetId,\n managerChainID: params.validatorManagerBlockchainID,\n managerAddress: params.managerAddress,\n validators: params.validators.map(v => ({\n nodeID: v.nodeID,\n nodePOP: {\n publicKey: v.blsPublicKey as Hex,\n proofOfPossession: v.blsProofOfPossession as Hex\n },\n weight: v.weight\n }))\n }, params.network === 'fuji' ? 5 : 1, pChainChainID);\n\n // logger.log(\"Message:\", fromBytes(message, 'hex'));\n // logger.log(\"Justification:\", fromBytes(justification, 'hex'));\n\n // Use the signature aggregation API from Glacier\n const baseURL = process.env.SIG_AGG_URL ? process.env.SIG_AGG_URL : params.network === 'fuji' ? 'https://glacier-api-dev.avax.network/v1/signatureAggregator/fuji/aggregateSignatures' : 'https://glacier-api.avax.network/v1/signatureAggregator/mainnet/aggregateSignatures';\n const signResponse = await retryWhileError(() => fetch(baseURL, {\n method: 'POST',\n headers: {\n 'accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n \"message\": fromBytes(message, 'hex'),\n \"justification\": fromBytes(justification, 'hex'),\n \"signingSubnetId\": params.validatorManagerSubnetID,\n // \"quorumPercentage\": 67\n })\n }), 2000, 30000, (result) => result.status !== 500);\n\n if (!signResponse.ok) {\n const errorText = await signResponse.text();\n throw new Error(errorText || `HTTP error! status: ${signResponse.status}`);\n }\n\n const { signedMessage } = await signResponse.json() as SignatureResponse;\n return signedMessage;\n}\n\nexport async function getSigningSubnetIdFromWarpMessage(client: ExtendedClient, message: string): Promise<string> {\n const signingChainIdHex = \"0x\" + message.slice(14, 78);\n const signingChainId = utils.base58check.encode(hexToBytes(signingChainIdHex as Hex));\n const signingSubnetId = await validatedBy(client, signingChainId);\n if (!signingSubnetId) throw new Error(\"Could not find signing subnet ID\");\n return signingSubnetId;\n}\n\nexport async function collectSignatures({ network, message, justification, signingSubnetId }: CollectSignaturesProps): Promise<Hex> {\n // Use the signature aggregation API from Glacier\n const body: { message: string; justification?: string; signingSubnetId?: string, quorumPercentage?: number } = { message };\n if (justification) body.justification = justification;\n body.signingSubnetId = signingSubnetId;\n body.quorumPercentage = 67;\n // Test every 2 seconds, timeout after 30 seconds\n const baseURL = process.env.SIG_AGG_URL ? process.env.SIG_AGG_URL : network === 'fuji' ? 'https://glacier-api-dev.avax.network/v1/signatureAggregator/fuji/aggregateSignatures' : 'https://glacier-api.avax.network/v1/signatureAggregator/mainnet/aggregateSignatures';\n const signResponse = await retryWhileError(() => fetch(baseURL, {\n method: 'POST',\n headers: {\n 'accept': 'application/json',\n 'Content-Type': 'application/json'\n \n },\n body: JSON.stringify(body)\n }), 2000, 30000, (result) => result.status !== 500);\n\n if (!signResponse.ok) {\n const errorText = await signResponse.text();\n throw new Error(errorText || `HTTP error! status: ${signResponse.status}`);\n }\n const { signedMessage } = await signResponse.json() as SignatureResponse;\n return signedMessage as Hex;\n}\n\n// Add new function to pack L1 validator registration message\nexport function packL1ValidatorRegistration(\n validationID: Uint8Array,\n registered: boolean,\n networkID: number,\n sourceChainID: string\n): Uint8Array {\n // Validate validationID length\n if (validationID.length !== 32) {\n throw new Error('ValidationID must be exactly 32 bytes');\n }\n\n const messagePayload = concatenateUint8Arrays(\n encodeUint16(codecVersion),\n encodeUint32(2), // L1_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID\n validationID,\n new Uint8Array([registered ? 1 : 0])\n );\n\n // Create addressed call with empty source address\n const addressedCall = newAddressedCall(new Uint8Array([]), messagePayload);\n\n // Create unsigned message\n return newUnsignedMessage(networkID, sourceChainID, addressedCall);\n}\n\n// Add new function to pack L1 validator weight message\nexport function packL1ValidatorWeightMessage(\n validationID: Uint8Array,\n nonce: bigint,\n weight: bigint,\n networkID: number,\n sourceChainID: string\n): Uint8Array {\n // Validate validationID length\n if (validationID.length !== 32) {\n throw new Error('ValidationID must be exactly 32 bytes');\n }\n\n const messagePayload = concatenateUint8Arrays(\n encodeUint16(codecVersion),\n encodeUint32(3), // L1_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID\n validationID,\n encodeUint64(nonce),\n encodeUint64(weight)\n );\n\n // Create addressed call with empty source address\n const addressedCall = newAddressedCall(new Uint8Array([]), messagePayload);\n\n // Create unsigned message\n return newUnsignedMessage(networkID, sourceChainID, addressedCall);\n}\n\n\n// Mirrors Solidity's ValidationPeriod struct\nexport interface SolidityValidationPeriod {\n subnetID: Uint8Array; // bytes32\n nodeID: Uint8Array; // bytes\n blsPublicKey: Uint8Array; // bytes (expected length 48)\n registrationExpiry: bigint; // uint64\n remainingBalanceOwner: PChainOwner; // Uses existing PChainOwner, ensure threshold is handled as uint32 if needed\n disableOwner: PChainOwner; // Uses existing PChainOwner, ensure threshold is handled as uint32 if needed\n weight: bigint; // uint64\n}\n\n\n// --- Constants ---\nconst CODEC_ID = 0; // uint16 internal constant CODEC_ID = 0; (replaces codecVersion variable)\n// const codecVersion = 0; // Replaced by CODEC_ID\n\n// const SUBNET_TO_L1_CONVERSION_MESSAGE_TYPE_ID = 0; // uint32\nconst REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID = 1; // uint32 (already defined in original file)\n// const L1_VALIDATOR_REGISTRATION_MESSAGE_TYPE_ID = 2; // uint32 (already defined in original file)\n// const L1_VALIDATOR_WEIGHT_MESSAGE_TYPE_ID = 3; // uint32\nconst VALIDATION_UPTIME_MESSAGE_TYPE_ID = 0; // uint32 (Note: same as SUBNET_TO_L1_CONVERSION_MESSAGE_TYPE_ID)\n\n\n\n// --- RegisterL1ValidatorMessage ---\n\n// Function to pack *only* the payload using the SolidityValidationPeriod interface.\nexport function packRegisterL1ValidatorPayload(validationPeriod: SolidityValidationPeriod): Uint8Array {\n if (validationPeriod.blsPublicKey.length !== 48) {\n throw new Error('Invalid BLS public key length, expected 48 bytes');\n }\n\n const parts: Uint8Array[] = [];\n parts.push(encodeUint16(CODEC_ID));\n parts.push(encodeUint32(REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID));\n\n if (validationPeriod.subnetID.length !== 32) throw new Error(\"subnetID must be 32 bytes\");\n parts.push(validationPeriod.subnetID);\n\n parts.push(encodeVarBytes(validationPeriod.nodeID)); // Includes length prefix\n\n parts.push(validationPeriod.blsPublicKey);\n parts.push(encodeUint64(validationPeriod.registrationExpiry));\n\n // remainingBalanceOwner\n parts.push(encodeUint32(validationPeriod.remainingBalanceOwner.threshold));\n parts.push(encodeUint32(validationPeriod.remainingBalanceOwner.addresses.length));\n for (const address of validationPeriod.remainingBalanceOwner.addresses) {\n const addrBytes = utils.hexToBuffer(address);\n if (addrBytes.length !== 20) throw new Error(\"Owner address must be 20 bytes hex string\");\n parts.push(addrBytes);\n }\n\n // disableOwner\n parts.push(encodeUint32(validationPeriod.disableOwner.threshold));\n parts.push(encodeUint32(validationPeriod.disableOwner.addresses.length));\n for (const address of validationPeriod.disableOwner.addresses) {\n const addrBytes = utils.hexToBuffer(address);\n if (addrBytes.length !== 20) throw new Error(\"Owner address must be 20 bytes hex string\");\n parts.push(addrBytes);\n }\n\n parts.push(encodeUint64(validationPeriod.weight));\n\n return concatenateUint8Arrays(...parts);\n}\n\n\n/**\n * Parses the payload of a RegisterL1ValidatorMessage into the SolidityValidationPeriod structure.\n * Mirrors Solidity's unpackRegisterL1ValidatorMessage.\n */\nexport function unpackRegisterL1ValidatorPayload(input: Uint8Array): SolidityValidationPeriod {\n let index = 0;\n const validation: Partial<SolidityValidationPeriod> = {\n remainingBalanceOwner: { threshold: 0, addresses: [] },\n disableOwner: { threshold: 0, addresses: [] },\n };\n\n // Unpack codec ID\n const codecID = parseUint16(input, index);\n if (codecID !== CODEC_ID) {\n throw new Error(`Invalid codec ID: ${codecID}`);\n }\n index += 2;\n\n // Unpack type ID\n const typeID = parseUint32(input, index);\n if (typeID !== REGISTER_L1_VALIDATOR_MESSAGE_TYPE_ID) {\n throw new Error(`Invalid message type: ${typeID}`);\n }\n index += 4;\n\n // Unpack subnetID\n validation.subnetID = parseBytes(input, index, 32);\n index += 32;\n\n // Unpack nodeID (var bytes)\n const { bytes: nodeIDBytes, newOffset: nodeIDEndOffset } = parseVarBytes(input, index);\n validation.nodeID = nodeIDBytes;\n index = nodeIDEndOffset;\n\n\n // Unpack BLS public key\n validation.blsPublicKey = parseBytes(input, index, 48);\n index += 48;\n\n // Unpack registration expiry\n validation.registrationExpiry = parseUint64(input, index);\n index += 8;\n\n // Unpack remainingBalanceOwner threshold\n validation.remainingBalanceOwner!.threshold = parseUint32(input, index);\n index += 4;\n // Unpack remainingBalanceOwner addresses length\n const remainingBalanceOwnerAddressesLength = parseUint32(input, index);\n index += 4;\n // Unpack remainingBalanceOwner addresses\n validation.remainingBalanceOwner!.addresses = [];\n for (let i = 0; i < remainingBalanceOwnerAddressesLength; i++) {\n const addrBytes = parseBytes(input, index, 20);\n validation.remainingBalanceOwner!.addresses.push(bytesToHexPrefixed(addrBytes));\n index += 20;\n }\n\n // Unpack disableOwner threshold\n validation.disableOwner!.threshold = parseUint32(input, index);\n index += 4;\n // Unpack disableOwner addresses length\n const disableOwnerAddressesLength = parseUint32(input, index);\n index += 4;\n // Unpack disableOwner addresses\n validation.disableOwner!.addresses = [];\n for (let i = 0; i < disableOwnerAddressesLength; i++) {\n const addrBytes = parseBytes(input, index, 20);\n validation.disableOwner!.addresses.push(bytesToHexPrefixed(addrBytes));\n index += 20;\n }\n\n // Unpack weight\n validation.weight = parseUint64(input, index);\n index += 8;\n\n // Validate total length by comparing the final index with input length\n if (index !== input.length) {\n // Calculate expected length based on parsed variable fields for better error message\n const expectedLength = 2 + 4 + 32 + (4 + validation.nodeID.length) + 48 + 8 +\n (4 + 4 + remainingBalanceOwnerAddressesLength * 20) +\n (4 + 4 + disableOwnerAddressesLength * 20) + 8;\n throw new Error(`Invalid message length: parsed ${index} bytes, expected ${expectedLength}, total length ${input.length}`);\n }\n\n return validation as SolidityValidationPeriod;\n}\n\n// Helper functions for parsing numbers (already exist at end of file, moved up for clarity)\nfunction parseUint16(input: Uint8Array, offset: number): number {\n if (offset + 2 > input.length) throw new Error(\"parseUint16: Offset out of bounds\");\n let result = 0;\n for (let i = 0; i < 2; i++) {\n result = (result << 8) | input[offset + i];\n }\n return result;\n}\n\nfunction parseUint32(input: Uint8Array, offset: number): number {\n if (offset + 4 > input.length) throw new Error(\"parseUint32: Offset out of bounds\");\n let result = 0;\n for (let i = 0; i < 4; i++) {\n result = (result << 8) | input[offset + i];\n }\n // Return as unsigned integer\n return result >>> 0;\n}\n\nfunction parseUint64(input: Uint8Array, offset: number): bigint {\n if (offset + 8 > input.length) throw new Error(\"parseUint64: Offset out of bounds\");\n let result = 0n;\n for (let i = 0; i < 8; i++) {\n result = (result << 8n) | BigInt(input[offset + i]);\n }\n return result;\n}\n\nfunction parseBytes(input: Uint8Array, offset: number, length: number): Uint8Array {\n if (offset + length > input.length) throw new Error(\"parseBytes: Offset/length out of bounds\");\n return input.slice(offset, offset + length);\n}\n\nfunction parseVarBytes(input: Uint8Array, offset: number): { bytes: Uint8Array; newOffset: number } {\n const length = parseUint32(input, offset);\n const newOffset = offset + 4;\n const bytes = parseBytes(input, newOffset, length);\n return { bytes, newOffset: newOffset + length };\n}\n\nconst bytesToHexPrefixed = (bytes: Uint8Array): Hex => `0x${Buffer.from(bytes).toString('hex')}`;\n\nexport function packValidationUptimeMessage(validationId: string, uptimeSeconds: number, networkID: number, sourceChainID: string): Uint8Array {\n\n // Convert validationId to hex\n const validationIdHex = cb58ToHex(validationId);\n const validationIdBytes = hexToBytes(validationIdHex);\n\n // Create the message payload with the proper format\n const messagePayload = concatenateUint8Arrays(\n encodeUint16(codecVersion),\n encodeUint32(VALIDATION_UPTIME_MESSAGE_TYPE_ID),\n validationIdBytes,\n encodeUint64(BigInt(uptimeSeconds))\n );\n\n // Create addressed call with empty source address\n const addressedCall = newAddressedCall(new Uint8Array([]), messagePayload);\n\n // Create unsigned message\n return newUnsignedMessage(networkID, sourceChainID, addressedCall);\n}\n\nexport function decodeWarpMessage(log: Log) {\n const abi = parseAbiItem('event SendWarpMessage(address indexed sender, bytes32 indexed messageID, bytes message)')\n return decodeEventLog({\n abi: [abi],\n data: log.data,\n topics: log.topics,\n });\n}\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"feeCollector_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n },\n {\n \"name\": \"registerFee_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"MAX_FEE_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RegisterL1\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetL1Middleware\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"middleware\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetMetadataURL\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"metadataURL\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__FeeExceedsMaximum\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__FeeTransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__InsufficientFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__InvalidL1Middleware\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__InvalidValidatorManager\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__L1AlreadyRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__L1NotRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__NoFeesToWithdraw\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__NotFeeCollector\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__NotValidatorManagerOwner\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"expectedOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__RefundFailed\",\n \"inputs\": [\n {\n \"name\": \"refundAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__UnexpectedEther\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1Registry__ZeroAddress\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"feeCollector\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAllL1s\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getL1At\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isRegistered\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isRegisteredWithMiddleware\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"vaultManager_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"l1MetadataURL\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"middleware\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerFee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerL1\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"middleware_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"metadataURL\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setFeeCollector\",\n \"inputs\": [\n {\n \"name\": \"newFeeCollector\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setL1Middleware\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"middleware_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMetadataURL\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"metadataURL\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRegisterFee\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalL1s\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unclaimedFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawFees\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"event\",\n \"name\": \"RegisterOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetMetadataURL\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"metadataURL\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OperatorRegistry__OperatorAlreadyRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OperatorRegistry__OperatorNotRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"getAllOperators\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorAt\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isRegistered\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorMetadataURL\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerOperator\",\n \"inputs\": [\n {\n \"name\": \"metadataURL\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMetadataURL\",\n \"inputs\": [\n {\n \"name\": \"metadataURL\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalOperators\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"vaultRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"middlewareAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"vaultRemovalEpochDelay_\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__CollateralClassNotActive\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__CollateralNotInCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateral\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EnumerableMapNonexistentKey\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__AlreadyAdded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__AlreadyDisabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__AlreadyEnabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__NotEnabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__NotVault\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__SlasherNotImplemented\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__VaultAlreadyRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__VaultEpochTooShort\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__VaultGracePeriodNotPassed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__VaultNotDisabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__WrongVaultCollateralClass\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__ZeroAddress\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareVaultManager__ZeroVaultMaxL1Limit\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VAULTS_MANAGER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VAULT_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VAULT_REMOVAL_EPOCH_DELAY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVaultAtWithTimes\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"enabledTime\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"disabledTime\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVaultCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVaultCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVaults\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"middleware\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract AvalancheL1Middleware\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerVault\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"vaultMaxL1Limit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeVault\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"slashVault\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVaultMaxL1Limit\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"vaultMaxL1Limit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"vaultToCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"settings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AvalancheL1MiddlewareSettings\",\n \"components\": [\n {\n \"name\": \"balancer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operatorRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"vaultRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operatorL1Optin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epochDuration\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"slashingWindow\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"stakeUpdateWindow\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"primaryCollateral\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"primaryCollateralMaxStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"primaryCollateralMinStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"primaryCollateralWeightScaleFactor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AllNodeStakesUpdated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newStake\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssetAdded\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssetRemoved\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CollateralClassAdded\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"primaryCollateralMinStake\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"primaryCollateralMaxStake\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CollateralClassRemoved\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NodeAdded\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NodeRemoved\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NodeStakeCacheManuallyProcessed\",\n \"inputs\": [\n {\n \"name\": \"upToEpoch\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"epochsProcessedCount\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NodeStakeUpdated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newStake\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorHasLeftoverStake\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"leftoverStake\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VaultManagerUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldVaultManager\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newVaultManager\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__ActiveSecondaryCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__AssetStillInUse\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__CannotCacheFutureEpoch\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__CollateralClassNotActive\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__CollateralNotInCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateral\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__EpochError\",\n \"inputs\": [\n {\n \"name\": \"epochStartTs\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__InsufficientStake\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__InvalidNodeIdFormat\",\n \"inputs\": [\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__InvalidStakeAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__InvalidWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__ManualEpochUpdateRequired\",\n \"inputs\": [\n {\n \"name\": \"epochsPending\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__MessageNotForThisModule\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ownerModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__NoEpochsToProcess\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__NodeNotFound\",\n \"inputs\": [\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__NodePending\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__NodeStateNotUpdated\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__NotEpochUpdatePeriod\",\n \"inputs\": [\n {\n \"name\": \"timeNow\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"epochUpdatePeriod\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__NotImplemented\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__OperatorAlreadyRegistered\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__OperatorGracePeriodNotPassed\",\n \"inputs\": [\n {\n \"name\": \"disabledTime\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"slashingWindow\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__OperatorHasActiveNodes\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nodeCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__OperatorNotOptedIn\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"l1ValidatorManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__OperatorNotRegistered\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__RebalanceNotRequired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__ScaleFactorOutOfBounds\",\n \"inputs\": [\n {\n \"name\": \"supplied\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minAllowed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxAllowed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__SecurityModuleCapacityNotEnough\",\n \"inputs\": [\n {\n \"name\": \"securityModuleCapacity\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__UnexpectedWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__VaultManagerAlreadySet\",\n \"inputs\": [\n {\n \"name\": \"vaultManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__WeightUpdateNotPending\",\n \"inputs\": [\n {\n \"name\": \"validationId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__WeightUpdatePending\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AvalancheL1Middleware__ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__AssetAlreadyRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__AssetDecimalsMismatch\",\n \"inputs\": [\n {\n \"name\": \"expected\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__AssetIsPrimaryCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__AssetNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__AssetsStillExist\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__CollateralClassAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__CollateralClassNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__InvalidAsset\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassRegistry__InvalidStakingRequirements\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"EnumerableMapNonexistentKey\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__AlreadyAdded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__AlreadyDisabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__AlreadyEnabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MapWithTimeData__NotEnabled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MiddlewareUtils__OverflowInStakeToWeight\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"BALANCER\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"COLLATERAL_CLASS_MANAGER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"EPOCH_DURATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_AUTO_EPOCH_UPDATES\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATORS_MANAGER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATOR_L1_OPTIN\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATOR_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"PRIMARY_ASSET\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"PRIMARY_ASSET_CLASS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"REMOVAL_DELAY_EPOCHS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"SLASHING_WINDOW\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"START_TIME\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"UPDATE_WINDOW\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"WEIGHT_SCALE_FACTOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activateSecondaryCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addAssetToClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minValidatorStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxValidatorStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialAsset\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addNode\",\n \"inputs\": [\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"blsKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"remainingBalanceOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"disableOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balancerValidatorManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IBalancerValidatorManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"calcAndCacheNodeStakeForAllOperators\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"calcAndCacheStakes\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"totalStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"vid\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deactivateSecondaryCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"disableOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"enableOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceUpdateNodes\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"limitStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getActiveCollateralClasses\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"primary\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"secondaries\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getActiveNodesForEpoch\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"activeNodeIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAllOperators\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getClassAssets\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getClassStakingRequirements\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"minStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCollateralClassIds\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint96[]\",\n \"internalType\": \"uint96[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCurrentEpoch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getEpochAtTs\",\n \"inputs\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getEpochStartTs\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNodeStake\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorAvailableStake\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorNodesLength\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorStake\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorUsedStakeCached\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"registeredStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorUsedStakeCachedPerEpoch\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorValidationIDs\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTotalStake\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVaultManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initializeValidatorStakeUpdate\",\n \"inputs\": [\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isActiveCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAssetInClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lastGlobalNodeStakeUpdateEpoch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"manualProcessNodeStakeCache\",\n \"inputs\": [\n {\n \"name\": \"numEpochsToProcess\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nodePendingRemoval\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nodeStakeCache\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorLockedStake\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorNodesArray\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rebalancedThisEpoch\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"registerOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeAssetFromClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"asset\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeNode\",\n \"inputs\": [\n {\n \"name\": \"nodeId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setVaultManager\",\n \"inputs\": [\n {\n \"name\": \"vaultManager_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"slash\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalStakeCache\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalStakeCached\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"vaultFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Claim\",\n \"inputs\": [\n {\n \"name\": \"claimer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimBatch\",\n \"inputs\": [\n {\n \"name\": \"claimer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epochs\",\n \"type\": \"uint256[]\",\n \"indexed\": false,\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Deposit\",\n \"inputs\": [\n {\n \"name\": \"depositor\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"onBehalfOf\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OnSlash\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"captureTimestamp\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"slashedAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetDelegator\",\n \"inputs\": [\n {\n \"name\": \"delegator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetDepositLimit\",\n \"inputs\": [\n {\n \"name\": \"limit\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetDepositWhitelist\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetDepositorWhitelistStatus\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"status\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetIsDepositLimit\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetSlasher\",\n \"inputs\": [\n {\n \"name\": \"slasher\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SlashWithRedistribution\",\n \"inputs\": [\n {\n \"name\": \"requestedNextSlashed\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nextWithdrawalsSlashed\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deficit\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Withdraw\",\n \"inputs\": [\n {\n \"name\": \"withdrawer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"claimer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"burnedShares\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"mintedShares\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CheckpointUnorderedInsertion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientAllowance\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allowance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidApprover\",\n \"inputs\": [\n {\n \"name\": \"approver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidReceiver\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSender\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSpender\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotFactory\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__AlreadyClaimed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__AlreadySet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__DelegatorAlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__DepositLimitReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InconsistentRoles\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InsufficientClaim\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InsufficientDeposit\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InsufficientRedemption\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InsufficientWithdrawal\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidAccount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidBurner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidCaptureEpoch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidClaimer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidDelegator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidEpoch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidEpochDuration\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidFactory\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidLengthEpochs\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidOnBehalfOf\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidSlasher\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__InvalidTimestamp\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__MigrationNotImplemented\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__MissingRoles\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__NoPreviousEpoch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__NotDelegator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__NotSlasher\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__NotWhitelistedDepositor\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__SlasherAlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__TooMuchRedeem\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__TooMuchWithdraw\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DELEGATOR_FACTORY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEPOSITOR_WHITELIST_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEPOSIT_LIMIT_SET_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEPOSIT_WHITELIST_SET_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FACTORY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"IS_DEPOSIT_LIMIT_SET_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"SLASHER_FACTORY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_VAULT_STORAGE_SLOT\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeBalanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeBalanceOfAt\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hints\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeShares\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeSharesAt\",\n \"inputs\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeSharesOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeSharesOfAt\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeStakeAt\",\n \"inputs\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"burner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claim\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimBatch\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epochs\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"collateral\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"currentEpoch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"currentEpochStart\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"delegator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"onBehalfOf\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"depositedAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"mintedShares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"depositLimit\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"depositWhitelist\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"epochAt\",\n \"inputs\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"epochDuration\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"epochDurationInit\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"initialVersion\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"delegatorFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"slasherFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isDelegatorInitialized\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isDepositLimit\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isDepositorWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isInitialized\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isSlasherInitialized\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isWithdrawalsClaimed\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"migrate\",\n \"inputs\": [\n {\n \"name\": \"newVersion\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nextEpochStart\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"onSlash\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"captureTimestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"slashedAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"previousEpochStart\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeem\",\n \"inputs\": [\n {\n \"name\": \"claimer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"withdrawnAssets\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"mintedShares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDelegator\",\n \"inputs\": [\n {\n \"name\": \"delegator_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDepositLimit\",\n \"inputs\": [\n {\n \"name\": \"limit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDepositWhitelist\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDepositorWhitelistStatus\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"status\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setIsDepositLimit\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setSlasher\",\n \"inputs\": [\n {\n \"name\": \"slasher_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"slashableBalanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"slasher\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"staticDelegateCall\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"version\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw\",\n \"inputs\": [\n {\n \"name\": \"claimer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"burnedShares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"mintedShares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawalShares\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawalSharesOf\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawals\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawalsOf\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"l1Registry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"vaultFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operatorVaultOptInService\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operatorL1OptInService\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegatorFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"entityType\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OnSlash\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"indexed\": true,\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"captureTimestamp\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetHook\",\n \"inputs\": [\n {\n \"name\": \"hook\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetL1Limit\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"indexed\": true,\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetMaxL1Limit\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"indexed\": true,\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetOperatorL1Shares\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"indexed\": true,\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__AlreadySet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__InsufficientHookGas\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__NotAuthorizedMiddleware\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__NotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__NotL1\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__NotSlasher\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__NotVault\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BaseDelegator__ZeroAddress\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CheckpointUnorderedInsertion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1RestakeDelegator__DuplicateRoleHolder\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1RestakeDelegator__ExceedsMaxL1Limit\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1RestakeDelegator__MaxL1LimitNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1RestakeDelegator__MissingRoleHolders\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"L1RestakeDelegator__ZeroAddressRoleHolder\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"Vault__NotSlasher\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FACTORY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"HOOK_GAS_LIMIT\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"HOOK_RESERVE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"HOOK_SET_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"L1_LIMIT_SET_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"L1_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATOR_L1_OPT_IN_SERVICE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATOR_L1_SHARES_SET_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATOR_VAULT_OPT_IN_SERVICE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"TYPE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VAULT_FACTORY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hook\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"l1Limit\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"l1LimitAt\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"maxL1Limit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"onSlash\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"captureTimestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorL1Shares\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorL1SharesAt\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setHook\",\n \"inputs\": [\n {\n \"name\": \"hook_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setL1Limit\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMaxL1Limit\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperatorL1Shares\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"stake\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"stakeAt\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hints\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalOperatorL1Shares\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalOperatorL1SharesAt\",\n \"inputs\": [\n {\n \"name\": \"l1\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"vault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes20\",\n \"indexed\": true,\n \"internalType\": \"bytes20\"\n },\n {\n \"name\": \"registrationMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"registrationExpiry\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validatorWeightMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weightUpdateMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RegisteredInitialValidator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes20\",\n \"indexed\": true,\n \"internalType\": \"bytes20\"\n },\n {\n \"name\": \"subnetID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SecurityModuleWeightUpdated\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldWeight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"newWeight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"maxWeight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetUpSecurityModule\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"maxWeight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__CannotRemoveModuleWithAssignedValidators\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"remainingValidators\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__CannotRemoveModuleWithWeight\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InconsistentNonce\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InitialSecurityModuleMaxWeightLowerThanTotalWeight\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialMaxWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"totalWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InitialSecurityModuleRequiredForMigration\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InvalidNonce\",\n \"inputs\": [\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InvalidValidatorStatus\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ValidatorStatus\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InvalidValidatorWeight\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__InvalidWarpMessage\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__MigratedNodeIDNotFound\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__MigratedValidatorsRequired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__MigratedValidatorsTotalWeightMismatch\",\n \"inputs\": [\n {\n \"name\": \"migratedValidatorsTotalWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"currentL1TotalWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__NewWeightIsZero\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__NoPendingWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__PendingWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__SecurityModuleMaxWeightExceeded\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"maxWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__SecurityModuleNewMaxWeightLowerThanCurrentWeight\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newMaxWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"currentWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__SecurityModuleNotRegistered\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__VMValidatorSetNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__ValidatorAlreadyMigrated\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__ValidatorNotBelongingToSecurityModule\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"BalancerValidatorManager__ZeroValidatorManagerAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"EnumerableMapNonexistentKey\",\n \"inputs\": [\n {\n \"name\": \"key\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidBLSKeyLength\",\n \"inputs\": [\n {\n \"name\": \"length\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidChurnPeriodLength\",\n \"inputs\": [\n {\n \"name\": \"churnPeriodLength\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidConversionID\",\n \"inputs\": [\n {\n \"name\": \"encodedConversionID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"expectedConversionID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitializationStatus\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMaximumChurnPercentage\",\n \"inputs\": [\n {\n \"name\": \"maximumChurnPercentage\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNodeID\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": [\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPChainOwnerAddresses\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPChainOwnerThreshold\",\n \"inputs\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"addressesLength\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTotalWeight\",\n \"inputs\": [\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidationID\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorManagerAddress\",\n \"inputs\": [\n {\n \"name\": \"validatorManagerAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorManagerBlockchainID\",\n \"inputs\": [\n {\n \"name\": \"blockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorStatus\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ValidatorStatus\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpMessage\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpOriginSenderAddress\",\n \"inputs\": [\n {\n \"name\": \"senderAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpSourceChainID\",\n \"inputs\": [\n {\n \"name\": \"sourceChainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MaxChurnRateExceeded\",\n \"inputs\": [\n {\n \"name\": \"churnAmount\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NodeAlreadyRegistered\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedRegistrationStatus\",\n \"inputs\": [\n {\n \"name\": \"validRegistration\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"BALANCER_VALIDATOR_MANAGER_STORAGE_LOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VALIDATOR_MANAGER\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract ValidatorManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getChurnPeriodSeconds\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCurrentChurnPeriod\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"churnPeriod\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ValidatorChurnPeriod\",\n \"components\": [\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"totalWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"churnAmount\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMaximumChurnPercentage\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNodeValidationID\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSecurityModuleWeights\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"maxWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSecurityModules\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"securityModules\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValidator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Validator\",\n \"components\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ValidatorStatus\"\n },\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"startingWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"sentNonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"receivedNonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValidatorSecurityModule\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"settings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct BalancerValidatorManagerSettings\",\n \"components\": [\n {\n \"name\": \"baseSettings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ValidatorManagerSettings\",\n \"components\": [\n {\n \"name\": \"admin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"subnetID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"churnPeriodSeconds\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"maximumChurnPercentage\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ]\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialSecurityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialSecurityModuleMaxWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"migratedValidators\",\n \"type\": \"bytes[]\",\n \"internalType\": \"bytes[]\"\n }\n ]\n },\n {\n \"name\": \"validatorManagerAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initializeValidatorSet\",\n \"inputs\": [\n {\n \"name\": \"conversionData\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ConversionData\",\n \"components\": [\n {\n \"name\": \"subnetID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validatorManagerBlockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validatorManagerAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialValidators\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct InitialValidator[]\",\n \"components\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ]\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"remainingBalanceOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"disableOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"messageID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidatorPendingWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"l1TotalWeight\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"migrateFromV1\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"receivedNonce\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resendRegisterValidatorMessage\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resendValidatorRemovalMessage\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resendValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUpSecurityModule\",\n \"inputs\": [\n {\n \"name\": \"securityModule\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"maxWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"subnetID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferValidatorManagerOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AddEntity\",\n \"inputs\": [\n {\n \"name\": \"entity\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Blacklist\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": true,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Migrate\",\n \"inputs\": [\n {\n \"name\": \"entity\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newVersion\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Whitelist\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"EntityNotExist\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__AlreadyBlacklisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__AlreadyWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__InvalidImplementation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__InvalidVersion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__NotOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__OldVersion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MigratableFactory__VersionBlacklisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"blacklist\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"blacklisted\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"value\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"create\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"delegatorFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"slasherFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"entity_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"entity\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"implementation\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isEntity\",\n \"inputs\": [\n {\n \"name\": \"entity_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lastVersion\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"migrate\",\n \"inputs\": [\n {\n \"name\": \"entity_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newVersion\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalEntities\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"whitelist\",\n \"inputs\": [\n {\n \"name\": \"implementation_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"operatorRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"vaultFactory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"IncreaseNonce\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OptIn\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OptOut\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CheckpointUnorderedInsertion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__AlreadyOptedIn\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__ExpiredSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotOptedIn\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotWhereEntity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotWhereRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotWho\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__OptOutCooldown\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"WHERE_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"WHO_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increaseNonce\",\n \"inputs\": [\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isOptedIn\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isOptedInAt\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"optIn\",\n \"inputs\": [\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"optOut\",\n \"inputs\": [\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"staticDelegateCall\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"whoRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whereRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"IncreaseNonce\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OptIn\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OptOut\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CheckpointUnorderedInsertion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__AlreadyOptedIn\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__ExpiredSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotOptedIn\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotWhereEntity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotWhereRegistered\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__NotWho\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OptInService__OptOutCooldown\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"WHERE_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"WHO_REGISTRY\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increaseNonce\",\n \"inputs\": [\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isOptedIn\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isOptedInAt\",\n \"inputs\": [\n {\n \"name\": \"who\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"hint\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"optIn\",\n \"inputs\": [\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"optOut\",\n \"inputs\": [\n {\n \"name\": \"where\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"staticDelegateCall\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"middleware_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n },\n {\n \"name\": \"uptimeBlockchainID_\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorUptimeComputed\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"indexed\": true,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"uptime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ValidatorUptimeComputed\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"firstEpoch\",\n \"type\": \"uint48\",\n \"indexed\": true,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"uptimeSecondsAdded\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"numberOfEpochs\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpMessage\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpOriginSenderAddress\",\n \"inputs\": [\n {\n \"name\": \"senderAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpSourceChainID\",\n \"inputs\": [\n {\n \"name\": \"sourceChainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UptimeBeforeStart\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"startEpoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"currentEpoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UptimeTracker__NoValidators\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UptimeTracker__OperatorUptimeAlreadySet\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UptimeTracker__ValidatorUptimeNotRecorded\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"validator\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"WARP_MESSENGER\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IWarpMessenger\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"computeOperatorUptimeAt\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"computeValidatorUptime\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLastUptimeCheckpoint\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct LastUptimeCheckpoint\",\n \"components\": [\n {\n \"name\": \"remainingUptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"attributedUptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isOperatorUptimeSet\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"isSet\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidatorUptimeSet\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"isSet\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorUptimePerEpoch\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"uptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"validatorHighestUptime\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"highestUptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"validatorLastUptimeCheckpoint\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"remainingUptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"attributedUptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"validatorUptimePerEpoch\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"uptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"balancerValidatorManagerAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"balancerValidatorManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IBalancerValidatorManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"remainingBalanceOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"disableOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"messageID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Deposit\",\n \"inputs\": [\n {\n \"name\": \"depositor\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"IncreaseLimit\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"IssueDebt\",\n \"inputs\": [\n {\n \"name\": \"issuer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"debtIssued\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RepayDebt\",\n \"inputs\": [\n {\n \"name\": \"issuer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"debtRepaid\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SetLimitIncreaser\",\n \"inputs\": [\n {\n \"name\": \"limitIncreaser\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Withdraw\",\n \"inputs\": [\n {\n \"name\": \"withdrawer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientAllowance\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allowance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidApprover\",\n \"inputs\": [\n {\n \"name\": \"approver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidReceiver\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSender\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSpender\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ExceedsLimit\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientDeposit\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientIssueDebt\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientWithdraw\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotLimitIncreaser\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnsafeCast\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"asset\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"debt\",\n \"inputs\": [\n {\n \"name\": \"issuer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"increaseLimit\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"asset_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialLimit\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"limitIncreaser_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"issueDebt\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"issuerDebt\",\n \"inputs\": [\n {\n \"name\": \"issuer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"issuerRepaidDebt\",\n \"inputs\": [\n {\n \"name\": \"issuer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"limit\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"limitIncreaser\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"recipientDebt\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"recipientRepaidDebt\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"repaidDebt\",\n \"inputs\": [\n {\n \"name\": \"issuer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setLimitIncreaser\",\n \"inputs\": [\n {\n \"name\": \"limitIncreaser_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalDebt\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalRepaidDebt\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdraw\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"defaultAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialSupply\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"inputs\": [\n {\n \"name\": \"length\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ECDSAInvalidSignatureS\",\n \"inputs\": [\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientAllowance\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allowance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidApprover\",\n \"inputs\": [\n {\n \"name\": \"approver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidReceiver\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSender\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSpender\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC2612ExpiredSignature\",\n \"inputs\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC2612InvalidSigner\",\n \"inputs\": [\n {\n \"name\": \"signer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAccountNonce\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"currentNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DOMAIN_SEPARATOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MINTER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addMinter\",\n \"inputs\": [\n {\n \"name\": \"minter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"permit\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeMinter\",\n \"inputs\": [\n {\n \"name\": \"minter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"event\",\n \"name\": \"SendWarpMessage\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"messageID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"message\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"function\",\n \"name\": \"getBlockchainID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"blockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVerifiedWarpBlockHash\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"warpBlockHash\",\n \"type\": \"tuple\",\n \"internalType\": \"struct WarpBlockHash\",\n \"components\": [\n {\n \"name\": \"sourceChainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"blockHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"valid\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVerifiedWarpMessage\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"message\",\n \"type\": \"tuple\",\n \"internalType\": \"struct WarpMessage\",\n \"components\": [\n {\n \"name\": \"sourceChainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"originSenderAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payload\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"valid\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sendWarpMessage\",\n \"inputs\": [\n {\n \"name\": \"payload\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"messageID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"init\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ICMInitializable\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes20\",\n \"indexed\": true,\n \"internalType\": \"bytes20\"\n },\n {\n \"name\": \"registrationMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"registrationExpiry\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validatorWeightMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weightUpdateMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RegisteredInitialValidator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes20\",\n \"indexed\": true,\n \"internalType\": \"bytes20\"\n },\n {\n \"name\": \"subnetID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidBLSKeyLength\",\n \"inputs\": [\n {\n \"name\": \"length\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidChurnPeriodLength\",\n \"inputs\": [\n {\n \"name\": \"churnPeriodLength\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidConversionID\",\n \"inputs\": [\n {\n \"name\": \"encodedConversionID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"expectedConversionID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitializationStatus\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMaximumChurnPercentage\",\n \"inputs\": [\n {\n \"name\": \"maximumChurnPercentage\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNodeID\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": [\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPChainOwnerAddresses\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPChainOwnerThreshold\",\n \"inputs\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"addressesLength\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTotalWeight\",\n \"inputs\": [\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidationID\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorManagerAddress\",\n \"inputs\": [\n {\n \"name\": \"validatorManagerAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorManagerBlockchainID\",\n \"inputs\": [\n {\n \"name\": \"blockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorStatus\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ValidatorStatus\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpMessage\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpOriginSenderAddress\",\n \"inputs\": [\n {\n \"name\": \"senderAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpSourceChainID\",\n \"inputs\": [\n {\n \"name\": \"sourceChainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MaxChurnRateExceeded\",\n \"inputs\": [\n {\n \"name\": \"churnAmount\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NodeAlreadyRegistered\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedRegistrationStatus\",\n \"inputs\": [\n {\n \"name\": \"validRegistration\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"BLS_PUBLIC_KEY_LENGTH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAXIMUM_CHURN_PERIOD_LENGTH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"NODE_ID_LENGTH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"P_CHAIN_BLOCKCHAIN_ID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"REGISTRATION_EXPIRY_LENGTH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VALIDATOR_MANAGER_STORAGE_LOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"WARP_MESSENGER\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IWarpMessenger\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getChurnPeriodSeconds\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getChurnTracker\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ValidatorChurnPeriod\",\n \"components\": [\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"initialWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"totalWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"churnAmount\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNodeValidationID\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValidator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Validator\",\n \"components\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ValidatorStatus\"\n },\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"startingWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"sentNonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"receivedNonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"settings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ValidatorManagerSettings\",\n \"components\": [\n {\n \"name\": \"admin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"subnetID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"churnPeriodSeconds\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"maximumChurnPercentage\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initializeValidatorSet\",\n \"inputs\": [\n {\n \"name\": \"conversionData\",\n \"type\": \"tuple\",\n \"internalType\": \"struct ConversionData\",\n \"components\": [\n {\n \"name\": \"subnetID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validatorManagerBlockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validatorManagerAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialValidators\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct InitialValidator[]\",\n \"components\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ]\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"remainingBalanceOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"disableOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorWeightUpdate\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidatorSetInitialized\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"l1TotalWeight\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"migrateFromV1\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"receivedNonce\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resendRegisterValidatorMessage\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resendValidatorRemovalMessage\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"subnetID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AdminRoleAssigned\",\n \"inputs\": [\n {\n \"name\": \"newAdmin\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CuratorFeeClaimed\",\n \"inputs\": [\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CuratorFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorFeeClaimed\",\n \"inputs\": [\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeClaimed\",\n \"inputs\": [\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolOwnerUpdated\",\n \"inputs\": [\n {\n \"name\": \"newProtocolOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardsAmountSet\",\n \"inputs\": [\n {\n \"name\": \"startEpoch\",\n \"type\": \"uint48\",\n \"indexed\": true,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"numberOfEpochs\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"rewardsAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardsBipsUpdated\",\n \"inputs\": [\n {\n \"name\": \"collateralClassId\",\n \"type\": \"uint96\",\n \"indexed\": true,\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"rewardsBips\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardsClaimed\",\n \"inputs\": [\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardsDistributed\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"indexed\": true,\n \"internalType\": \"uint48\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardsDistributorRoleAssigned\",\n \"inputs\": [\n {\n \"name\": \"rewardsDistributor\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardsManagerRoleAssigned\",\n \"inputs\": [\n {\n \"name\": \"rewardsManager\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UndistributedRewardsClaimed\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"indexed\": true,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ZeroRewardsClaim\",\n \"inputs\": [\n {\n \"name\": \"claimer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"lastEpoch\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"claimType\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyClaimedForLatestEpoch\",\n \"inputs\": [\n {\n \"name\": \"staker\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AlreadyCompleted\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassBipsExceed10000\",\n \"inputs\": [\n {\n \"name\": \"totalBp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassBipsNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralClassNotFound\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"DistributionAlreadyStarted\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"DistributionNotComplete\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EpochNotFinished\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EpochNotFunded\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EpochStillClaimable\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"FeeConfigurationExceeds10000\",\n \"inputs\": [\n {\n \"name\": \"totalBp\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"FeePercentageTooHigh\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"FundingWindowClosed\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAdmin\",\n \"inputs\": [\n {\n \"name\": \"admin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFee\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidL1Middleware\",\n \"inputs\": [\n {\n \"name\": \"middleware\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMinUptime\",\n \"inputs\": [\n {\n \"name\": \"minUptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNumberOfEpochs\",\n \"inputs\": [\n {\n \"name\": \"numberOfEpochs\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidProtocolOwner\",\n \"inputs\": [\n {\n \"name\": \"protocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRecipient\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRewardsAmount\",\n \"inputs\": [\n {\n \"name\": \"rewardsAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRewardsToken\",\n \"inputs\": [\n {\n \"name\": \"rewardsToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShare\",\n \"inputs\": [\n {\n \"name\": \"share\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidUptimeTracker\",\n \"inputs\": [\n {\n \"name\": \"uptimeTracker\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NoRewardsToClaim\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NoRewardsToClaimEpoch\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"lastClaimedEpoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OperatorUptimeNotSet\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RewardsAlreadyDistributed\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"RewardsDistributionTooEarly\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"requiredEpoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TotalFeesExceed10000\",\n \"inputs\": [\n {\n \"name\": \"totalFees\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroVaultStake\",\n \"inputs\": [\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"BASIS_POINTS_DENOMINATOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CLAIM_GRACE_PERIOD_EPOCHS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"DISTRIBUTION_EARLIEST_OFFSET\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUNDING_DEADLINE_OFFSET\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAX_EPOCHS_PER_CLAIM\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"PROTOCOL_OWNER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"REWARDS_DISTRIBUTOR_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"REWARDS_MANAGER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimCuratorFee\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimOperatorFee\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimProtocolFee\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimRewards\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimUndistributedRewards\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"curatorFee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"curatorShares\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"curator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"share\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"distributeRewards\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"batchSize\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"distributionBatches\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"lastProcessedOperator\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"isComplete\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"epochDuration\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"epochRewards\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"epochStatus\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"funded\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"distributionComplete\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getEpochRewards\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"admin_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolOwner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"middleware_\",\n \"type\": \"address\",\n \"internalType\": \"address payable\"\n },\n {\n \"name\": \"uptimeTracker_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolFee_\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"operatorFee_\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"curatorFee_\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"minRequiredUptime_\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lastEpochClaimedCurator\",\n \"inputs\": [\n {\n \"name\": \"curator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lastEpochClaimedOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lastEpochClaimedStaker\",\n \"inputs\": [\n {\n \"name\": \"staker\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"middleware\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract AvalancheL1Middleware\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"middlewareVaultManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract MiddlewareVaultManager\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"minRequiredUptime\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorBeneficiariesSharesPerCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"share\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorFee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"operatorShares\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"share\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolFee\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"protocolRewards\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"callerConfirmation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rewardsBipsPerCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"rewardsShare\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rewardsToken\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMinRequiredUptime\",\n \"inputs\": [\n {\n \"name\": \"uptime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolOwner\",\n \"inputs\": [\n {\n \"name\": \"newProtocolOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRewardsAmountForEpochs\",\n \"inputs\": [\n {\n \"name\": \"startEpoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"numberOfEpochs\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"rewardsAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRewardsBipsForCollateralClass\",\n \"inputs\": [\n {\n \"name\": \"collateralClass\",\n \"type\": \"uint96\",\n \"internalType\": \"uint96\"\n },\n {\n \"name\": \"share\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRewardsDistributorRole\",\n \"inputs\": [\n {\n \"name\": \"newRewardsDistributor\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRewardsManagerRole\",\n \"inputs\": [\n {\n \"name\": \"newRewardsManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateAllFees\",\n \"inputs\": [\n {\n \"name\": \"newProtocolFee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"newOperatorFee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"newCuratorFee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateCuratorFee\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateOperatorFee\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateProtocolFee\",\n \"inputs\": [\n {\n \"name\": \"newFee\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"uptimeTracker\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract UptimeTracker\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"vaultShares\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"share\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n] as const;\n","export default [\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"init\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ICMInitializable\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"BIPS_CONVERSION_FACTOR\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"KITE_STAKING_MANAGER_STORAGE_LOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAXIMUM_DELEGATION_FEE_BIPS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"STAKING_MANAGER_STORAGE_LOCATION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"WARP_MESSENGER\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IWarpMessenger\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"changeDelegatorRewardRecipient\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"changeValidatorRewardRecipient\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimDelegatorRewards\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"includeUptimeProof\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimValidatorRewards\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"includeUptimeProof\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"uptimeMessageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceInitiateDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"includeUptimeProof\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceInitiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"includeUptimeProof\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDelegatorInfo\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Delegator\",\n \"components\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DelegatorStatus\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"startingNonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"endingNonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"lastRewardClaimTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"lastClaimUptimeSeconds\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDelegatorPendingRewards\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"grossReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"validatorFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"netReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDelegatorRewardInfo\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRewardCalculator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRewardVault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStakingConfig\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minimumStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"minimumDelegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maximumStakeMultiplier\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"weightToValueFactor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStakingManagerSettings\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct StakingManagerSettings\",\n \"components\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\",\n \"internalType\": \"contract IValidatorManager\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minimumStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"minimumDelegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maximumStakeMultiplier\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"weightToValueFactor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardCalculator\",\n \"type\": \"address\",\n \"internalType\": \"contract IRewardCalculator\"\n },\n {\n \"name\": \"uptimeBlockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStakingValidator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PoSValidatorInfo\",\n \"components\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"minStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"uptimeSeconds\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"lastRewardClaimTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"lastClaimUptimeSeconds\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValidatorPendingRewards\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"stakingReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"delegationFees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValidatorRewardInfo\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"settings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct StakingManagerSettings\",\n \"components\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\",\n \"internalType\": \"contract IValidatorManager\"\n },\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minimumStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"minimumDelegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maximumStakeMultiplier\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"weightToValueFactor\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardCalculator\",\n \"type\": \"address\",\n \"internalType\": \"contract IRewardCalculator\"\n },\n {\n \"name\": \"uptimeBlockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"admin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"rewardVault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"includeUptimeProof\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"remainingBalanceOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"disableOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"delegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"minStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"includeUptimeProof\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resendUpdateDelegator\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"submitUptimeProof\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateRewardCalculator\",\n \"inputs\": [\n {\n \"name\": \"newRewardCalculator\",\n \"type\": \"address\",\n \"internalType\": \"contract IRewardCalculator\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateRewardVault\",\n \"inputs\": [\n {\n \"name\": \"newRewardVault\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateStakingConfig\",\n \"inputs\": [\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximumStakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minimumStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"minimumDelegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maximumStakeMultiplier\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"valueToWeight\",\n \"inputs\": [\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"weightToValue\",\n \"inputs\": [\n {\n \"name\": \"weight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fees\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CompletedStakingValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DelegationFeesAccrued\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DelegationFeesWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DelegatorRewardClaimed\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DelegatorRewardRecipientChanged\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"delegatorAddress\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"validatorWeight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"delegatorWeight\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"setWeightMessageID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"InitiatedStakingValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationFeeBips\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"minStakeDuration\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardCalculatorUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldCalculator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newCalculator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardDistributionFailed\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"reason\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardVaultUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldVault\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newVault\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingConfigUpdated\",\n \"inputs\": [\n {\n \"name\": \"minimumStakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximumStakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minimumStakeDuration\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"minimumDelegationFeeBips\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maximumStakeMultiplier\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"uint8\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UptimeUpdated\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"uptime\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ValidatorRewardClaimed\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ValidatorRewardRecipientChanged\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"DelegatorIneligibleForRewards\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidDelegationFee\",\n \"inputs\": [\n {\n \"name\": \"delegationFeeBips\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidDelegationID\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidDelegatorStatus\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DelegatorStatus\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMinStakeDuration\",\n \"inputs\": [\n {\n \"name\": \"minStakeDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": [\n {\n \"name\": \"nonce\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRewardRecipient\",\n \"inputs\": [\n {\n \"name\": \"rewardRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidRewardVaultAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidStakeAmount\",\n \"inputs\": [\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidStakeMultiplier\",\n \"inputs\": [\n {\n \"name\": \"maximumStakeMultiplier\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidUptimeBlockchainID\",\n \"inputs\": [\n {\n \"name\": \"uptimeBlockchainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidValidatorStatus\",\n \"inputs\": [\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum ValidatorStatus\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpMessage\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpOriginSenderAddress\",\n \"inputs\": [\n {\n \"name\": \"senderAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidWarpSourceChainID\",\n \"inputs\": [\n {\n \"name\": \"sourceChainID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MaxWeightExceeded\",\n \"inputs\": [\n {\n \"name\": \"newValidatorWeight\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"MinStakeDurationNotPassed\",\n \"inputs\": [\n {\n \"name\": \"endTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NoRewardsToClaim\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RewardClaimFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnauthorizedOwner\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UnexpectedValidationID\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"expectedValidationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ValidatorIneligibleForRewards\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ValidatorNotPoS\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroWeightToValueFactor\",\n \"inputs\": []\n }\n] as const;\n","export default [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"fallback\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"receive\",\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DefaultAdminDelayChangeCanceled\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DefaultAdminDelayChangeScheduled\",\n \"inputs\": [\n {\n \"name\": \"newDelay\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"effectSchedule\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DefaultAdminTransferCanceled\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DefaultAdminTransferScheduled\",\n \"inputs\": [\n {\n \"name\": \"newAdmin\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acceptSchedule\",\n \"type\": \"uint48\",\n \"indexed\": false,\n \"internalType\": \"uint48\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__AccountingMismatchDetected\",\n \"inputs\": [\n {\n \"name\": \"context\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"expected\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRegistrationAborted\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRegistrationCompleted\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRegistrationInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalAdopted\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalCompleted\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeReturned\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalFailed\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__Deposited\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__EpochProcessed\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"withdrawalsFulfilled\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stakeReleased\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestsRemaining\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__EscrowedWithdrawalClaimed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ExitDebtRecorded\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"debtAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalDebt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ExitDebtReduced\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reducedAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"remainingDebt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__Harvested\",\n \"inputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"poolIncrease\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__InFlightExitingUpdated\",\n \"inputs\": [\n {\n \"name\": \"newAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__LiquidityBufferUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__LiquidityPrepared\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"removalsInitiated\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amountExpected\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__MaxDelegatorsPerOperatorUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__MaxOperatorsUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__MaxValidatorsPerOperatorUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__MaximumDelegatorStakeUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__MaximumValidatorStakeUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperationsImplUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldImpl\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newImpl\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorAdded\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allocationBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorAllocationUpdated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeeRecipientUpdated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeesClaimed\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeesForfeited\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorRemoved\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__PendingProtocolFeesClaimed\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ProtocolFeeEscrowed\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPending\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ProtocolFeeRecipientUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ProtocolFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"oldFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRegistrationCompleted\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRegistrationInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRemovalCompleted\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeReturned\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRemovalFailed\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRemovalInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__WithdrawalClaimed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__WithdrawalEscrowed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__WithdrawalRequested\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlBadConfirmation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlEnforcedDefaultAdminDelay\",\n \"inputs\": [\n {\n \"name\": \"schedule\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlEnforcedDefaultAdminRules\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlInvalidDefaultAdmin\",\n \"inputs\": [\n {\n \"name\": \"defaultAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientAllowance\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allowance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"needed\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidApprover\",\n \"inputs\": [\n {\n \"name\": \"approver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidReceiver\",\n \"inputs\": [\n {\n \"name\": \"receiver\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSender\",\n \"inputs\": [\n {\n \"name\": \"sender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC20InvalidSpender\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EnforcedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpectedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n {\n \"name\": \"bits\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__AllocationExceeded\",\n \"inputs\": [\n {\n \"name\": \"total\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ArrayLengthMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegationFeeTooHigh\",\n \"inputs\": [\n {\n \"name\": \"actual\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maxAllowed\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegatorAlreadyPendingRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegatorIncomplete\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegatorNotFound\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__EpochNotEnded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ExceedsOperatorAllocation\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"available\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ExternalValidatorNotFound\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__Insolvent\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"available\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InsufficientBuffer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidEpochDuration\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidFee\",\n \"inputs\": [\n {\n \"name\": \"fee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidFeeRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidImplementation\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidOperatorIndex\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidStakingManager\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__LimitExceeded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__MinStakeDurationMismatch\",\n \"inputs\": [\n {\n \"name\": \"validatorDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"requiredDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NoEligibleStake\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NoEscrowedWithdrawal\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NoFeesToClaim\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NonTransferable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NotDelegatorOperator\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NotOperator\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NotOperatorManager\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorAlreadyExists\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorDebtTooHigh\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"currentDebt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorHasActiveValidators\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorHasDelegators\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorHasUnclaimedFees\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorNotActive\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__QueueFull\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__SlippageExceeded\",\n \"inputs\": [\n {\n \"name\": \"actual\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minExpected\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__StakeExceedsMaximum\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximum\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__StakingManagerCallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__UnauthorizedReceive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ValidatorNotFound\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ValidatorNotOwnedByOperator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ValidatorPendingRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__WithdrawalAlreadyClaimed\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__WithdrawalNotClaimable\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__WithdrawalNotFound\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"name\": \"slot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"OPERATOR_MANAGER_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptDefaultAdminTransfer\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addOperator\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"beginDefaultAdminTransfer\",\n \"inputs\": [\n {\n \"name\": \"newAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelDefaultAdminTransfer\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"changeDefaultAdminDelay\",\n \"inputs\": [\n {\n \"name\": \"newDelay\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimEscrowedWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimOperatorFees\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimPendingProtocolFees\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimWithdrawalFor\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimWithdrawals\",\n \"inputs\": [\n {\n \"name\": \"requestIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimWithdrawalsFor\",\n \"inputs\": [\n {\n \"name\": \"requestIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimableRedeemRequest\",\n \"inputs\": [\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultAdmin\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultAdminDelay\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultAdminDelayIncreaseWait\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deposit\",\n \"inputs\": [\n {\n \"name\": \"minShares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceClaimOperatorFees\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceRemoveDelegator\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceRemoveValidator\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAvailableStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getClaimableWithdrawalStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCurrentEpoch\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getDelegatorInfo\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"info\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IStakingVault.DelegatorInfo\",\n \"components\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isVaultOwnedValidator\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getEpochDuration\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"duration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getExchangeRate\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"rate\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getInFlightExitingAmount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLastEpochProcessed\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLiquidityBufferBips\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"bips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMaxDelegatorsPerOperator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"max\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMaxOperators\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"max\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMaxValidatorsPerOperator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"max\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMaximumDelegatorStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"maximum\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMaximumValidatorStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"maximum\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMinimumStakeDuration\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"duration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperationsImpl\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"impl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorCurrentEpochPendingAmount\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorDelegators\",\n \"inputs\": [\n {\n \"name\": \"operatorAddr\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"delegationIDs\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorExitDebt\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"debt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorFeeBips\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"bips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorInfo\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"info\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IStakingVault.Operator\",\n \"components\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"allocationBips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"activeStake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"accruedFees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorList\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"operators\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorPriorEpochPendingAmount\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOperatorValidators\",\n \"inputs\": [\n {\n \"name\": \"operatorAddr\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validatorIDs\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPendingProtocolFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPendingWithdrawals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolFeeBips\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"bips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolFeeRecipient\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getQueueHead\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStakingManager\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"manager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getStartTime\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"startTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTotalAccruedOperatorFees\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fees\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTotalDelegatedStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTotalExitDebt\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"debt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTotalPooledStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTotalValidatorStake\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"stake\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getValidatorStakeAmount\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getWithdrawalQueueLength\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"length\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getWithdrawalRequest\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"request\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IStakingVault.WithdrawalRequest\",\n \"components\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"stakeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestEpoch\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requestTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fulfilled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getWithdrawalRequestIds\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"requestIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"harvest\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"harvestDelegators\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"harvestValidators\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"_stakingManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_operatorManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_protocolFeeBips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_epochDuration\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_liquidityBufferBips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"_defaultAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_vaultAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_defaultAdminDelay\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"_name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_operationsImpl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isValidatorPendingRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"pending\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isWithdrawalClaimable\",\n \"inputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"claimable\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingDefaultAdmin\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"newAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"schedule\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingDefaultAdminDelay\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"newDelay\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n },\n {\n \"name\": \"schedule\",\n \"type\": \"uint48\",\n \"internalType\": \"uint48\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingRedeemRequest\",\n \"inputs\": [\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"prepareWithdrawals\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"processEpoch\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeOperator\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"requestWithdrawal\",\n \"inputs\": [\n {\n \"name\": \"shares\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"requestId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n {\n \"name\": \"role\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rollbackDefaultAdminDelay\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setLiquidityBufferBips\",\n \"inputs\": [\n {\n \"name\": \"_liquidityBufferBips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMaxDelegatorsPerOperator\",\n \"inputs\": [\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMaxOperators\",\n \"inputs\": [\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMaxValidatorsPerOperator\",\n \"inputs\": [\n {\n \"name\": \"newMax\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMaximumDelegatorStake\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMaximumValidatorStake\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperationsImpl\",\n \"inputs\": [\n {\n \"name\": \"_operationsImpl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperatorFeeBips\",\n \"inputs\": [\n {\n \"name\": \"bips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperatorFeeRecipient\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeBips\",\n \"inputs\": [\n {\n \"name\": \"bips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeRecipient\",\n \"inputs\": [\n {\n \"name\": \"_protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateOperatorAllocations\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"inputs\": [\n {\n \"name\": \"newImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n }\n] as const;\n","export default [\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__AccountingMismatchDetected\",\n \"inputs\": [\n {\n \"name\": \"context\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"expected\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRegistrationAborted\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRegistrationCompleted\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRegistrationInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalAdopted\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalCompleted\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeReturned\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalFailed\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__DelegatorRemovalInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ExitDebtRecorded\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"debtAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalDebt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ExitDebtReduced\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reducedAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"remainingDebt\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__Harvested\",\n \"inputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"poolIncrease\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__InFlightExitingUpdated\",\n \"inputs\": [\n {\n \"name\": \"newAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__LiquidityPrepared\",\n \"inputs\": [\n {\n \"name\": \"epoch\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"removalsInitiated\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amountExpected\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorAdded\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allocationBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorAllocationUpdated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newBips\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeeRecipientUpdated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"oldRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newRecipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeesClaimed\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorFeesForfeited\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__OperatorRemoved\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ProtocolFeeEscrowed\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalPending\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRegistrationCompleted\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRegistrationInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRemovalCompleted\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"stakeReturned\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewards\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRemovalFailed\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"StakingVault__ValidatorRemovalInitiated\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"neededRole\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__AllocationExceeded\",\n \"inputs\": [\n {\n \"name\": \"total\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ArrayLengthMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegationFeeTooHigh\",\n \"inputs\": [\n {\n \"name\": \"actual\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"maxAllowed\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegatorAlreadyPendingRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegatorIncomplete\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__DelegatorNotFound\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ExceedsOperatorAllocation\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"available\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ExternalValidatorNotFound\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InsufficientBuffer\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidFeeRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__InvalidOperatorIndex\",\n \"inputs\": [\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__LimitExceeded\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__MinStakeDurationMismatch\",\n \"inputs\": [\n {\n \"name\": \"validatorDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"requiredDuration\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NoEligibleStake\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NoFeesToClaim\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NotDelegatorOperator\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NotOperator\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__NotOperatorManager\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorAlreadyExists\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorDebtTooHigh\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"currentDebt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorHasActiveValidators\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorHasDelegators\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorHasUnclaimedFees\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__OperatorNotActive\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__StakeExceedsMaximum\",\n \"inputs\": [\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maximum\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__StakingManagerCallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ValidatorNotFound\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ValidatorNotOwnedByOperator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ValidatorPendingRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StakingVault__ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"function\",\n \"name\": \"addOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"allocationBips\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimOperatorFees\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"uptimeMessageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"completeValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"messageIndex\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceClaimOperatorFees\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceRemoveDelegator\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"forceRemoveValidator\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"harvest\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"harvestDelegators\",\n \"inputs\": [\n {\n \"name\": \"operatorIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"batchSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"harvestValidators\",\n \"inputs\": [\n {\n \"name\": \"operatorIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"start\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"batchSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"totalRewards\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateDelegatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateDelegatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"delegationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRegistration\",\n \"inputs\": [\n {\n \"name\": \"nodeID\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"blsPublicKey\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"remainingBalanceOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"disableOwner\",\n \"type\": \"tuple\",\n \"internalType\": \"struct PChainOwner\",\n \"components\": [\n {\n \"name\": \"threshold\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"addresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ]\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initiateValidatorRemoval\",\n \"inputs\": [\n {\n \"name\": \"validationID\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"prepareWithdrawals\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeOperator\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperatorFeeRecipient\",\n \"inputs\": [\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateOperatorAllocations\",\n \"inputs\": [\n {\n \"name\": \"operators\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"newBips\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n] as const;\n","import L1Registry from './L1Registry';\nimport OperatorRegistry from './OperatorRegistry';\nimport VaultManager from './VaultManager';\nimport L1Middleware from './L1Middleware';\nimport VaultTokenized from './VaultTokenized';\nimport L1RestakeDelegator from './L1RestakeDelegator';\nimport BalancerValidatorManager from './BalancerValidatorManager';\nimport VaultFactory from './VaultFactory';\nimport OperatorVaultOptInService from './OperatorVaultOptInService';\nimport OperatorL1OptInService from './OperatorL1OptInService';\nimport UptimeTracker from './UptimeTracker';\nimport PoASecurityModule from './PoASecurityModule';\nimport DefaultCollateral from './DefaultCollateral';\nimport ERC20 from './ERC20';\nimport IWarpMessenger from './IWarpMessenger';\nimport ValidatorManager from './ValidatorManager';\nimport AccessControl from './AccessControl';\nimport RewardsNativeToken from './RewardsNativeToken';\nimport Ownable from './Ownable';\nimport KiteStakingManager from './KiteStakingManager';\nimport StakingVault from './StakingVault';\nimport StakingVaultOperations from './StakingVaultOperations';\n\nimport { Abi } from 'viem';\n\ntype ErrorItem = Extract<Abi[number], { type: 'error' }>;\ntype ExtractErrors<T extends Abi> = Extract<T[number], { type: 'error' }>;\n\nexport function withErrors<T extends Abi, O extends Abi[]>(base: T, ...others: [...O]): [...T, ...ExtractErrors<O[number]>[]] {\n const errors = others.flatMap(abi => abi.filter((item): item is ErrorItem => item.type === 'error'));\n return [...base, ...errors] as [...T, ...ExtractErrors<O[number]>[]];\n}\n\nexport const SuzakuABI = {\n L1Registry,\n OperatorRegistry,\n VaultManager,\n L1Middleware: withErrors(L1Middleware, L1Registry, OperatorRegistry, VaultManager, BalancerValidatorManager, ValidatorManager),\n VaultTokenized,\n L1RestakeDelegator,\n BalancerValidatorManager,\n VaultFactory,\n OperatorVaultOptInService,\n OperatorL1OptInService,\n UptimeTracker,\n PoASecurityModule,\n DefaultCollateral,\n ERC20,\n IWarpMessenger,\n ValidatorManager,\n AccessControl,\n RewardsNativeToken,\n Ownable,\n KiteStakingManager,\n StakingVault: withErrors(StakingVault, StakingVaultOperations, KiteStakingManager, ValidatorManager),\n StakingVaultOperations\n};\n","import { getContract, GetContractReturnType, Address, parseEventLogs, Hex, encodeFunctionData, Abi, getAddress, ContractFunctionName, ContractFunctionArgs, ContractFunctionReturnType, ContractFunctionExecutionError } from 'viem';\nimport { SuzakuABI } from '../abis';\nimport { ExtendedClient } from '../client';\nimport { logger } from './logger';\nimport { bigintReplacer, bytes32ToAddress } from './utils';\nimport { color } from './safeColors';\nimport { handleTransactionStrategy } from './safeUtils';\nimport AllSelectors from '../abis/abi-selectors.json';\nimport AhoCorasick from 'modern-ahocorasick'\nimport { isCastMode, logCastCall, logCastSend } from './castUtils';\n\nexport { setCastMode, isCastMode } from './castUtils';\n\n// Define the type for the Suzaku ABI\nexport type SuzakuABINames = keyof typeof SuzakuABI;\nexport type TSuzakuABI = { [K in SuzakuABINames]: typeof SuzakuABI[K] };\n\n// Utility type to make 'account' optional in write function options\n// Also makes 'args' optional when the function has no input parameters\ntype MakeAccountOptionalInWrite<T> = T extends { write: infer W }\n ? Omit<T, 'write'> & {\n write: {\n [K in keyof W]: W[K] extends (args: infer A, options: infer O) => infer R\n ? A extends O\n ? (options?: Omit<O, 'account'> & { account?: O extends { account: infer Acc } ? Acc : never }) => R\n : (args: A, options?: Omit<O, 'account'> & { account?: O extends { account: infer Acc } ? Acc : never }) => R\n : W[K]\n }\n }\n : T;\n\n// Define the type for the contract instances\nexport type SuzakuContracts = { [K in SuzakuABINames]: MakeAccountOptionalInWrite<GetContractReturnType<typeof SuzakuABI[K], ExtendedClient>> & { address: Hex, name: string } };\n\n// Define the type to use the same signature write methods of each contract\nexport type TWriteSuzakuContract = { [K in SuzakuABINames]: SuzakuContracts[K] extends { write: infer W } ? W : never };\n\n// Define the type for the safe contract instances that include a safeWrite method\nexport type SafeSuzakuContract = { [K in SuzakuABINames]: SuzakuContracts[K] & { safeWrite: TWriteSuzakuContract[K], multicall: MulticallFn<K> } };\n\n// Multicall Types\n// Extract read function names from a contract ABI\ntype ReadFunctionNames<T extends SuzakuABINames> = ContractFunctionName<typeof SuzakuABI[T], 'view' | 'pure'>;\n\n// Check if a function has required arguments (args length > 0)\ntype HasArgs<T extends SuzakuABINames, FName extends ReadFunctionNames<T>> =\n ContractFunctionArgs<typeof SuzakuABI[T], 'view' | 'pure', FName> extends readonly [] ? false : true;\n\n// Multicall input item: string for no-args functions, {name, args} for functions with args\ntype MulticallItem<T extends SuzakuABINames, FName extends ReadFunctionNames<T> = ReadFunctionNames<T>> =\n FName extends ReadFunctionNames<T>\n ? HasArgs<T, FName> extends true\n ? { name: FName; args: ContractFunctionArgs<typeof SuzakuABI[T], 'view' | 'pure', FName> }\n : FName | { name: FName }\n : never;\n\n// Extract function name from a MulticallItem\ntype ExtractFunctionName<T extends SuzakuABINames, Item> =\n Item extends string ? Item :\n Item extends { name: infer N } ? N extends ReadFunctionNames<T> ? N : never :\n never;\n\n// Result type for a single multicall item\ntype MulticallItemResult<T extends SuzakuABINames, Item> =\n ExtractFunctionName<T, Item> extends ReadFunctionNames<T>\n ? ContractFunctionReturnType<typeof SuzakuABI[T], 'view' | 'pure', ExtractFunctionName<T, Item>>\n : never;\n\n// Map over array of items to get result types (detailed version with name and result)\ntype MulticallResultsDetailed<T extends SuzakuABINames, Items extends readonly MulticallItem<T>[]> = {\n [K in keyof Items]: {\n name: ExtractFunctionName<T, Items[K]>;\n result: MulticallItemResult<T, Items[K]>;\n }\n};\n\n// Map over array of items to get simple result types (just the return value)\ntype MulticallResultsSimple<T extends SuzakuABINames, Items extends readonly MulticallItem<T>[]> = {\n [K in keyof Items]: MulticallItemResult<T, Items[K]>\n};\n\ninterface MulticallOptions<D extends boolean = false, S extends boolean = true> {\n strict?: S, // If true, throw an error if any of the calls fail\n details?: D, // If true, return the details of each call, otherwise return only the results\n}\n\n// The multicall function signature with conditional return type based on details option\ntype MulticallFn<T extends SuzakuABINames> = {\n <const Items extends readonly MulticallItem<T>[], D extends boolean = false, S extends boolean = true>(\n items: Items,\n options?: MulticallOptions<D, S>\n ): Promise<D extends true ? MulticallResultsDetailed<T, Items> : MulticallResultsSimple<T, Items>>;\n};\n\n// Define a curried function to create a contract instance progressively (generic to keep type inference)\nexport type CurriedContractFn<T extends SuzakuABINames> = (address: Address) => Promise<SafeSuzakuContract[T]>;\nexport type CurriedSuzakuContractMap = { [key in SuzakuABINames]: CurriedContractFn<key> }\n\nfunction handleContractError(error: any, abi: SuzakuABINames) {\n if (error instanceof ContractFunctionExecutionError) {\n logger.exitError([`${abi} ${error.cause}`], 3)\n } else if (error instanceof Error) {\n const eraseToIndex = error.message.indexOf(\"Docs:\")\n if (eraseToIndex === -1) throw error;\n logger.exitError([`${abi} ${error.message.slice(0, eraseToIndex - 1)}`], 3)\n } else if (error instanceof Object) {\n const eraseToIndex = error.message.indexOf(\"Docs:\")\n if (eraseToIndex === -1) throw error;\n logger.exitError([`${abi} ${error.message.slice(0, eraseToIndex - 1)}`], 3)\n } else {\n throw error\n }\n}\n\n// Map a proxy handler on safeWrite methods of the contract to simulate the write operation before executing it\nexport function withSafeWrite<T extends SuzakuABINames>(\n contract: SuzakuContracts[T],\n abi: T,\n client: ExtendedClient,\n confirmations = 1\n): SafeSuzakuContract[T] {\n\n // Introspection\n contract.name = abi;\n\n if ('write' in contract) {\n\n // Proxy handler for write methods to add Safe transaction handling and wait for confirmations\n const writeHandler: ProxyHandler<Record<string, any>> = {\n get(target, prop,) {\n const fn = (target as any)[prop]\n if (typeof fn !== 'function') return fn\n return async (args: any, options: any) => {\n try {\n // ── Cast mode: log the equivalent cast send command and skip execution\n if (isCastMode()) {\n const rpcUrl = client.chain?.rpcUrls?.default?.http?.[0];\n logCastSend(contract.name, contract.address, SuzakuABI[abi] as any, prop as string, Array.isArray(args) ? args : args != null ? [args] : [], rpcUrl, options);\n return undefined;\n }\n let hash: Hex;\n // If a safe smart account is connected, use it to send the transaction\n if (\"safe\" in client && client.safe != undefined) {\n const transaction = {\n to: contract.address,\n data: encodeFunctionData({\n abi: SuzakuABI[abi] as Abi,\n functionName: prop as string,\n args\n }),\n chain: null,\n account: client.account!,\n ...options,\n value: options?.value ? options.value : '0',\n }\n\n const selection = await handleTransactionStrategy(transaction, client.safe, SuzakuABI[abi] as Abi, client.account!.address as Hex)\n switch (selection.action) {\n case 'new':\n logger.debug(`Sending a new Safe transaction as owner`)\n hash = (await client.safe.send({ transactions: [transaction] })).transactions?.ethereumTxHash as Hex;\n break;\n case 'confirm':\n logger.debug(`Confirming a Safe transaction as owner`)\n hash = (await client.safe.confirm({ safeTxHash: selection.hash! })).transactions?.ethereumTxHash as Hex;\n break;\n case 'propose':\n logger.debug(`Proposing a Safe transaction as delegate`)\n const safeTransaction = await client.safe.protocolKit.createTransaction({\n transactions: [transaction]\n })\n const safeTxHash = await client.safe.protocolKit.getTransactionHash(safeTransaction)\n const signature = await client.safe.protocolKit.signHash(safeTxHash)\n await client.safe.apiKit.proposeTransaction({\n safeAddress: await client.safe.getAddress(),\n safeTransactionData: safeTransaction.data,\n safeTxHash,\n senderAddress: getAddress(client.account!.address),\n senderSignature: signature.data\n })\n hash = selection.hash!;\n break;\n default:// same as skip\n logger.debug(`Skipping a Safe transaction`)\n hash = selection.hash!;\n }\n } else {\n hash = await fn(args, { chain: null, account: client.account!, ...options })\n }\n const sig = `${contract.name}.${prop as string}(${args.join ? args.join(', ') : args})`\n logger.addData('txs', { to: contract.address, invocation: sig, hash, options });\n\n if (!hash) return undefined; // when skipping\n\n const receipt = await client.waitForTransactionReceipt({ hash, confirmations })\n if (receipt.status === 'reverted') throw new Error(`Transaction ${color.red(sig)} (hash: ${hash}) reverted, pls resend the transaction:\\n` + JSON.stringify(receipt.logs, bigintReplacer));\n\n const logs = parseEventLogs({\n abi: SuzakuABI[abi],\n logs: receipt.logs,\n });\n if (logs.length > 0) {\n logger.log(\"\\nLogs emitted during the transaction:\");\n logger.log(logs.map((log: any) => {\n return ` ${color.magenta(log.eventName)}${JSON.stringify(log.args, bigintReplacer)}`;\n }).join('\\n'));\n logger.log(\"\");\n logger.addData('receipt', receipt);\n }\n return hash\n } catch (error: any) {\n handleContractError(error, abi)\n }\n }\n },\n };\n\n (contract as any).write = new Proxy(contract.write as Record<string, any>, writeHandler);\n\n // Proxy handler for safeWrite methods to simulate the write operation before executing it\n const safeWriteHandler: ProxyHandler<Record<string, any>> = {\n get(target, prop,) {\n const fn = (target as any)[prop]\n if (typeof fn !== 'function') return fn\n return async (args: any, options: any) => {\n try {\n // Skip simulation in cast mode — the write handler will log the command\n if (!isCastMode()) {\n const simulateFn = (contract as any).simulate?.[prop]\n if (typeof simulateFn === 'function') {\n // If any safe is connected, use its address to simulate the transaction\n await simulateFn(args, \"safe\" in client && client.safe != undefined ? { ...options, account: await client.safe.getAddress() } : options)\n }\n }\n return await fn(args, options)\n } catch (error: any) {\n handleContractError(error, abi)\n }\n }\n },\n };\n\n (contract as any).safeWrite = new Proxy(contract.write as Record<string, any>, safeWriteHandler);\n }\n\n if ('read' in contract) {\n\n // Proxy handler for read methods to catch and format errors\n const readHandler: ProxyHandler<Record<string, any>> = {\n get(target, prop,) {\n const fn = (target as any)[prop]\n if (typeof fn !== 'function') return fn\n return async (...args: any[]) => {\n try {\n if (isCastMode()) {\n const rpcUrl = client.chain?.rpcUrls?.default?.http?.[0];\n logCastCall(contract.name, contract.address, SuzakuABI[abi] as any, prop as string, args, rpcUrl);\n }\n const result = await fn(...args)\n const functionSignature = `${contract.name}.${prop as string}(${args.join ? args.join(', ') : args})`\n logger.addData('receipt', { functionSignature, result });\n return result\n } catch (error: any) {\n handleContractError(error, abi)\n }\n }\n },\n };\n\n (contract as any).read = new Proxy(contract.read as Record<string, any>, readHandler);\n\n // Multicall implementation for batching read operations\n (contract as any).multicall = async (items: Array<string | { name: string; args?: readonly unknown[] }>, options?: MulticallOptions) => {\n const contracts = items.map((item) => {\n const functionName = typeof item === 'string' ? item : item.name;\n const args = typeof item === 'object' && 'args' in item ? item.args : [];\n return {\n address: contract.address,\n abi: SuzakuABI[abi] as Abi,\n functionName,\n args,\n };\n });\n\n if (isCastMode()) {\n const rpcUrl = client.chain?.rpcUrls?.default?.http?.[0];\n for (const c of contracts) {\n logCastCall(contract.name, c.address, c.abi, c.functionName, c.args as unknown[] ?? [], rpcUrl);\n }\n }\n\n const results = await client.multicall({ contracts: contracts as any });\n\n return results.map((result, index) => {\n const item = items[index];\n const name = typeof item === 'string' ? item : item.name;\n if (result.status === 'failure') {\n if (options?.strict) {\n throw new Error(`Multicall failed for ${name}: ${result.error}`);\n }\n logger.warn(`Multicall failed for ${name}: ${result.error}`);\n }\n return options?.details ? {\n name,\n result: result.status === 'success' ? result.result : undefined,\n args: typeof item === 'object' && 'args' in item ? item.args : [],\n } : result.result;\n });\n };\n\n }\n\n return contract as unknown as SafeSuzakuContract[T];\n}\n\nexport const curriedContract = <T extends SuzakuABINames>(abi: T, client: ExtendedClient, wait = 0, skipAbiValidation: boolean = false): CurriedContractFn<T> =>\n async (address: Address) => {\n if (!skipAbiValidation) {\n // (StakingVault uses delegatecall to forward to operations implementation)\n // Skip ABI validation since functions are forwarded via fallback\n if (abi.includes(\"StakingVault\")) {\n await contractAbiValidation(client, [\"StakingVault\"], address);\n } else {\n await contractAbiValidation(client, [abi], address);\n }\n }\n const contract = getContract({\n abi: SuzakuABI[abi],\n address,\n client,\n }) as SuzakuContracts[T];\n return withSafeWrite(\n contract,\n abi,\n client,\n wait\n )\n };\n\nexport async function contractAbiValidation<T extends SuzakuABINames>(client: ExtendedClient, abis: T[], address: Address): Promise<{ name: T, ratio: number, valid: boolean }[]> {\n // Tolerance for missing selectors 5%\n const TOLERANCE = 0.05;\n // Check for proxy\n const proxyImplementation = await client.getStorageAt({\n address,\n slot: '0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC' // EIP-1967 implementation slot\n });\n if (proxyImplementation !== '0x0000000000000000000000000000000000000000000000000000000000000000') {\n address = bytes32ToAddress(proxyImplementation as `0x${string}`);\n logger.debug(`Detected proxy contract. Using implementation at address ${address} for ABI validation.`);\n }\n\n let contractByteCode = await client.getCode({ address })\n if (!contractByteCode || contractByteCode === '0x') {\n logger.exitError([`No contract found at address ${address} for ABIs ${abis.join(', ')}`], 3);\n return [];\n }\n\n // Check for EIP-1167 minimal proxy\n if (contractByteCode.startsWith('0x363d3d373d3d3d363d73') && contractByteCode.endsWith('5af43d82803e903d91602b57fd5bf3')) {\n const implementationAddress = '0x' + contractByteCode.slice(22, 62);\n logger.debug(`Detected EIP-1167 minimal proxy. Using implementation at address ${implementationAddress} for ABI validation.`);\n contractByteCode = await client.getCode({ address: implementationAddress as Address });\n if (!contractByteCode || contractByteCode === '0x') {\n logger.exitError([`No contract found at address ${address} for ABIs ${abis.join(', ')}`], 3);\n return [];\n }\n }\n\n // Validate ABI by checking that all function selectors are present in the bytecode\n const ACs: [AhoCorasick, number][] = abis.map((abi) => {\n const selectors = (AllSelectors as Record<string, string[]>)[abi];\n if (!selectors) {\n logger.warn(`No selectors found for ABI ${abi}, skipping validation`);\n return [new AhoCorasick([]), 0];\n }\n return [new AhoCorasick(selectors), Object.keys(selectors).length];\n });// Use Aho-Corasick algorithm for multi-pattern search (perf)\n\n const missingRatio = ACs.map(([ac, selectorCount]) => {\n const matches = new Set(ac.search(contractByteCode).map(m => m[1][0])); // get only the matched selectors\n // Validation\n const missingCount = selectorCount - matches.size;\n return [missingCount, missingCount / selectorCount, matches] as [number, number, Set<string>];\n })\n\n const result = missingRatio.reduce((acc, [missingCount, ratio, matches], i) => {\n if (ratio > 0) {\n const selectors = (AllSelectors as Record<string, string[]>)[abis[i]];\n logger.debug(`ABI validation for contract ${abis[i]} at address ${address}: ${matches.size} selectors matched, ${missingCount} missing (${(ratio * 100).toFixed(2)}% missing)`);\n if (selectors) {\n logger.debug(`Missing selectors: ${selectors.filter((s: string) => !matches.has(s)).join(', ')}`);\n }\n }\n return [...acc, { name: abis[i], ratio, valid: ratio < TOLERANCE }]\n }, [] as { name: T, ratio: number, valid: boolean }[])\n\n if (result.every(r => !r.valid)) {\n logger.exitError([`The contract at address ${address} does not match the expected ABI for ${abis.join(', ')} contract.`], 3)\n }\n return result;\n}\n","import { SafeClient } from \"@safe-global/sdk-starter-kit\";\nimport { Abi, decodeFunctionData, Hex } from \"viem\";\nimport { logger } from \"./logger\";\n\ninterface SelectedTx {\n safeTxHash: Hex;\n txNonce: number;\n callSignature: string;\n signed: boolean;\n partial: boolean;\n}\n\ninterface TransactionStrategyResponse {\n hash?: Hex;\n nonce?: number;\n action: 'confirm' | 'skip' | 'new' | 'propose';\n}\n\n/**\n * Safe transaction management strategy (ledger support integrated):\n * 1. Search for similar pending transactions in the Safe.\n * 2. Exact match:\n * - If already signed by the user: Ignore the transaction (Skip).\n * - If not signed: Automatically confirm the existing transaction.\n * 3. Partial match (same function, different arguments):\n * - Display an interactive menu.\n * - Options: Confirm an existing transaction, Create a new one, or Skip all.\n * 4. No match: Create a new transaction.\n * 5. Proposal: Create a new proposal if the client is not an owner (If you're not a proposer, It will result as an error).\n */\nexport async function handleTransactionStrategy(\n transaction: { to: Hex, data: Hex, value: string | number },\n client: SafeClient,\n abi: Abi,\n clientAddress: Hex): Promise<TransactionStrategyResponse> {\n clientAddress = clientAddress.toLowerCase() as Hex\n const [safeAddress, nonce] = await Promise.all([client.getAddress(), client.getNonce()]);\n const pendingTxs = await client.apiKit.getPendingTransactions(safeAddress, { currentNonce: nonce })\n\n // Determine if the client is an owner or a proposer (a delegate)\n const owners = (await client.getOwners()).map((o) => o.toLowerCase())\n const delegates = (await client.apiKit.getSafeDelegates({ safeAddress })).results.map((d) => d.delegate.toLowerCase())\n const newOrProposal = owners.includes(clientAddress) ? 'new' : 'propose'\n\n if (newOrProposal === 'propose' && !delegates.includes(clientAddress)) {\n logger.exitError(['You are neither an owner or a delegate of this Safe'])\n }\n\n const selections = pendingTxs.results.reduce((acc, tx) => {\n // filter similar method calls\n if (tx.to === transaction.to && tx.data?.startsWith(transaction.data?.slice(0, 10))) {\n\n const data = decodeFunctionData({\n abi,\n data: tx.data as Hex\n });\n\n const alreadyConfirmed = tx.confirmations?.find((conf) => conf.owner === clientAddress);\n\n acc.push({\n safeTxHash: tx.safeTxHash as Hex,\n callSignature: `${data.functionName}(${data.args?.join(', ')})`,\n signed: alreadyConfirmed ? true : false,\n partial: !(tx.data === transaction.data && tx.value === transaction.value),\n txNonce: Number(tx.nonce)\n });\n\n }\n return acc;\n\n }, [] as SelectedTx[]);\n\n // Check for exact match\n const exactMatch = selections.find(s => !s.partial);\n if (exactMatch) {\n if (exactMatch.signed) {\n logger.log(`Transaction ${exactMatch.safeTxHash} matches exactly and is already confirmed. Skipping.`);\n return { action: 'skip', hash: exactMatch.safeTxHash };\n }\n logger.log(`Transaction ${exactMatch.safeTxHash} matches exactly. ${newOrProposal === 'propose' ? 'Already proposed.' : 'Confirming.'}`);\n return { hash: exactMatch.safeTxHash, action: newOrProposal === 'propose' ? 'skip' : 'confirm' };\n }\n\n // Prompt a message which summarizes the pending transactions and asks the user to choose between available actions: 'confirm' | 'skip' | 'new'.\n if (selections.length > 0) {\n let promptMessage = `Similar pending transactions found in the Safe:\\n`;\n selections.forEach((sel, index) => {\n promptMessage += `[${index + 1}] ${sel.safeTxHash}:\\n ${sel.callSignature} - ${sel.signed ? 'signed' : 'unsigned'} - similar\\n`;\n });\n promptMessage += `\\nChoose an action:\\n`;\n selections.forEach((sel, index) => {\n if (!sel.signed) {\n promptMessage += ` [${index + 1}] Confirm transaction ${sel.safeTxHash}\\n`;\n }\n });\n promptMessage += ` [s] Skip all pending transactions\\n [n] Create a new transaction\\nYour choice: `;\n\n // Loop 3 times until valid response\n let retryCount = 0;\n while (retryCount < 3) {\n const answer = await logger.prompt(promptMessage);\n\n if (answer === 's') {\n return { action: 'skip' };\n } else if (answer === 'n') {\n return { action: newOrProposal };\n } else {\n const index = parseInt(answer) - 1;\n if (index >= 0 && index < selections.length && !selections[index].signed) {\n return { hash: selections[index].safeTxHash, action: 'confirm' };\n }\n }\n logger.log(`Invalid choice, please try again.`);\n retryCount++;\n }\n logger.exitError(['Retry count exceeded'])\n }\n return { action: newOrProposal };\n}\n","{\n \"L1Middleware\": [\n \"96f50b2d\",\n \"f7d71ace\",\n \"a217fddf\",\n \"a70b9f0c\",\n \"2b84d6b4\",\n \"af8069\",\n \"642d5a23\",\n \"83ce0322\",\n \"42cc1798\",\n \"ba14c58c\",\n \"be8cf334\",\n \"22207cc7\",\n \"ddaa26ad\",\n \"7ff0d8e5\",\n \"9f419125\",\n \"21e81d55\",\n \"96523059\",\n \"a5ca7f25\",\n \"b91f3a9f\",\n \"b36248e8\",\n \"79b5c25e\",\n \"e3839ba3\",\n \"a3a65e48\",\n \"9681d940\",\n \"ce161f14\",\n \"75d41274\",\n \"f56408ed\",\n \"dd307b99\",\n \"c84a1242\",\n \"29ad4a8e\",\n \"3bc7daf1\",\n \"d911c632\",\n \"81b1d0be\",\n \"7b426a3b\",\n \"4d86384b\",\n \"b97dd9e2\",\n \"9d94a1e3\",\n \"11369f0f\",\n \"56e1c9e9\",\n \"cbbb83d1\",\n \"f944e5c4\",\n \"52c6f00c\",\n \"99e3d630\",\n \"96f0bcd2\",\n \"72b28569\",\n \"248a9ca3\",\n \"a7949eca\",\n \"b9bbb6f5\",\n \"2f2ff15d\",\n \"91d14854\",\n \"1d34a34f\",\n \"1631d19d\",\n \"3c7b1d37\",\n \"2ee59f2d\",\n \"3b013969\",\n \"a7dab167\",\n \"5f3710d0\",\n \"a73e2333\",\n \"a365bf88\",\n \"8da5cb5b\",\n \"7d7d7e44\",\n \"3682a450\",\n \"fa9952f8\",\n \"cfd0dec9\",\n \"16c58824\",\n \"ac8a584a\",\n \"715018a6\",\n \"36568abe\",\n \"d547741f\",\n \"b543503e\",\n \"3708d256\",\n \"01ffc9a7\",\n \"0e4e7bd5\",\n \"1b834ed3\",\n \"f2fde38b\"\n ],\n \"VaultTokenized\": [\n \"a217fddf\",\n \"6da3e06d\",\n \"1b66c9e1\",\n \"a21a1df9\",\n \"db388715\",\n \"2dd31000\",\n \"1415519b\",\n \"87df0788\",\n \"e4c29f6b\",\n \"59f769a9\",\n \"efb559d6\",\n \"bfefcd7b\",\n \"50f22068\",\n \"9d66201b\",\n \"2d73c69c\",\n \"bd49c35f\",\n \"810da75d\",\n \"dd62ed3e\",\n \"095ea7b3\",\n \"70a08231\",\n \"27810b6e\",\n \"aad3ec96\",\n \"7c04c80a\",\n \"d8dfeb45\",\n \"76671808\",\n \"61a8c8c4\",\n \"313ce567\",\n \"ce9b7930\",\n \"47e7ef24\",\n \"ecf70858\",\n \"48d3b775\",\n \"7953b33b\",\n \"4ff0876a\",\n \"46361671\",\n \"248a9ca3\",\n \"2f2ff15d\",\n \"91d14854\",\n \"bcc1207b\",\n \"50861adc\",\n \"a1b12202\",\n \"794b15b7\",\n \"392e53cd\",\n \"6ec1e3f8\",\n \"a5d03223\",\n \"2abe3048\",\n \"06fdde03\",\n \"73790ab3\",\n \"7278e31c\",\n \"8da5cb5b\",\n \"281f5752\",\n \"1e9a6950\",\n \"715018a6\",\n \"36568abe\",\n \"d547741f\",\n \"83cd9cc3\",\n \"bdc8144b\",\n \"4105a7dd\",\n \"a2861466\",\n \"5346e34f\",\n \"aabc2496\",\n \"c31e8dd7\",\n \"b1344271\",\n \"9f86fd85\",\n \"01ffc9a7\",\n \"95d89b41\",\n \"8b0e9f3f\",\n \"18160ddd\",\n \"a9059cbb\",\n \"23b872dd\",\n \"f2fde38b\",\n \"54fd4d50\",\n \"f3fef3a3\",\n \"afba70ad\",\n \"a3b54172\",\n \"5cc07076\",\n \"f5e7ee0f\"\n ],\n \"DefaultCollateral\": [\n \"dd62ed3e\",\n \"095ea7b3\",\n \"38d52e0f\",\n \"70a08231\",\n \"d449300d\",\n \"313ce567\",\n \"47e7ef24\",\n \"c5758489\",\n \"0aa28714\",\n \"c350a1b5\",\n \"7715be0b\",\n \"9eb2b206\",\n \"5f777607\",\n \"a4d66daf\",\n \"055bee72\",\n \"06fdde03\",\n \"6468c9e1\",\n \"32f84a3b\",\n \"880721e3\",\n \"1f320d77\",\n \"95d89b41\",\n \"fc7b9c18\",\n \"f2dee622\",\n \"18160ddd\",\n \"a9059cbb\",\n \"23b872dd\",\n \"f3fef3a3\"\n ],\n \"ERC20\": [\n \"a217fddf\",\n \"3644e515\",\n \"d5391393\",\n \"983b2d56\",\n \"dd62ed3e\",\n \"095ea7b3\",\n \"70a08231\",\n \"313ce567\",\n \"84b0196e\",\n \"248a9ca3\",\n \"2f2ff15d\",\n \"91d14854\",\n \"40c10f19\",\n \"06fdde03\",\n \"7ecebe00\",\n \"d505accf\",\n \"3092afd5\",\n \"36568abe\",\n \"d547741f\",\n \"01ffc9a7\",\n \"95d89b41\",\n \"18160ddd\",\n \"a9059cbb\",\n \"23b872dd\"\n ],\n \"L1Registry\": [\n \"c415b95c\",\n \"720057c4\",\n \"bffcb7e8\",\n \"c3c5a547\",\n \"4049596a\",\n \"8c36aa1c\",\n \"bb5ed032\",\n \"8da5cb5b\",\n \"03f187ea\",\n \"9ec60b41\",\n \"715018a6\",\n \"a42dce80\",\n \"3a98187b\",\n \"c40e2880\",\n \"92be2ab8\",\n \"d96f3599\",\n \"f2fde38b\",\n \"734d8287\",\n \"476343ee\"\n ],\n \"L1RestakeDelegator\": [\n \"a217fddf\",\n \"2dd31000\",\n \"ff54740f\",\n \"557cab44\",\n \"6679191e\",\n \"c34a9900\",\n \"717b4802\",\n \"c7315864\",\n \"a27963b9\",\n \"128e5d82\",\n \"bb24fe8a\",\n \"103f2907\",\n \"ffa1ad74\",\n \"248a9ca3\",\n \"2f2ff15d\",\n \"91d14854\",\n \"7f5a7c7b\",\n \"439fab91\",\n \"67625f6c\",\n \"ab85242d\",\n \"0216ab97\",\n \"9e85aad7\",\n \"6e2fe35a\",\n \"9f178398\",\n \"36568abe\",\n \"d547741f\",\n \"3dfd3873\",\n \"bcb9a217\",\n \"80c3b146\",\n \"a644120b\",\n \"6b631423\",\n \"3dc50389\",\n \"01ffc9a7\",\n \"25f32932\",\n \"f0b18648\",\n \"fbfa77cf\"\n ],\n \"VaultManager\": [\n \"a217fddf\",\n \"59b2a1a6\",\n \"02ace7fe\",\n \"01ad4aa6\",\n \"248a9ca3\",\n \"651b87b2\",\n \"e2536777\",\n \"74d4e491\",\n \"32a90e1b\",\n \"2f2ff15d\",\n \"91d14854\",\n \"f4f20ac0\",\n \"8da5cb5b\",\n \"88f50eb4\",\n \"ceb68c23\",\n \"715018a6\",\n \"36568abe\",\n \"d547741f\",\n \"ec846213\",\n \"01ffc9a7\",\n \"f2fde38b\",\n \"845256e5\",\n \"527efe9d\"\n ],\n \"OperatorL1OptInService\": [\n \"6d0fae4a\",\n \"c4b5d62c\",\n \"84b0196e\",\n \"8247a97c\",\n \"220d32d4\",\n \"530e1d43\",\n \"9333fbda\",\n \"b1138ad1\",\n \"ced44ba7\",\n \"93f79bc3\",\n \"d4610483\",\n \"9f86fd85\"\n ],\n \"OperatorRegistry\": [\n \"d911c632\",\n \"f8c328d2\",\n \"c3c5a547\",\n \"ca6ff392\",\n \"097c4af1\",\n \"747daec5\",\n \"492ec79f\"\n ],\n \"OperatorVaultOptInService\": [\n \"6d0fae4a\",\n \"c4b5d62c\",\n \"84b0196e\",\n \"8247a97c\",\n \"220d32d4\",\n \"530e1d43\",\n \"9333fbda\",\n \"b1138ad1\",\n \"ced44ba7\",\n \"93f79bc3\",\n \"d4610483\",\n \"9f86fd85\"\n ],\n \"PoASecurityModule\": [\n \"b36248e8\",\n \"a3a65e48\",\n \"9681d940\",\n \"ce161f14\",\n \"9cb7624e\",\n \"b6e6a2ca\",\n \"66109669\",\n \"8da5cb5b\",\n \"715018a6\",\n \"01ffc9a7\",\n \"f2fde38b\"\n ],\n \"UptimeTracker\": [\n \"b771b3bc\",\n \"0a44a3ba\",\n \"0d045fef\",\n \"c9bd9fb1\",\n \"ebb3a92e\",\n \"3e2fcbc5\",\n \"6b4f2030\",\n \"ce581d4e\",\n \"82dc09dd\",\n \"1bde92bf\"\n ],\n \"VaultFactory\": [\n \"b572a966\",\n \"b6caa119\",\n \"6a901913\",\n \"b42ba2a2\",\n \"f9661602\",\n \"14887c58\",\n \"64dfea06\",\n \"58336662\",\n \"8da5cb5b\",\n \"715018a6\",\n \"5cd8b15e\",\n \"f2fde38b\",\n \"9b19251a\"\n ],\n \"BalancerValidatorManager\": [\n \"30ab2017\",\n \"ae9483e0\",\n \"a3a65e48\",\n \"9681d940\",\n \"ce161f14\",\n \"09c1df66\",\n \"c3e57b4c\",\n \"c00a8aec\",\n \"d47a948b\",\n \"f1130733\",\n \"bde87e1c\",\n \"d5f20ff6\",\n \"8605683b\",\n \"751f2150\",\n \"20d91b7a\",\n \"9cb7624e\",\n \"b6e6a2ca\",\n \"66109669\",\n \"9b4d9d13\",\n \"bb0b1938\",\n \"30ffe4d7\",\n \"8da5cb5b\",\n \"715018a6\",\n \"bee0a03f\",\n \"66edba73\",\n \"38bd9f96\",\n \"1dd07092\",\n \"5dc1f535\",\n \"f2fde38b\",\n \"89f9f85b\"\n ],\n \"IWarpMessenger\": [\n \"4213cf78\",\n \"ce7f5929\",\n \"6f825350\",\n \"ee5b48eb\"\n ],\n \"ValidatorManager\": [\n \"8280a25a\",\n \"c974d1b6\",\n \"b6c2fd41\",\n \"63e2ca97\",\n \"732214f8\",\n \"efc008fb\",\n \"bc5fbfec\",\n \"b771b3bc\",\n \"a3a65e48\",\n \"9681d940\",\n \"ce161f14\",\n \"09c1df66\",\n \"4d693536\",\n \"d47a948b\",\n \"d5f20ff6\",\n \"736c87be\",\n \"20d91b7a\",\n \"9cb7624e\",\n \"b6e6a2ca\",\n \"66109669\",\n \"5bd93e88\",\n \"bb0b1938\",\n \"30ffe4d7\",\n \"8da5cb5b\",\n \"715018a6\",\n \"bee0a03f\",\n \"66edba73\",\n \"5dc1f535\",\n \"f2fde38b\"\n ],\n \"AccessControl\": [\n \"a217fddf\",\n \"248a9ca3\",\n \"2f2ff15d\",\n \"91d14854\",\n \"36568abe\",\n \"d547741f\",\n \"01ffc9a7\"\n ],\n \"RewardsNativeToken\": [\n \"cfa498a3\",\n \"9ec8767b\",\n \"a217fddf\",\n \"81c14245\",\n \"dbb142e4\",\n \"2c403020\",\n \"e5cd63b1\",\n \"c34c2289\",\n \"e0dd2457\",\n \"38fe7dbe\",\n \"4c21c309\",\n \"f9738d42\",\n \"ef5cfb8c\",\n \"aff5c6f3\",\n \"ce525a75\",\n \"dca3daae\",\n \"733f44ae\",\n \"66388d03\",\n \"4ff0876a\",\n \"8a485347\",\n \"843fc3bb\",\n \"2bbd5ffd\",\n \"248a9ca3\",\n \"2f2ff15d\",\n \"91d14854\",\n \"12117e77\",\n \"811c9721\",\n \"3c535c5f\",\n \"e45a01c4\",\n \"f4f20ac0\",\n \"67534add\",\n \"54150263\",\n \"19eed0e8\",\n \"89afc0f1\",\n \"bd306d25\",\n \"b0e21e8a\",\n \"29df6479\",\n \"36568abe\",\n \"d547741f\",\n \"c3aada0f\",\n \"d1af0c7d\",\n \"81c5bfa4\",\n \"137fd2db\",\n \"bcad858a\",\n \"efa6d89e\",\n \"a6106528\",\n \"ce3cc807\",\n \"01ffc9a7\",\n \"caa6b9a6\",\n \"0154d074\",\n \"564ca464\",\n \"020624d2\",\n \"ed0a750c\",\n \"deba7c51\"\n ],\n \"Ownable\": [\n \"8da5cb5b\",\n \"715018a6\",\n \"f2fde38b\"\n ],\n \"KiteStakingManager\": [\n \"a9778a7a\",\n \"2a19cb54\",\n \"35455ded\",\n \"151d30d1\",\n \"7a63ad85\",\n \"b771b3bc\",\n \"79ba5097\",\n \"fb8b11dd\",\n \"8ef34c98\",\n \"3b9a7ab1\",\n \"9f4dfcd3\",\n \"4381d65c\",\n \"13409645\",\n \"a3a65e48\",\n \"9681d940\",\n \"27bf60cd\",\n \"16679564\",\n \"53a13338\",\n \"f57bb9f7\",\n \"af1dd66c\",\n \"dfdbd783\",\n \"5f0f4c83\",\n \"e6bf2427\",\n \"caa71874\",\n \"2674874b\",\n \"94053aaf\",\n \"e24b2680\",\n \"2cc6a078\",\n \"243ca19a\",\n \"2aa56638\",\n \"ad93936d\",\n \"b2c1712e\",\n \"8da5cb5b\",\n \"e30c3978\",\n \"715018a6\",\n \"245dafcb\",\n \"25e1c776\",\n \"f2fde38b\",\n \"33bd789a\",\n \"de10f619\",\n \"cbf91f13\",\n \"2e2194d8\",\n \"62065856\"\n ],\n \"StakingVault\": [\n \"a217fddf\",\n \"63cda7f7\",\n \"ad3cb1cc\",\n \"9e341119\",\n \"cefc1429\",\n \"8e0ab961\",\n \"dd62ed3e\",\n \"095ea7b3\",\n \"70a08231\",\n \"634e93da\",\n \"d602b9fd\",\n \"649a5ec7\",\n \"4ddae89f\",\n \"7486caee\",\n \"425e098c\",\n \"f8444436\",\n \"be2837e0\",\n \"48e30f54\",\n \"9b915121\",\n \"88d3e5\",\n \"4381d65c\",\n \"13409645\",\n \"a3a65e48\",\n \"9681d940\",\n \"313ce567\",\n \"84ef8ffc\",\n \"cc8463c8\",\n \"022d63fb\",\n \"b6b55f25\",\n \"a14184de\",\n \"a79b1a05\",\n \"2afa6c34\",\n \"4ffc8b15\",\n \"bd7e996d\",\n \"b97dd9e2\",\n \"53a13338\",\n \"5d3ea8f1\",\n \"e6aa216c\",\n \"f386fc6c\",\n \"8a7ba63d\",\n \"fd530146\",\n \"9e4565ba\",\n \"051790fb\",\n \"12a0d8cd\",\n \"233281d5\",\n \"e105b48b\",\n \"1fcfda5d\",\n \"1adbaf78\",\n \"c7df3053\",\n \"a299e298\",\n \"38fe488a\",\n \"77851541\",\n \"27d9ab5d\",\n \"b2c01030\",\n \"9b99c819\",\n \"f29e3c80\",\n \"d5f839fc\",\n \"c37fc8a8\",\n \"8186c365\",\n \"72c8fc0e\",\n \"88c0d598\",\n \"248a9ca3\",\n \"ee7941d9\",\n \"c828371e\",\n \"50e06083\",\n \"cf3b670b\",\n \"1a64fda9\",\n \"7a573ad5\",\n \"89e37b\",\n \"5b55cbf9\",\n \"c5f24068\",\n \"ae485651\",\n \"550ec678\",\n \"2f2ff15d\",\n \"4641257d\",\n \"6ab10af9\",\n \"a09cb55a\",\n \"91d14854\",\n \"056bfbc7\",\n \"739b4eff\",\n \"2a4da2d3\",\n \"0f2c2431\",\n \"b6e6a2ca\",\n \"88bc451d\",\n \"8c1a90cd\",\n \"06fdde03\",\n \"8da5cb5b\",\n \"8456cb59\",\n \"5c975abb\",\n \"cf6eefb7\",\n \"a1eda53c\",\n \"53dc1dd3\",\n \"ef3c3f03\",\n \"b19c2c70\",\n \"52d1902d\",\n \"ac8a584a\",\n \"36568abe\",\n \"9ee679e8\",\n \"d547741f\",\n \"0aa6220b\",\n \"f1fdfb9a\",\n \"4be2be79\",\n \"9189cb4c\",\n \"66305688\",\n \"eeb81952\",\n \"146db7a7\",\n \"b5efb6fe\",\n \"c448e268\",\n \"b542ad18\",\n \"ad199885\",\n \"e521cb92\",\n \"01ffc9a7\",\n \"95d89b41\",\n \"18160ddd\",\n \"a9059cbb\",\n \"23b872dd\",\n \"3f4ba83a\",\n \"2f33f26a\",\n \"4f1ef286\"\n ],\n \"StakingVaultOperations\": [\n \"8e0ab961\",\n \"7486caee\",\n \"4381d65c\",\n \"13409645\",\n \"a3a65e48\",\n \"9681d940\",\n \"a14184de\",\n \"a79b1a05\",\n \"2afa6c34\",\n \"4641257d\",\n \"6ab10af9\",\n \"a09cb55a\",\n \"739b4eff\",\n \"2a4da2d3\",\n \"0f2c2431\",\n \"b6e6a2ca\",\n \"ef3c3f03\",\n \"ac8a584a\",\n \"b542ad18\",\n \"2f33f26a\"\n ]\n}","import { Address, Abi, AbiFunction, Hex } from 'viem';\nimport { color } from './safeColors';\nimport { logger } from './logger';\n\n// ── Cast mode ────────────────────────────────────────────────────────\nlet _castMode = false;\nexport function setCastMode(enabled: boolean) { _castMode = enabled; }\nexport function isCastMode() { return _castMode; }\n\nexport const CAST_DUMMY_HASH = \"0xca57ca57ca57ca57ca57ca57ca57ca57ca57ca57ca57ca57ca57ca57ca57ca57\" as Hex;\n\nfunction formatCastArg(value: unknown): string {\n if (typeof value === 'bigint') return value.toString();\n if (typeof value === 'boolean') return value.toString();\n if (Array.isArray(value)) return `\"[${value.map(formatCastArg).join(',')}]\"`;\n if (value === undefined || value === null) return '0';\n return String(value);\n}\n\nfunction getSignature(abi: Abi, functionName: string): string {\n const fn = abi.find(\n (item): item is AbiFunction => item.type === 'function' && item.name === functionName,\n );\n if (!fn) return functionName;\n const inputs = fn.inputs.map((i) => i.type).join(',');\n const outputs = fn.outputs?.map((o) => o.type).join(',');\n const sig = `${fn.name}(${inputs})`;\n return outputs ? `${sig}(${outputs})` : sig;\n}\n\nexport interface CastCommandOptions {\n value?: bigint;\n accessList?: { address: string; storageKeys: string[] }[];\n}\n\nexport function formatCastCommand(\n mode: 'call' | 'send',\n address: Address,\n abi: Abi,\n functionName: string,\n args: unknown[] | undefined,\n rpcUrl: string | undefined,\n options?: CastCommandOptions,\n): string {\n const sig = getSignature(abi, functionName);\n const formattedArgs = (args ?? []).map(formatCastArg).join(' ');\n let cmd = `cast ${mode} ${address} \"${sig}\"`;\n if (formattedArgs) cmd += ` ${formattedArgs}`;\n if (options?.value) cmd += ` --value ${options.value}`;\n if (options?.accessList && options.accessList.length > 0) {\n cmd += ` --access-list '${JSON.stringify(options.accessList)}'`;\n }\n if (rpcUrl) cmd += ` --rpc-url ${rpcUrl}`;\n if (mode === 'send') cmd += ` --private-key $PK`;\n return cmd;\n}\n\n/** Log a `cast call` command (read) */\nexport function logCastCall(\n contractName: string,\n address: Address,\n abi: Abi,\n functionName: string,\n args: unknown[] | undefined,\n rpcUrl: string | undefined,\n) {\n const cmd = formatCastCommand('call', address, abi, functionName, args, rpcUrl);\n logger.log(color.dim(`\\n${cmd}\\n`));\n logger.addData('cast', { mode: 'call', contract: contractName, function: functionName, address, args, cmd });\n}\n\n/** Log a `cast send` command (write) */\nexport function logCastSend(\n contractName: string,\n address: Address,\n abi: Abi,\n functionName: string,\n args: unknown[] | undefined,\n rpcUrl: string | undefined,\n options?: CastCommandOptions,\n) {\n const cmd = formatCastCommand('send', address, abi, functionName, args, rpcUrl, options);\n logger.log(color.cyan(`\\n${cmd}\\n`));\n logger.addData('cast', { mode: 'send', contract: contractName, function: functionName, address, args, cmd });\n}\n\n/** Log a `curl` command for a P-Chain signed transaction and return a dummy tx hash. */\nexport function logPChainIssueTx(signedTxBytes: Uint8Array, rpcUrl: string): Hex {\n const signedTxHex = '0x' + Buffer.from(signedTxBytes).toString('hex');\n const endpoint = rpcUrl.replace('C/rpc', 'P');\n const body = JSON.stringify({\n jsonrpc: '2.0',\n id: 1,\n method: 'platform.issueTx',\n params: { tx: signedTxHex, encoding: 'hex' },\n });\n const cmd = `curl -X POST -H \"Content-Type: application/json\" -d '${body}' ${endpoint}`;\n logger.log(color.cyan(`\\n${cmd}\\n`));\n logger.addData('cast', { mode: 'p-chain', function: 'platform.issueTx', cmd });\n return CAST_DUMMY_HASH;\n}\n","import { SuzakuABI } from './abis';\nimport { ExtendedClient } from './client';\nimport { Hex } from 'viem';\nimport { curriedContract, CurriedSuzakuContractMap, SuzakuABINames, TSuzakuABI } from './lib/viemUtils';\nimport dotenv from 'dotenv';\nimport * as os from 'os';\n\n// Load environment variables\ndotenv.config();\n\nexport const confPath = os.homedir() + '/.suzaku-cli'\n\n// Define the configuration interface\nexport interface Config {\n l1Registry: Hex;\n operatorRegistry: Hex;\n opL1OptIn: Hex;\n opVaultOptIn: Hex;\n abis: TSuzakuABI;\n contracts: CurriedSuzakuContractMap;\n client: ExtendedClient;\n}\n\nexport function getConfig(client: ExtendedClient, waitForTxCount = 0, skipAbiValidation: boolean = false): Config {\n\n // Dynamically build the contracts map using the curriedContract function\n const contracts = Object.fromEntries(\n (Object.keys(SuzakuABI) as SuzakuABINames[]).map((name) => [\n name,\n curriedContract(name, client, waitForTxCount, skipAbiValidation),\n ]),\n ) as CurriedSuzakuContractMap;\n\n if (client.network === 'fuji') {\n return {\n l1Registry: (process.env.L1_REGISTRY_FUJI as Hex) || '0xB9826Bbf0deB10cC3924449B93F418db6b16be36',\n operatorRegistry: (process.env.OPERATOR_REGISTRY_FUJI as Hex) || '0x46D45D6be6214F6bd8124187caD1a5302755d7A2',\n opL1OptIn: (process.env.OP_L1_OPT_IN_FUJI as Hex) || '0x0360C1cB32A20D97b358538D9Db71339ce2c9592',\n opVaultOptIn: (process.env.OP_VAULT_OPT_IN_FUJI as Hex) || '0xC30c9f7482B2ED82d0532812285295f8b7453941',\n abis: SuzakuABI,\n contracts,\n client,\n };\n } else if (client.network === 'anvil') {\n return {\n l1Registry: (process.env.L1_REGISTRY as Hex) || '0x0165878A594ca255338adfa4d48449f69242Eb8F',\n operatorRegistry: (process.env.OPERATOR_REGISTRY as Hex) || '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853',\n opL1OptIn: (process.env.OP_L1_OPT_IN as Hex) || '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318',\n opVaultOptIn: (process.env.OP_VAULT_OPT_IN as Hex) || '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853',\n abis: SuzakuABI,\n contracts,\n client,\n };\n } else if (client.network === 'mainnet') {\n return {\n l1Registry: (process.env.L1_REGISTRY_MAINNET as Hex) || '0xaA59b19A7636bf6d821aA124A14eEE6C92746110',\n operatorRegistry: (process.env.OPERATOR_REGISTRY_MAINNET as Hex) || '0xCccb4eC6408bF2c9D057d63DAB01E55BB536936e',\n opL1OptIn: (process.env.OP_L1_OPT_IN_MAINNET as Hex) || '0x48a990A31EC2B994A54f248BFD560954991Fa574',\n opVaultOptIn: (process.env.OP_VAULT_OPT_IN_MAINNET as Hex) || '0xE437b5EFA4c0717Ec15ACED13a82bBd8ce92da47',\n abis: SuzakuABI,\n contracts,\n client,\n };\n } else {\n throw new Error(`Unsupported network: ${client.network}`);\n }\n}\n\n// Constants\nexport const pChainChainID = '11111111111111111111111111111111LpoYY';\n","import { utils, pvm, Context, UnsignedTx, secp256k1, L1Validator, pvmSerial, PChainOwner, networkIDs } from \"@avalabs/avalanchejs\";\nimport { cb58ToHex, getAddresses, NodeId } from \"./utils\";\nimport { ExtendedClient, ExtendedWalletClient } from \"../client\";\n\nimport { Chain, createWalletClient, defineChain, Hex, hexToBytes, http, publicActions, toBytes } from \"viem\";\nimport { collectSignaturesInitializeValidatorSet, packL1ConversionMessage, PackL1ConversionMessageArgs, packWarpIntoAccessList } from \"./warpUtils\";\nimport { SafeSuzakuContract } from \"./viemUtils\";\nimport { isCastMode, logPChainIssueTx } from \"./castUtils\";\nimport { color } from \"./safeColors\";\nimport { pipe, R, Result } from \"@mobily/ts-belt\";\nimport { logger } from './logger';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { avalanche, avalancheFuji } from \"viem/chains\";\nimport { getConfig } from \"../config\";\n\nexport type GetValidatorAtObject = { [nodeId: string]: { publicKey: string, weight: bigint } };\n\nexport interface PChainBaseParams {\n client: ExtendedWalletClient;\n}\n\nexport interface CreateChainParams extends PChainBaseParams {\n chainName: string;\n subnetId: string;\n genesisData: string;\n SubnetEVMId?: string;\n}\n\nexport interface ConvertToL1Params extends PChainBaseParams {\n subnetId: string;\n chainId: string;\n managerAddress: Hex;\n validators: {\n nodeID: string;\n blsPublicKey: string;\n blsProofOfPossession: string;\n weight: number;\n balance: number;\n }[];\n}\n\nexport interface RegisterL1ValidatorParams extends PChainBaseParams {\n blsProofOfPossession: string;\n signedMessage: string;\n initialBalance: bigint;\n}\n\nexport interface RemoveL1ValidatorParams extends PChainBaseParams {\n validationID: string;\n}\n\nexport interface SetValidatorWeightParams extends PChainBaseParams {\n validationID: string;\n message: string;\n}\n\nexport type ExtractWarpMessageFromTxParams = {\n txId: string;\n}\n\ninterface AddressObject {\n threshold: number;\n addresses: string[];\n}\n\ninterface ValidatorSigner {\n publicKey: string;\n proofOfPossession: string;\n}\n\ninterface Validator {\n nodeID: string;\n weight: number;\n balance: number;\n signer: ValidatorSigner;\n remainingBalanceOwner: AddressObject;\n deactivationOwner: AddressObject;\n}\n\nexport type ExtractWarpMessageFromTxResponse = {\n message: Hex;\n justification: Hex;\n subnetId: string;\n signingSubnetId: string;\n networkId: typeof networkIDs.FujiID | typeof networkIDs.MainnetID;\n validators: Validator[];\n chainId: string;\n managerAddress: Hex;\n}\n\ninterface OutputObject {\n addresses: string[];\n amount: number;\n locktime: number;\n threshold: number;\n}\n\ninterface Output {\n collateralID: string;\n fxID: string;\n output: OutputObject;\n}\n\ninterface InputObject {\n amount: number;\n signatureIndices: number[];\n}\n\ninterface Input {\n txID: string;\n outputIndex: number;\n collateralID: string;\n fxID: string;\n input: InputObject;\n}\n\ninterface SubnetAuthorization {\n signatureIndices: number[];\n}\n\ninterface UnsignedConvertTx {\n networkID: number;\n blockchainID: string;\n outputs: Output[];\n inputs: Input[];\n memo: string;\n subnetID: string;\n chainID: string;\n address: string;\n validators: Validator[];\n subnetAuthorization: SubnetAuthorization;\n}\n\ninterface Credential {\n signatures: string[];\n}\n\ninterface Transaction {\n unsignedTx: UnsignedConvertTx;\n credentials: Credential[];\n id: string;\n}\n\ninterface TransactionResult {\n tx: Transaction;\n encoding: string;\n}\n\ninterface ConversionDataResponse {\n result: TransactionResult;\n}\n\ntype InitializeValidatorSetArgs = [{ subnetID: `0x${string}`; validatorManagerBlockchainID: `0x${string}`; validatorManagerAddress: `0x${string}`; initialValidators: readonly { nodeID: `0x${string}`; blsPublicKey: `0x${string}`; weight: bigint; }[]; }, number]\n\nexport function add0x(hex: string) {\n return /^0x/i.test(hex) ? hex : `0x${hex}`;\n}\n\nexport const getRPCEndpoint = (client: ExtendedClient): string => {\n const url = new URL(client.chain!.rpcUrls.default.http[0]);\n return `${url.protocol}//${url.host}`;\n};\n\nexport const getPchainBaseUrl = (client: ExtendedClient): string => {\n const url = new URL(client.network === 'fuji' ? avalancheFuji.rpcUrls.default.http[0] : avalanche.rpcUrls.default.http[0])\n return `${url.protocol}//${url.host}`;\n}\n\n\nexport async function addSigToAllCreds(\n unsignedTx: UnsignedTx,\n client: ExtendedWalletClient,\n cChain = false\n) {\n const unsignedBytes = unsignedTx.toBytes();\n const hash = '0x' + Buffer.from(sha256(unsignedBytes)).toString('hex') as Hex\n // Bypass EIP-193\n let signer: (parameters: { hash: Hex }) => Promise<Hex>;\n if (client.account!.cSign && cChain) {\n signer = client.account!.cSign;\n } else {\n signer = client.account!.sign!;\n }\n\n const signatureV2 = hexToBytes(await signer({ hash }))\n signatureV2[64] = signatureV2[64] - 27\n if (!signatureV2) {\n throw new Error(\"Failed to sign message\");\n }\n for (let i = 0; i < unsignedTx.getCredentials().length; i++) {\n unsignedTx.addSignatureAt(signatureV2, i, 0);\n }\n}\n\nexport async function createSubnet(params: PChainBaseParams): Promise<Hex> {\n const rpcUrl = getPchainBaseUrl(params.client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n\n const { P: pAddress } = params.client.addresses;\n const addressBytes = utils.bech32ToBytes(pAddress);\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pAddress]\n });\n\n const tx = pvm.e.newCreateSubnetTx(\n {\n feeState,\n fromAddressesBytes: [addressBytes],\n utxos,\n subnetOwners: [addressBytes],\n },\n context,\n );\n await addSigToAllCreds(tx, params.client);\n const res = await issueSignedTx(pvmApi, tx)\n const txID = R.getExn(res)\n\n return txID;\n}\n\nexport async function createChain(params: CreateChainParams): Promise<Hex> {\n const rpcUrl = getPchainBaseUrl(params.client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n\n const { P: pAddress } = params.client.addresses;\n const addressBytes = utils.bech32ToBytes(pAddress);\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pAddress]\n });\n logger.log(`Using default EVM VM ID: ${params.SubnetEVMId || \"dkr3SJRCf2QfRUaepreGf2PtfEtpLHuPixeBMNrf1QQBxWLNN\"}`);\n const tx = pvm.e.newCreateChainTx(\n {\n feeState,\n fromAddressesBytes: [addressBytes],\n utxos,\n chainName: params.chainName,\n subnetAuth: [0],\n subnetId: params.subnetId,\n vmId: params.SubnetEVMId || \"dkr3SJRCf2QfRUaepreGf2PtfEtpLHuPixeBMNrf1QQBxWLNN\", // Default to EVM VM ID\n fxIds: [],\n genesisData: JSON.parse(params.genesisData),\n },\n context,\n );\n\n await addSigToAllCreds(tx, params.client);\n const txID = R.getExn(await issueSignedTx(pvmApi, tx))\n\n logger.log('Created chain: ', txID);\n return txID;\n}\n\nexport async function convertToL1(params: ConvertToL1Params): Promise<Hex> {\n const rpcUrl = getPchainBaseUrl(params.client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n\n const { P: pAddress } = params.client.addresses;\n const addressBytes = utils.bech32ToBytes(pAddress);\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pAddress]\n });\n\n const pChainOwner = PChainOwner.fromNative([addressBytes], 1);\n\n const validators: L1Validator[] = params.validators.map(validator => L1Validator.fromNative(\n validator.nodeID,\n BigInt(validator.weight),\n BigInt(validator.balance),\n new pvmSerial.ProofOfPossession(utils.hexToBuffer(validator.blsPublicKey), utils.hexToBuffer(validator.blsProofOfPossession)),\n pChainOwner,\n pChainOwner\n ));\n\n const tx = pvm.e.newConvertSubnetToL1Tx(\n {\n feeState,\n fromAddressesBytes: [utils.bech32ToBytes(pAddress)],\n subnetId: params.subnetId,\n utxos,\n chainId: params.chainId,\n validators,\n subnetAuth: [0],\n address: utils.hexToBuffer(params.managerAddress.replace('0x', '')),\n },\n context,\n );\n\n await addSigToAllCreds(tx, params.client);\n const txID = R.getExn(await issueSignedTx(pvmApi, tx))\n\n return txID;\n}\n\nexport async function registerL1Validator(params: RegisterL1ValidatorParams): Promise<Result<Hex, string>> {\n const rpcUrl = getPchainBaseUrl(params.client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n const { P: pChainAddress } = params.client.addresses;\n\n const addressBytes = utils.bech32ToBytes(pChainAddress);\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pChainAddress]\n });\n\n // Create a new register validator transaction\n const tx = pvm.e.newRegisterL1ValidatorTx({\n balance: params.initialBalance,\n blsSignature: new Uint8Array(Buffer.from(params.blsProofOfPossession.slice(2), 'hex')),\n message: new Uint8Array(Buffer.from(params.signedMessage, 'hex')),\n feeState,\n fromAddressesBytes: [addressBytes],\n utxos,\n }, context);\n\n // Sign the transaction\n await addSigToAllCreds(tx, params.client);\n\n // Issue the signed transaction\n const txID = await issueSignedTx(pvmApi, tx);\n\n return txID;\n}\n\nexport async function removeL1Validator(params: RemoveL1ValidatorParams): Promise<Result<string, string>> {\n const rpcUrl = getPchainBaseUrl(params.client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n\n const { P: pChainAddress } = params.client.addresses;\n const addressBytes = utils.bech32ToBytes(pChainAddress);\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pChainAddress]\n });\n\n // Create a new disable validator transaction\n const tx = pvm.e.newDisableL1ValidatorTx(\n {\n feeState,\n fromAddressesBytes: [addressBytes],\n disableAuth: [0],\n validationId: params.validationID,\n utxos,\n },\n context,\n );\n\n // Sign the transaction\n await addSigToAllCreds(tx, params.client);\n\n // Issue the signed transaction\n const txID = await issueSignedTx(pvmApi, tx);\n\n return txID;\n}\n\ntype ValidatorsResponsePatched = (pvm.GetCurrentValidatorsResponse['validators'][number] & { balance?: number, validationID?: string })[];\n\nexport async function getCurrentValidators(client: ExtendedClient, subnetId: string): Promise<ValidatorsResponsePatched> {\n const rpcUrl = getPchainBaseUrl(client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n // Fetch the L1 validator at the specified index\n const response = await pvmApi.getCurrentValidators({\n subnetID: subnetId\n });\n return response.validators;\n}\n\nexport async function getValidatorsAt(client: ExtendedClient, subnetId: string): Promise<GetValidatorAtObject> {\n const rpcUrl = getPchainBaseUrl(client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const currentHeight = await pvmApi.getHeight();\n // Fetch the L1 validator at the specified index\n const response = await pvmApi.getValidatorsAt({\n subnetID: subnetId,\n height: currentHeight.height,\n });\n\n if (!response.validators) {\n return {};\n }\n\n return response.validators as GetValidatorAtObject;\n}\n\nexport async function validates(client: ExtendedClient, subnetId: string): Promise<string | undefined> {\n const rpcUrl = getPchainBaseUrl(client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n // Fetch the L1 validator at the specified index\n const response = await pvmApi.validates({\n subnetID: subnetId,\n });\n\n if (!response.blockchainIDs || response.blockchainIDs.length === 0) {\n return undefined;\n }\n\n return response.blockchainIDs[0]; // Return the first blockchain ID (usually the only one)\n}\n\nexport async function validatedBy(client: ExtendedClient, blockchainId: string): Promise<string | undefined> {\n const rpcUrl = getPchainBaseUrl(client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n // Fetch the L1 validator at the specified index\n const response = await pvmApi.validatedBy({\n blockchainID: blockchainId,\n });\n\n if (!response.subnetID) {\n return undefined;\n }\n\n return response.subnetID;\n}\n\nexport async function setValidatorWeight(params: SetValidatorWeightParams): Promise<Result<string, string>> {\n const rpcUrl = getPchainBaseUrl(params.client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n const { P: pChainAddress } = params.client.addresses;\n const addressBytes = utils.bech32ToBytes(pChainAddress);\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pChainAddress]\n });\n\n // Create a new set validator weight transaction\n const tx = pvm.e.newSetL1ValidatorWeightTx(\n {\n feeState,\n fromAddressesBytes: [addressBytes],\n message: new Uint8Array(Buffer.from(params.message, 'hex')),\n utxos,\n },\n context,\n );\n\n // Sign the transaction\n await addSigToAllCreds(tx, params.client);\n\n // Issue the signed transaction\n const txID = await issueSignedTx(pvmApi, tx);\n\n return txID;\n}\n\nexport async function increasePChainValidatorBalance(\n client: ExtendedWalletClient,\n amount: number,\n validationId: string\n): Promise<Result<Hex, string>> {\n const rpcUrl = getPchainBaseUrl(client);\n const pvmApi = new pvm.PVMApi(rpcUrl);\n const feeState = await pvmApi.getFeeState();\n const context = await Context.getContextFromURI(rpcUrl);\n\n const { P: pChainAddress } = client.addresses;\n const addressBytes = utils.bech32ToBytes(pChainAddress);\n const nAVAX = BigInt(Math.floor(amount * 1e9)); // Convert AVAX to nAVAX\n\n const { utxos } = await pvmApi.getUTXOs({\n addresses: [pChainAddress]\n });\n\n // Create a new increase balance transaction\n const tx = pvm.e.newIncreaseL1ValidatorBalanceTx(\n {\n feeState,\n fromAddressesBytes: [addressBytes],\n utxos,\n balance: nAVAX, // Convert to nAVAX\n validationId\n },\n context,\n );\n\n // Sign the transaction\n await addSigToAllCreds(tx, client);\n\n // Issue the signed transaction\n const txID = await issueSignedTx(pvmApi, tx);\n\n return txID;\n}\n\n// Wait p chain tx until it is confirmed with a timeout\nexport async function waitPChainTx(txID: string, pvmApi: pvm.PVMApi, pollingInterval: number = 3, retryCount: number = 10) {\n let response = await pvmApi.getTxStatus({ txID });\n let retry = 0;\n while (response.status !== 'Committed' && retry < retryCount) {\n response = await pvmApi.getTxStatus({ txID });\n await new Promise(resolve => setTimeout(resolve, pollingInterval * 1000));\n retry++;\n }\n if (response.status !== 'Committed') {\n throw new Error(`P-Chain transaction ${txID} not committed after ${retryCount} retries`);\n }\n}\n\nexport async function extractWarpMessageFromPChainTx(subnetId: string, txId: string, client: ExtendedClient): Promise<ExtractWarpMessageFromTxResponse> {\n const rpcEndpoint = getPchainBaseUrl(client);\n const networkId = client.network === 'fuji' ? networkIDs.FujiID : networkIDs.MainnetID;\n //Fixme: here we do a direct call instead of using avalanchejs, because we need to get the raw response from the node\n const response = await fetch(rpcEndpoint + \"/ext/bc/P\", {\n method: 'POST',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'platform.getTx',\n params: {\n txID: txId,\n encoding: 'json'\n },\n id: 1\n })\n });\n\n const data = await response.json() as ConversionDataResponse\n\n if (!data?.result?.tx?.unsignedTx?.subnetID || !data?.result?.tx?.unsignedTx?.chainID || !data?.result?.tx?.unsignedTx?.address || !data?.result?.tx?.unsignedTx?.validators) {\n logger.log('txId', txId)\n logger.log('data', data)\n throw new Error(\"Invalid transaction data, are you sure this is a conversion transaction?\");\n }\n\n const conversionArgs: PackL1ConversionMessageArgs = {\n subnetId: data.result.tx.unsignedTx.subnetID,\n managerChainID: data.result.tx.unsignedTx.chainID,\n managerAddress: data.result.tx.unsignedTx.address as Hex,\n validators: data.result.tx.unsignedTx.validators.map((validator) => {\n return {\n nodeID: validator.nodeID,\n nodePOP: validator.signer,\n weight: validator.weight\n }\n })\n };\n\n const [message, justification] = packL1ConversionMessage(conversionArgs, networkId, data.result.tx.unsignedTx.blockchainID);\n return {\n message: utils.bufferToHex(message) as Hex,\n justification: utils.bufferToHex(justification) as Hex,\n subnetId: data.result.tx.unsignedTx.subnetID,\n signingSubnetId: subnetId,\n networkId,\n validators: data.result.tx.unsignedTx.validators,\n chainId: data.result.tx.unsignedTx.chainID,\n managerAddress: data.result.tx.unsignedTx.address as Hex,\n }\n}\n\nexport default interface NodeConfig {\n nodeID: NodeId,\n blsPublicKey: Hex,\n blsProofOfPossession: Hex,\n weight: number,\n balance: number\n}\n\nexport async function convertSubnetToL1(params:\n {\n subnetId: string;\n chainId: string;\n validatorManager: Hex;\n client: ExtendedWalletClient;\n validators: NodeConfig[];\n validatorManagerBlockchainID: string;\n convertTx?: Hex;\n init?: boolean;\n churnPeriodSeconds?: bigint;\n maximumChurnPercentage?: number;\n }) {\n const managerAddress = params.validatorManager;\n const { client, validators } = params;\n // 1) convert to L1\n const convertTx = params.convertTx || await convertToL1({\n client,\n subnetId: params.subnetId,\n chainId: params.validatorManagerBlockchainID,\n managerAddress,\n validators,\n });\n // 2) collect signatures\n\n const signingSubnetId = await validatedBy(client, params.validatorManagerBlockchainID);\n if (!signingSubnetId) {\n throw new Error(\"Could not get signing subnet ID\");\n }\n const signed = await collectSignaturesInitializeValidatorSet({\n network: client.network,\n subnetId: params.subnetId,\n validatorManagerBlockchainID: params.validatorManagerBlockchainID,\n validatorManagerSubnetID: signingSubnetId,\n managerAddress,\n validators,\n });\n\n // 3) pack warp → accessList\n const signedBytes = hexToBytes(`0x${signed}`);\n const accessList = packWarpIntoAccessList(signedBytes);\n\n // 4) call initializeValidatorSet\n // client.chain = chain;\n const args = await getValidatorManagerInitializationArgsFromWarpTx(convertTx, params.subnetId, client);\n\n const config = await getConfig(client as ExtendedClient, 1, true)\n const validatorManager = await config.contracts.ValidatorManager(params.validatorManager)\n const init = {\n admin: client.addresses.C,\n subnetID: args[0].subnetID,\n churnPeriodSeconds: params.churnPeriodSeconds || 10n,\n maximumChurnPercentage: params.maximumChurnPercentage || 20,\n }\n if (params.init) await validatorManager.safeWrite.initialize([init])\n await validatorManager.safeWrite.initializeValidatorSet(args, {\n account: client.account!,\n chain: null,\n accessList\n });\n\n return { txHash: convertTx };\n\n}\n\nexport async function getValidatorManagerInitializationArgsFromWarpTx(conversionTxID: string, subnetId: string, client: ExtendedClient): Promise<InitializeValidatorSetArgs> {\n const { validators, chainId, managerAddress } = await extractWarpMessageFromPChainTx(subnetId, conversionTxID, client);\n // Prepare transaction arguments\n return [\n {\n subnetID: cb58ToHex(subnetId),\n validatorManagerBlockchainID: cb58ToHex(chainId),\n validatorManagerAddress: managerAddress,\n initialValidators: validators\n .map(({ nodeID, weight, signer }: { nodeID: string, weight: number, signer: { publicKey: string } }) => {\n // Ensure nodeID and blsPublicKey are properly formatted\n // If nodeID is in BinTools format, convert to hex\n const nodeIDBytes = nodeID.startsWith('0x')\n ? nodeID\n : add0x(nodeID);\n\n // If blsPublicKey is in BinTools format, convert to hex\n const blsPublicKeyBytes = signer.publicKey.startsWith('0x')\n ? signer.publicKey\n : add0x(signer.publicKey);\n\n return {\n nodeID: nodeIDBytes as Hex,\n blsPublicKey: blsPublicKeyBytes as Hex,\n weight: BigInt(weight)\n };\n })\n },\n 0 // messageIndex parameter\n ];\n}\n\nexport async function issueSignedTx(pvmApi: pvm.PVMApi, tx: UnsignedTx, testnet: boolean = true): Promise<Result<Hex, string>> {\n if (isCastMode()) {\n const rpcUrl = testnet ? avalancheFuji.rpcUrls.default.http[0] : avalanche.rpcUrls.default.http[0];\n return R.Ok(logPChainIssueTx(tx.getSignedTx().toBytes(), rpcUrl));\n }\n const result = pipe(await R.fromPromise(pvmApi.issueSignedTx(tx.getSignedTx())),\n R.map(res => res.txID as Hex),\n R.mapError(err => \"\\n\" + color.red(`Error issuing P-Chain Signed Tx:`) + `\\n${err.message}`)\n )\n if (R.isOk(result)) await waitPChainTx(result._0, pvmApi);// else await logger.exitError([result._0])\n return result;\n}\n","import { color } from \"./safeColors\";\nimport { bigintReplacer } from \"./utils\";\n\ntype JsonValue = string | number | boolean | null | JsonObject | JsonArray;\ninterface JsonObject { [key: string]: JsonValue }\ninterface JsonArray extends Array<JsonValue> { }\n\ntype LogData = Record<string, any>;\n\nexport type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';\n\nenum LogLevelEnum {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3\n}\n\ninterface LoggerConfig {\n silent: boolean;\n jsonMode: boolean;\n logLevel: LogLevelEnum;\n}\n\n// Helper to safely get env variables (browser-safe)\nconst getEnvLogLevel = (): LogLevelEnum => {\n if (typeof process !== 'undefined' && process.env && process.env.LogLevel) {\n return LogLevelEnum[process.env.LogLevel as LogLevel] ?? LogLevelEnum.INFO;\n }\n return LogLevelEnum.INFO;\n};\n\nclass Logger {\n private static instance: Logger;\n private config: LoggerConfig = { silent: false, jsonMode: false, logLevel: getEnvLogLevel() };\n public data: LogData = {};\n\n public static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n return Logger.instance;\n }\n\n // Configuration methods\n public setSilent(silent: boolean) {\n this.config.silent = silent;\n }\n\n public setLogLevel(level: LogLevel) {\n this.config.logLevel = LogLevelEnum[level];\n }\n\n public setJsonMode(jsonMode?: boolean) {\n this.config.jsonMode = Boolean(jsonMode);\n this.config.silent = Boolean(jsonMode); // Auto-set silent when in JSON mode\n }\n\n private shouldLog(level: LogLevel): boolean {\n return !this.config.silent && LogLevelEnum[level] >= this.config.logLevel;\n }\n\n // Console methods\n public debug(...args: any[]) {\n if (this.shouldLog('DEBUG')) {\n console.debug('[DEBUG]', ...args);\n }\n }\n\n public log(...args: any[]) {\n if (this.shouldLog('INFO')) {\n console.log(...args);\n }\n }\n\n public info(...args: any[]) {\n if (this.shouldLog('INFO')) {\n console.info(...args);\n }\n }\n\n public warn(...args: any[]) {\n if (this.shouldLog('WARN')) {\n console.warn(...args);\n }\n }\n\n public error(...args: any[]) {\n if (this.shouldLog('ERROR')) {\n console.error(...args);\n }\n // Side effect: add error to data structure\n const errorMessage = args.map(arg => {\n if (arg instanceof Error) return String(arg)\n return typeof arg === 'object' ? JSON.stringify(arg) : String(arg)\n }\n ).join(' ');\n\n if (this.data['error'] !== errorMessage) this.addData('error', errorMessage);\n\n if (typeof process !== 'undefined' && process.exitCode !== undefined) {\n process.exitCode = 1;\n }\n }\n\n public exitError(args: any[], stackPop: number = 0) {\n const err = new Error();\n this.error(...args, color.red(\"\\nCLI Stack trace:\\n\" + err.stack?.split(\"\\n\").slice(2 + stackPop, -1).join(\"\\n\")));\n if (typeof process !== 'undefined' && process.exit) {\n process.exit(1);\n } else {\n throw new Error(args.join(' '));\n }\n }\n\n public table(data: any) {\n if (!this.config.silent) {\n console.table(data);\n }\n }\n\n public logJsonTree(data: JsonObject | JsonArray): void {\n if (this.config.silent) return;\n\n const lines: string[] = [];\n\n const buildLines = (node: any, prefix: string, skipFirstKey: boolean = false) => {\n let keys = Object.keys(node);\n\n if (skipFirstKey && !Array.isArray(node)) {\n keys = keys.slice(1);\n }\n\n const isParentArray = Array.isArray(node);\n let childPrefix: string;\n keys.forEach((key, i) => {\n const value = node[key];\n const isContainer = typeof value === 'object' && value !== null;\n const isLast = i === keys.length - 1;\n\n if (isParentArray && i > 0 && isContainer) {\n lines.push(childPrefix || '');\n }\n\n let connector = isLast ? '└── ' : '├── ';\n\n if (isParentArray && isContainer) {\n const childKeys = Object.keys(value);\n\n if (childKeys.length > 0) {\n const firstKey = childKeys[0];\n const firstVal = value[firstKey];\n const displayFirstVal = typeof firstVal === 'string' ? `\"${firstVal}\"` : firstVal;\n\n const headerLabel = `${firstKey}: ${displayFirstVal}`;\n\n const specialConnector = isLast ? '└───┬── ' : childPrefix ? '├───┬── ' : '┌───┬── ';\n\n lines.push(`${prefix}${specialConnector}${headerLabel}`);\n\n childPrefix = prefix + (isLast ? ' ' : '│ ');\n buildLines(value, childPrefix, true);\n return;\n }\n }\n\n let displayLabel = key;\n if (isParentArray) displayLabel = '';\n\n if (isContainer) {\n lines.push(`${prefix}${connector}${displayLabel}`);\n childPrefix = prefix + (isLast ? ' ' : '│ ');\n buildLines(value, childPrefix, false);\n } else {\n const displayValue = typeof value === 'string' ? `\"${value}\"` : value;\n\n if (isParentArray) {\n lines.push(`${prefix}${connector}${displayValue}`);\n } else {\n lines.push(`${prefix}${connector}${displayLabel}: ${displayValue}`);\n }\n }\n });\n };\n\n buildLines(data, '');\n console.log(lines.join('\\n'));\n }\n\n // Data management methods\n public addData<K extends string>(key: K, value: any) {\n if (this.config.jsonMode) {\n if (this.data[key] === undefined) {\n this.data[key] = value;\n } else {\n if (Array.isArray(this.data[key])) {\n this.data[key].push(value);\n } else {\n this.data[key] = [this.data[key], value];\n }\n }\n };\n }\n\n public getData(): LogData {\n return { ...this.data };\n }\n\n public clearData() {\n this.data = {};\n }\n\n // JSON output method\n public printJson(): void {\n if (this.config.jsonMode) console.log(JSON.stringify(this.data, bigintReplacer, 2));\n }\n\n // Utility method to get current config\n public getConfig(): Readonly<LoggerConfig> {\n return { ...this.config };\n }\n}\n\n// Export singleton instance\nexport const logger = Logger.getInstance();\n\n// Export type for better TypeScript integration\nexport type LoggerInstance = typeof logger;\n","import { evm } from \"@avalabs/avalanchejs\";\nimport { logger } from './logger';\nimport { parseEventLogs } from \"viem\";\nimport { Config } from \"../config\";\n\n// Wait c chain tx until it is confirmed with a timeout\nexport async function waitCChainTx(txID: string, evmApi: evm.EVMApi, pollingInterval: number = 6, retryCount: number = 10) {\n let tx = await evmApi.getAtomicTxStatus(txID);\n let retry = 0;\n while (tx.status !== 'Committed' && tx.status !== 'Accepted' && retry < retryCount) {\n logger.log(`Waiting for C-Chain transaction ${txID} to be committed... (current status: ${tx.status})`);\n await new Promise(resolve => setTimeout(resolve, pollingInterval * 1000));\n tx = await evmApi.getAtomicTxStatus(txID);\n retry++;\n }\n}\n\nexport async function getERC20Events(hash: `0x${string}`, config: Config) {\n const receipt = await config.client.getTransactionReceipt({ hash });\n const logs = parseEventLogs({\n abi: config.abis.ERC20,\n logs: receipt.logs,\n });\n return logs;\n}\n","import { Hex, Account, getAbiItem, decodeEventLog, Abi, parseAbi } from 'viem';\nimport { SafeSuzakuContract } from './lib/viemUtils';\nimport { ExtendedClient, ExtendedPublicClient } from './client';\nimport { color } from './lib/safeColors';\nimport { Config } from './config';\nimport { encodeNodeID, NodeId, parseNodeID } from './lib/utils';\nimport { blockAtTimestamp, collectEventsInRange, DecodedEvent, fillEventsNodeId, GetContractEvents, ProgressBar } from './lib/cChainUtils';\nimport { logger } from './lib/logger';\n\nexport async function middlewareRegisterOperator(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex\n) {\n logger.log(\"Registering operator...\");\n\n const hash = await middleware.safeWrite.registerOperator([operator]);\n logger.log(\"registerOperator done, tx hash:\", hash);\n}\n\nexport async function middlewareDisableOperator(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex\n) {\n logger.log(\"Disabling operator...\");\n\n const hash = await middleware.safeWrite.disableOperator([operator]);\n logger.log(\"disableOperator done, tx hash:\", hash);\n}\n\nexport async function middlewareRemoveOperator(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex\n) {\n logger.log(\"Removing operator...\");\n\n const hash = await middleware.safeWrite.removeOperator([operator]);\n logger.log(\"removeOperator done, tx hash:\", hash);\n}\n\n// addNode\nexport async function middlewareAddNode(\n middleware: SafeSuzakuContract['L1Middleware'],\n nodeId: NodeId,\n blsKey: Hex,\n remainingBalanceOwner: [number, `0x${string}`[]],\n disableOwner: [number, `0x${string}`[]],\n initialStake: bigint\n) {\n logger.log(\"Calling function addNode...\");\n\n // Parse NodeID to bytes32 format\n const nodeIdHex32 = parseNodeID(nodeId)\n\n const hash = await middleware.safeWrite.addNode([nodeIdHex32, blsKey, { threshold: remainingBalanceOwner[0], addresses: remainingBalanceOwner[1] }, { threshold: disableOwner[0], addresses: disableOwner[1] }, initialStake]);\n logger.log(\"addNode executed successfully, tx hash:\", hash);\n return hash;\n}\n\n// removeNode\nexport async function middlewareRemoveNode(\n middleware: SafeSuzakuContract['L1Middleware'],\n nodeId: NodeId\n) {\n logger.log(\"Calling function removeNode...\");\n\n // Parse NodeID to bytes32 format\n const nodeIdHex32 = parseNodeID(nodeId)\n\n const hash = await middleware.safeWrite.removeNode([nodeIdHex32]);\n logger.log(\"removeNode executed successfully, tx hash:\", hash);\n return hash;\n}\n\n// initializeValidatorWeightUpdate\nexport async function middlewareInitStakeUpdate(\n middleware: SafeSuzakuContract['L1Middleware'],\n nodeId: NodeId,\n newStake: bigint\n) {\n logger.log(\"Calling function initializeValidatorStakeUpdate...\");\n\n // Parse NodeID to bytes32 format\n const nodeIdHex32 = parseNodeID(nodeId)\n\n const hash = await middleware.safeWrite.initializeValidatorStakeUpdate([nodeIdHex32, newStake]);\n logger.log(\"initializeValidatorStakeUpdate executed successfully, tx hash:\", hash);\n return hash;\n}\n\n// calcAndCacheNodeStakeForAllOperators\nexport async function middlewareCalcNodeStakes(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n logger.log(\"Calculating node stakes for all operators...\");\n\n const hash = await middleware.safeWrite.calcAndCacheNodeStakeForAllOperators();\n logger.log(\"calcAndCacheNodeStakeForAllOperators done, tx hash:\", hash);\n}\n\n// forceUpdateNodes\nexport async function middlewareForceUpdateNodes(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex,\n limitStake: bigint\n) {\n logger.log(\"Calling forceUpdateNodes...\");\n\n const hash = await middleware.safeWrite.forceUpdateNodes([operator, limitStake]);\n logger.log(\"forceUpdateNodes executed successfully\");\n logger.log(\"tx hash:\", hash);\n}\n\n// getOperatorStake\nexport async function middlewareGetOperatorStake(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex,\n epoch: number,\n collateralClass: bigint\n) {\n logger.log(\"Reading operator stake...\");\n\n const val = await middleware.read.getOperatorStake(\n [operator, epoch, collateralClass]\n );\n logger.log(val);\n}\n\n// getCurrentEpoch\nexport async function middlewareGetCurrentEpoch(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n logger.log(\"Reading current epoch...\");\n const val = await middleware.read.getCurrentEpoch();\n logger.log(val);\n}\n\n// getEpochStartTs\nexport async function middlewareGetEpochStartTs(\n middleware: SafeSuzakuContract['L1Middleware'],\n epoch: number\n) {\n logger.log(\"Reading epoch start timestamp...\");\n\n const val = await middleware.read.getEpochStartTs(\n [epoch]\n );\n logger.log(val);\n}\n\n// getActiveNodesForEpoch\nexport async function middlewareGetActiveNodesForEpoch(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex,\n epoch: number\n) {\n logger.log(\"Reading active nodes for epoch...\");\n\n const nodeIds = (await middleware.read.getActiveNodesForEpoch(\n [operator, epoch]\n ) as Hex[]).map((b: Hex) => encodeNodeID(b));\n logger.log(nodeIds);\n logger.addData('nodeIds', nodeIds);\n}\n\n// getOperatorNodesLength\nexport async function middlewareGetOperatorNodesLength(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex\n) {\n logger.log(\"Reading operator nodes length...\");\n\n const length = await middleware.read.getOperatorNodesLength([operator]);\n logger.log(length);\n\n}\n\n// nodeStakeCache\nexport async function middlewareGetNodeStakeCache(\n middleware: SafeSuzakuContract['L1Middleware'],\n epoch: number,\n validationId: Hex\n) {\n logger.log(\"Reading node stake cache...\");\n\n const val = await middleware.read.nodeStakeCache([epoch, validationId]);\n logger.log(val);\n\n}\n\n// operatorLockedStake\nexport async function middlewareGetOperatorLockedStake(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex\n) {\n logger.log(\"Reading operator locked stake...\");\n\n const val = await middleware.read.operatorLockedStake([operator]);\n logger.log(val);\n\n}\n\n// nodePendingRemoval\nexport async function middlewareNodePendingRemoval(\n middleware: SafeSuzakuContract['L1Middleware'],\n validatorId: Hex\n) {\n logger.log(\"Reading nodePendingRemoval...\");\n\n const val = await middleware.read.nodePendingRemoval([validatorId]);\n logger.log(val);\n\n}\n\n// nodePendingUpdate - Note: This function is not available in the current contract\nexport async function middlewareNodePendingUpdate(\n middleware: SafeSuzakuContract['L1Middleware'],\n validatorId: Hex\n) {\n logger.log(\"Node pending update check is not available in the current contract version\");\n logger.log(`ValidatorId: ${validatorId}`);\n logger.log(\"This functionality may be available through other contract methods or in future versions\");\n}\n\n// getOperatorUsedStakeCached\nexport async function middlewareGetOperatorUsedStake(\n middleware: SafeSuzakuContract['L1Middleware'],\n operator: Hex\n) {\n logger.log(\"Reading operator used stake cached...\");\n\n const val = await middleware.read.getOperatorUsedStakeCached([operator]);\n logger.log(val);\n\n}\n\n// getAllOperators\nexport async function middlewareGetAllOperators(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n logger.log(\"Reading all operators from middleware...\");\n\n const operators = await middleware.read.getAllOperators();\n logger.log(operators);\n\n}\n\n/**\n * Gets all operator nodes\n */\nexport async function getAllOperators(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n const operators = await middleware.read.getAllOperators();\n logger.log(\"All operators:\", operators);\n return operators;\n}\n\n/**\n * Gets all collateral class IDs\n */\nexport async function getCollateralClassIds(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n const collateralClassIds = await middleware.read.getCollateralClassIds();\n logger.log(\"Collateral class IDs:\", collateralClassIds);\n return collateralClassIds;\n}\n\n/**\n * Gets active collateral classes (primary and secondary)\n */\nexport async function getActiveCollateralClasses(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n const result = await middleware.read.getActiveCollateralClasses();\n logger.log(\"Active collateral classes - Primary:\", result[0], \"Secondaries:\", result[1]);\n return result;\n}\n\nexport async function middlewareGetNodeLogs(\n client: ExtendedClient,\n middleware: SafeSuzakuContract['L1Middleware'],\n config: Config,\n nodeId?: NodeId,\n snowscanApiKey?: string,\n quiet?: boolean,\n bar?: ProgressBar\n) {\n logger.log(\"Reading logs from middleware and balancer...\");\n\n const to = await client.getBlockNumber();\n\n const from = await blockAtTimestamp(client, BigInt(await middleware.read.START_TIME()));\n\n if (bar && !snowscanApiKey) bar.start(0, 0);\n\n const logsProm: Promise<DecodedEvent[]>[] = []\n\n logsProm.push(GetContractEvents(\n client,\n middleware.address,\n Number(from),\n Number(to),\n config.abis.L1Middleware,\n [\"NodeAdded\", \"NodeRemoved\", \"NodeStakeUpdated\"],\n snowscanApiKey,\n snowscanApiKey ? false : true,\n bar\n ));\n\n const [l1ValidatorManagerAddress, balancerAddress] = await middleware.multicall(['BALANCER', 'balancerValidatorManager'])\n\n const completeEventsContractAddress = l1ValidatorManagerAddress as Hex || balancerAddress as Hex;\n\n if (completeEventsContractAddress) {\n logsProm.push(GetContractEvents(\n client,\n completeEventsContractAddress,\n Number(from),\n Number(to),\n config.abis.BalancerValidatorManager,\n undefined,\n snowscanApiKey,\n snowscanApiKey ? false : true,\n bar\n ));\n }\n const balancer = await config.contracts.BalancerValidatorManager(balancerAddress as Hex);\n\n const allLogs = await Promise.all(logsProm);\n let logs = allLogs.flat().sort((a, b) => Number(a.blockNumber - b.blockNumber));\n logs = await fillEventsNodeId(balancer, logs);\n if (quiet) {\n return logs;\n }\n // Human readable addresses and structured logs\n const logOfInterest = groupEventsByNodeId(logs.map((log: DecodedEvent) => {\n log.address = log.address.toLowerCase() === middleware.address.toLowerCase() ? \"Middleware\" : \"ValidatorManager\";\n return log;\n }))\n\n if (nodeId != undefined) {\n const nodeIdHex32 = parseNodeID(nodeId);\n logger.log('\\t\\t\\t' + color.blue(nodeId));\n logger.table(logOfInterest[nodeIdHex32] || []);\n } else {\n for (const [key, value] of Object.entries(logOfInterest)) {\n const nodeId = encodeNodeID(key as Hex);\n logger.log('\\t\\t\\t\\t\\t\\t' + color.blue(nodeId));\n logger.table(value);\n }\n }\n\n}\n\nexport function groupEventsByNodeId(events: DecodedEvent[]): Record<string, { source: string; event: string; hash: string; executionTime: string/*args: string*/ }[]> {\n return events.reduce((acc, log) => {\n if (log.args.nodeId) {\n const key = log.args.nodeId;\n\n if (!acc[key]) {\n acc[key] = [];\n }\n const same = acc[key].some((l) => l.hash === log.transactionHash);\n const hash = same ? \"↑same↑\" : log.transactionHash;\n const executionTime = log.timestamp ? same ? \"↑same↑\" : new Date(Number(log.timestamp) * 1000).toLocaleString() : 'N/A';\n\n acc[key].push({\n source: log.address,\n event: log.eventName,\n // args: JSON.stringify(log.args, (key, value) => \n // typeof value === 'bigint'\n // ? value.toString()\n // : value // return everything else unchanged\n // ),// Too long in the table TODO: use a custom formatter\n executionTime,\n hash: hash,\n });\n }\n\n return acc;\n }, {} as Record<string, { source: string; event: string; hash: string; executionTime: string;/*args: string*/ }[]>);\n}\n\nexport async function middlewareManualProcessNodeStakeCache(\n middleware: SafeSuzakuContract['L1Middleware'],\n numEpochsToProcess: number\n) {\n logger.log(\"Processing node stake cache...\");\n\n const hash = await middleware.safeWrite.manualProcessNodeStakeCache([numEpochsToProcess]);\n logger.log(\"manualProcessNodeStakeCache done, tx hash:\", hash);\n}\n\nexport async function middlewareLastValidationId(\n client: ExtendedClient,\n middleware: SafeSuzakuContract['L1Middleware'],\n balancer: SafeSuzakuContract['BalancerValidatorManager'],\n nodeId: NodeId,\n): Promise<Hex> {\n const nodeIdHex = parseNodeID(nodeId)\n // If already registered\n const validationId = await balancer.read.getNodeValidationID([nodeIdHex]);\n\n if (parseInt(validationId, 16) === 0) {\n const toBlock = await blockAtTimestamp(client, BigInt(await middleware.read.START_TIME()))\n const fromBlock = await client.getBlockNumber();\n const event = await collectEventsInRange(fromBlock, toBlock, 1, (opts) => middleware.getEvents.NodeAdded({ nodeId: nodeIdHex }, opts));\n if (event.length === 0) {\n throw new Error(`Node ID ${nodeId} never registered in the middleware`);\n } else {\n return event[0].args.validationID!;\n }\n } else {\n return validationId;\n }\n}\n\n\nexport async function weightWatcher(\n middleware: SafeSuzakuContract['L1Middleware'],\n config: Config,\n options: {\n epochs?: number;\n loopEpochs?: number;\n }\n) {\n\n // middlewareManualProcessNodeStakeCache configuration\n const [lastGlobalNodeStakeUpdateEpoch, currentEpoch, updateWindow] = await middleware.multicall(['lastGlobalNodeStakeUpdateEpoch', 'getCurrentEpoch', 'UPDATE_WINDOW']);\n let epochsPerCall;\n let loopCount;\n if (options.epochs || options.loopEpochs) { // Fully specified by user\n epochsPerCall = options.epochs || 1;\n loopCount = options.loopEpochs || 1;\n } else { // Automatic calculation\n epochsPerCall = currentEpoch - lastGlobalNodeStakeUpdateEpoch;\n loopCount = epochsPerCall > 50 ? Math.ceil(epochsPerCall / 50) : 1; // Limit number of epochs processed in a single call to avoid gas issues\n epochsPerCall = Math.ceil(epochsPerCall / loopCount);\n }\n\n const startEpoch = await middleware.read.getEpochStartTs([currentEpoch]);\n const now = Date.now() / 1000;\n\n if (now < startEpoch + updateWindow) {\n throw new Error(`Not enough time has passed since the start of the current epoch. Please wait until the update window has passed(${startEpoch + updateWindow - now} seconds)`);\n }\n\n logger.log(`Processing node stake cache: ${loopCount} iterations of ${epochsPerCall} epoch(s) each`);\n\n for (let i = 0; i < loopCount; i++) {\n logger.log(`\\nIteration ${i + 1}/${loopCount}`);\n const hash = await middleware.safeWrite.manualProcessNodeStakeCache([epochsPerCall]);\n logger.log(\"manualProcessNodeStakeCache done, tx hash:\", hash);\n }\n\n const processedEpochs = Math.max(epochsPerCall * loopCount, currentEpoch - lastGlobalNodeStakeUpdateEpoch);\n\n // process stake cache for operators\n const [collateralClasses, operators] = await middleware.multicall(['getCollateralClassIds', 'getAllOperators']);\n\n const processedEpochsRange: number[] = Array.from({ length: processedEpochs }, (_, i) => i + lastGlobalNodeStakeUpdateEpoch)\n for (const epoch of processedEpochsRange) {\n for (const collateralClass of collateralClasses) {\n logger.log(`Processing epoch ${epoch} for collateral class ${collateralClass}`);\n await middleware.safeWrite.calcAndCacheStakes([epoch, collateralClass]);\n }\n }\n\n const predictions = await predictForceUpdateImpact(config, middleware, operators as Hex[]);\n\n for (const prediction of predictions) {\n if (prediction.willLoseWeight) {\n logger.log(`Operator ${prediction.operator} will ${prediction.willLoseWeight ? 'lose' : 'gain'} weight`);\n logger.log(`Current total stake: ${prediction.currentTotalStake}`);\n logger.log(`Capped total stake: ${prediction.cappedTotalStake}`);\n logger.log(`Registered stake: ${prediction.registeredStake}`);\n logger.log(`Stake deficit: ${prediction.stakeDeficit}`);\n logger.log(`Active nodes count: ${prediction.activeNodesCount}`);\n await middleware.safeWrite.forceUpdateNodes([prediction.operator, 0n]);\n } else {\n logger.log(`Operator ${prediction.operator} will not lose weight`);\n }\n }\n}\n\nexport interface OperatorForceUpdatePrediction {\n operator: Hex;\n willLoseWeight: boolean;\n currentTotalStake: bigint;\n cappedTotalStake: bigint;\n registeredStake: bigint;\n stakeDeficit: bigint;\n activeNodesCount: number;\n}\n\nexport async function predictForceUpdateImpact(\n config: Config,\n middleware: SafeSuzakuContract['L1Middleware'],\n operators: Hex[]\n): Promise<OperatorForceUpdatePrediction[]> {\n // Replicate the calculation in the smart contract\n if (operators.length === 0) return [];\n\n const [\n currentEpoch,\n weightScaleFactor,\n balancerAddress,\n primaryAssetClass\n ] = await middleware.multicall([\n 'getCurrentEpoch',\n 'WEIGHT_SCALE_FACTOR',\n 'BALANCER',\n 'PRIMARY_ASSET_CLASS'\n ]);\n\n const balancer = await config.contracts.BalancerValidatorManager(balancerAddress)\n\n const [, securityModuleMaxWeight] = await balancer.read.getSecurityModuleWeights([middleware.address])\n\n\n const maxStakeCap = BigInt(securityModuleMaxWeight) * weightScaleFactor;\n\n\n const results = await middleware.multicall(operators.flatMap(op => [\n {\n name: 'getOperatorStake',\n args: [op, currentEpoch, primaryAssetClass]\n },\n {\n name: 'getOperatorUsedStakeCached',\n args: [op]\n },\n {\n name: 'operatorLockedStake',\n args: [op]\n },\n {\n name: 'getActiveNodesForEpoch',\n args: [op, currentEpoch]\n }\n ]));\n\n const predictions: OperatorForceUpdatePrediction[] = [];\n\n for (let i = 0; i < operators.length; i++) {\n const baseIndex = i * 4;\n const operator = operators[i];\n\n const theoreticalStake = results[baseIndex] as bigint;\n const usedStake = results[baseIndex + 1] as bigint;\n const lockedStake = results[baseIndex + 2] as bigint;\n const activeNodes = results[baseIndex + 3] as readonly `0x${string}`[];\n\n let cappedStake = theoreticalStake;\n // If the stake is above the max cap, cap it\n if (cappedStake > maxStakeCap) {\n cappedStake = maxStakeCap;\n }\n\n const registeredStake = usedStake + lockedStake;\n let stakeDeficit = 0n;\n let willLoseWeight = false;\n // If the stake is below the registered stake, check if the operator will lose weight\n if (cappedStake < registeredStake) {\n stakeDeficit = registeredStake - cappedStake;\n\n // If the stake deficit is behind the weight scale factor, the operator will lose weight\n if (stakeDeficit >= weightScaleFactor) {\n if (activeNodes.length > 0) {\n willLoseWeight = true;\n }\n }\n }\n\n predictions.push({\n operator,\n willLoseWeight,\n currentTotalStake: theoreticalStake,\n cappedTotalStake: cappedStake,\n registeredStake,\n stakeDeficit,\n activeNodesCount: activeNodes.length\n });\n }\n\n return predictions;\n}\n\nexport async function middlewareInfo(\n middleware: SafeSuzakuContract['L1Middleware']\n) {\n logger.log(\"Fetching middleware information...\");\n\n const results = await middleware.multicall([\n 'owner',\n 'BALANCER',\n 'PRIMARY_ASSET_CLASS',\n 'PRIMARY_ASSET',\n 'WEIGHT_SCALE_FACTOR',\n 'UPDATE_WINDOW',\n 'START_TIME',\n 'getCurrentEpoch',\n 'getAllOperators',\n 'getCollateralClassIds',\n 'lastGlobalNodeStakeUpdateEpoch',\n 'getVaultManager'\n ]);\n\n const info = {\n middlewareAddress: middleware.address,\n owner: results[0] as Hex,\n balancerValidatorManager: results[1] as Hex,\n primaryAssetClass: results[2]?.toString(),\n primaryAsset: results[3] as Hex,\n weightScaleFactor: results[4]?.toString(),\n updateWindow: results[5]?.toString(),\n startTime: new Date(Number(results[6]) * 1000).toLocaleString(),\n currentEpoch: results[7]?.toString(),\n operatorsCount: (results[8] as Hex[]).length,\n collateralClassIds: (results[9] as bigint[])?.map(id => id.toString()),\n lastGlobalNodeStakeUpdateEpoch: results[10]?.toString(),\n vaultManager: results[11] as Hex,\n };\n\n logger.logJsonTree(info);\n logger.addData('middlewareInfo', info);\n return info;\n}\n","import { Account, bytesToHex, Hex, hexToBytes, parseEventLogs } from \"viem\";\nimport { ExtendedWalletClient } from \"./client\";\nimport { Config, pChainChainID } from \"./config\";\nimport { SafeSuzakuContract } from \"./lib/viemUtils\";\nimport { encodeNodeID, NodeId, parseNodeID, retryWhileError } from \"./lib/utils\";\nimport { logger } from './lib/logger';\nimport { color } from \"./lib/safeColors\";\nimport { collectSignatures, getSigningSubnetIdFromWarpMessage, packL1ValidatorRegistration, packL1ValidatorWeightMessage, packWarpIntoAccessList } from \"./lib/warpUtils\";\nimport { getCurrentValidators, registerL1Validator, setValidatorWeight } from \"./lib/pChainUtils\";\nimport { pipe, R } from \"@mobily/ts-belt\";\nimport { GetRegistrationJustification } from \"./lib/justification\";\nimport { utils } from \"@avalabs/avalanchejs\";\n\nexport async function completeValidatorRegistration(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n securityModule: SafeSuzakuContract['PoASecurityModule'] | SafeSuzakuContract['L1Middleware'],\n balancer: SafeSuzakuContract['BalancerValidatorManager'],\n config: Config,\n blsProofOfPossession: string,\n addNodeTxHash: Hex,\n initialBalance: bigint,\n waitValidatorVisible: boolean\n) {\n logger.log(\"Completing validator registration...\");\n\n // Wait for transaction receipt to extract warp message and validation ID\n const receipt = await client.waitForTransactionReceipt({ hash: addNodeTxHash });\n\n const InitiatedValidatorRegistration = parseEventLogs({\n abi: balancer.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorRegistration'\n })[0]\n\n if (!InitiatedValidatorRegistration) {\n logger.error(color.red(\"No InitiatedValidatorRegistration event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n })[0]\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLogs.args.message);\n\n const nodeId = encodeNodeID(InitiatedValidatorRegistration.args.nodeID); // Convert bytes32 to NodeID format by removing the first 12 bytes\n // Check if the node is still registered as a validator on the P-Chain\n const subnetIDHex = await balancer.read.subnetID();\n const subnetID = utils.base58check.encode(hexToBytes(subnetIDHex));\n const isValidator = (await getCurrentValidators(client, subnetID)).some((v) => v.nodeID === nodeId);\n if (isValidator) {\n logger.log(color.yellow(\"Node is already registered as a validator on the P-Chain, skipping registerL1Validator call.\"));\n } else {\n // Get the unsigned warp message from the receipt\n const RegisterL1ValidatorUnsignedWarpMsg = warpLogs.args.message;\n\n // Collect signatures for the warp message\n logger.log(\"\\nCollecting signatures for the L1ValidatorRegistrationMessage from the Validator Manager chain...\");\n const signedMessage = await collectSignatures({ network: client.network, message: RegisterL1ValidatorUnsignedWarpMsg, signingSubnetId });\n\n // Register validator on P-Chain\n logger.log(\"\\nRegistering validator on P-Chain...\");\n // eslint-disable-next-line\n pipe(await registerL1Validator({\n client: pchainClient,\n blsProofOfPossession: blsProofOfPossession,\n signedMessage,\n initialBalance: initialBalance\n }),\n R.tap(pChainTxId => logger.log(\"RegisterL1ValidatorTx executed on P-Chain:\", pChainTxId))),\n R.tapError(err => { logger.error(err); process.exit(1) })\n }\n\n // Get the validation ID from the receipt logs\n const validationIDHex = InitiatedValidatorRegistration.args.validationID;\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationIDHex as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorRegistration(validationIDBytes, true, client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n logger.log(\"\\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n logger.log(\"\\nCalling function completeValidatorRegistration...\");\n // TODO: Find a way to use the proper signature of the method\n const method = securityModule.safeWrite.completeValidatorRegistration as any;\n const hash = await method([0],\n {\n account: client.account!,\n chain: null,\n accessList\n });\n\n // Wait until the validator is visible on the P-Chain\n if (waitValidatorVisible) {\n logger.log(\"Waiting for the validator to be visible on the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, subnetID)).some((v) => v.nodeID === nodeId), 5000, 180000, (res) => res === true);\n }\n\n logger.log(\"completeValidatorRegistration executed successfully, tx hash:\", hash);\n}\n\nexport async function completeValidatorRemoval(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n securityModule: SafeSuzakuContract['L1Middleware'] | SafeSuzakuContract['PoASecurityModule'],\n balancerValidatorManager: SafeSuzakuContract['BalancerValidatorManager'],\n config: Config,\n initializeEndValidationTxHash: Hex,\n waitValidatorVisible: boolean,\n nodeIDs?: NodeId[],\n addNodeTxHash?: Hex[]\n) {\n logger.log(\"Completing validator removal...\");\n\n // Wait for the removeNode transaction to be confirmed to extract the unsigned L1ValidatorWeightMessage and validationID from the receipt\n const receipt = await client.waitForTransactionReceipt({ hash: initializeEndValidationTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initializeEndValidationTxHash} reverted, pls resend the removeNode transaction`);\n\n // Select the NodeRemoved events from the receipt, filter by nodeIDs if provided and if securityModule is L1Middleware\n let nodeRemoved: {\n args: {\n nodeId: Hex;\n validationID: Hex;\n },\n blockNumber: bigint;\n }[];\n if (securityModule.name === \"L1Middleware\") {\n nodeRemoved = parseEventLogs({\n abi: securityModule.abi,\n logs: receipt.logs,\n eventName: 'NodeRemoved'\n }).filter((e) => nodeIDs ? nodeIDs.includes(encodeNodeID(e.args.nodeId)) : true)\n\n if (nodeRemoved.length === 0) {\n logger.error(color.red(\"No matching NodeRemoved event found for the provided NodeIDs, verify the transaction hash and NodeIDs.\"));\n process.exit(1);\n }\n }\n // If securityModule is PoASecurityModule\n else {\n const validationId = parseEventLogs({\n abi: config.abis.ValidatorManager,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorRemoval'\n })[0].args.validationID\n\n if (!validationId) {\n logger.error(color.red(\"No matching InitiatedValidatorRemoval event found for the provided NodeIDs, verify the transaction hash and NodeIDs.\"));\n process.exit(1);\n }\n\n const nodeID = (await balancerValidatorManager.read.getValidator([validationId])).nodeID;\n\n nodeRemoved = [{\n args: {\n nodeId: nodeID,\n validationID: validationId\n },\n blockNumber: BigInt(receipt.blockNumber), // Not going to be used in GetRegistrationJustification because the justification will be found in the ConvertSubnetToL1Tx\n }];\n }\n\n const initiatedValidatorRemovals = parseEventLogs({\n abi: balancerValidatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorRemoval'\n })\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n })\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLogs[0].args.message);\n\n const subnetIDHex = await balancerValidatorManager.read.subnetID();\n const subnetID = utils.base58check.encode(hexToBytes(subnetIDHex));\n const currentValidators = (await getCurrentValidators(client, subnetID))\n\n for (const event of nodeRemoved) {\n const eventIndex = nodeRemoved.indexOf(event);\n const initiatedValidatorRemoval = initiatedValidatorRemovals.find((e) => e.args.validationID === event.args.validationID)!;\n const warpLog = warpLogs.find((w) => w.args.messageID === initiatedValidatorRemoval.args.validatorWeightMessageID)!;\n\n const validationID = event.args.validationID;\n const nodeID = encodeNodeID(event.args.nodeId); // Convert bytes32 to NodeID format by removing the first 12 bytes\n logger.log(nodeID)\n\n let addNodeBlockNumber = event.blockNumber;\n\n if (addNodeTxHash && addNodeTxHash.length > eventIndex) {\n const receipt = await client.waitForTransactionReceipt({ hash: addNodeTxHash[eventIndex], confirmations: 0 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${addNodeTxHash[eventIndex]} reverted, pls use another addNode tx`);\n const addNodeLogs = parseEventLogs({\n abi: config.abis.L1Middleware,\n logs: receipt.logs,\n })\n if (!addNodeLogs.some((w) => w.eventName === 'NodeAdded')) {\n logger.error(color.red(\"No matching NodeAdded event found for the provided NodeIDs, verify the addNode tx hash.\"));\n process.exit(1);\n }\n addNodeBlockNumber = receipt.blockNumber;\n }\n\n // Check if the node is still registered as a validator on the P-Chain\n const isValidator = currentValidators.some((v) => v.nodeID === nodeID);\n if (!isValidator) {\n logger.log(color.yellow(\"Node is not registered as a validator on the P-Chain.\"));\n } else {\n // Get the unsigned L1ValidatorWeightMessage with weight=0 generated by the ValidatorManager from the receipt\n const unsignedL1ValidatorWeightMessage = warpLog.args.message;\n\n // Aggregate signatures from validators\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n pipe(\n await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tapError(\n (error) => {\n throw new Error(\"SetL1ValidatorWeightTx failed on P-Chain: \" + error + '\\n');\n }),\n R.tap((txId) => {\n logger.log(\"SetL1ValidatorWeightTx executed on P-Chain: \" + txId);\n })\n );\n\n }\n\n\n // Get SubnetID in Hex from the BalancerValidatorManager\n const subnetIDHex = await balancerValidatorManager.read.subnetID();\n // Convert SubnetID to cb58\n const subnetIDC58 = utils.base58check.encode(hexToBytes(subnetIDHex));\n\n // get justification for original register validator tx (the unsigned warp msg emitted)\n const justification = await GetRegistrationJustification(nodeID, validationID, subnetIDC58, client, addNodeBlockNumber);\n if (!justification) {\n throw new Error(\"Justification not found for validator removal\");\n }\n\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationID as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorRegistration(validationIDBytes, false, client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n // logger.log(\"\\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, justification: bytesToHex(justification as Uint8Array), signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorRegistrationMessage from the P-Chain\");\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n // Execute completeEndValidation transaction\n logger.log(\"Executing completeEndValidation transaction...\");\n // TODO: Find a way to use the proper signature of the method\n const method = securityModule.safeWrite.completeValidatorRemoval as any;\n const completeHash = await method([0],\n {\n account: client.account!,\n chain: null,\n accessList\n });\n\n if (waitValidatorVisible) {// Wait only for the last validator is enough\n logger.log(\"Waiting for the validator to be removed from the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, subnetID)).some((v) => v.nodeID === nodeID), 5000, 180000, (res) => res === false);\n }\n\n logger.log(\"completeValidatorRemoval executed successfully, tx hash:\", completeHash);\n }\n}\n\nexport async function completeWeightUpdate(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n securityModule: SafeSuzakuContract['PoASecurityModule'] | SafeSuzakuContract['L1Middleware'],\n config: Config,\n validatorWeightUpdateTxHash: Hex,\n nodeIDs?: NodeId[]\n) {\n logger.log(\"Completing node stake update...\");\n\n // Wait for the removeNode transaction to be confirmed to extract the unsigned L1ValidatorWeightMessage and validationID from the receipt\n const receipt = await client.waitForTransactionReceipt({ hash: validatorWeightUpdateTxHash })\n\n const balancerAddress = await securityModule.read.balancerValidatorManager();\n const balancer = await config.contracts.BalancerValidatorManager(balancerAddress);\n // Convert nodeIDs to validationIDs\n let validationIds;\n if (nodeIDs) {\n\n validationIds = (await client.multicall({\n contracts: nodeIDs.map((id) => {\n return {\n ...balancer,\n functionName: 'getNodeValidationID',\n args: [parseNodeID(id)]\n }\n })\n })).reduce((acc, res) => {\n if (res.result) {\n acc.push(res.result as Hex)\n } else {\n logger.warn(color.yellow(`Warning: No validation ID found for NodeID ${nodeIDs[acc.length]}`))\n };\n return acc;\n }, [] as Hex[]);\n } else validationIds = undefined;\n\n const InitiatedValidatorWeightUpdates = parseEventLogs({\n abi: config.abis.BalancerValidatorManager,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorWeightUpdate'\n }).filter((e) => validationIds ? validationIds.includes(e.args.validationID) : true)\n\n if (InitiatedValidatorWeightUpdates.length === 0) {\n logger.error(color.red(\"No matching NodeStakeUpdated event found for the provided NodeIDs. Verify the transaction hash and NodeIDs.\"));\n process.exit(1);\n }\n\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n })\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLogs[0].args.message);\n for (const event of InitiatedValidatorWeightUpdates) {\n const InitiatedValidatorWeightUpdate = InitiatedValidatorWeightUpdates.find((e) => e.args.validationID === event.args.validationID)!;\n const warpLog = warpLogs.find((w) => w.args.messageID === InitiatedValidatorWeightUpdate.args.weightUpdateMessageID)!;\n\n const weight = InitiatedValidatorWeightUpdate.args.weight;\n const nonce = InitiatedValidatorWeightUpdate.args.nonce;\n const validationIDHex = InitiatedValidatorWeightUpdate.args.validationID\n const unsignedL1ValidatorWeightMessage = warpLog.args.message\n // Aggregate signatures from validators\n // logger.log(\"\\nAggregating signatures for the L1ValidatorWeightMessage from the Validator Manager chain...\");\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n pipe(await setValidatorWeight({\n client: pchainClient,\n validationID: validationIDHex,\n message: signedL1ValidatorWeightMessage\n }),\n R.tap(pChainSetWeightTxId => logger.log(\"SetL1ValidatorWeightTx executed on P-Chain:\", pChainSetWeightTxId)),\n R.tapError(err => {\n if (!err.includes('warp message contains stale nonce')) {\n logger.error(err);\n process.exit(1)\n }\n logger.warn(color.yellow(`Warning: Skipping SetL1ValidatorWeightTx for validationID ${validationIDHex} due to stale nonce (already issued)`));\n }));\n\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationIDHex as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorWeightMessage(validationIDBytes, BigInt(nonce), BigInt(weight), client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n // logger.log(\"\\nAggregating signatures for the L1ValidatorWeightMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the P-Chain\");\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n // TODO: Find a way to use the proper signature of the method\n const method = securityModule.safeWrite.completeValidatorWeightUpdate as any;\n const hash = await method([0],\n { chain: client.chain, accessList }\n );\n logger.log(\"completeStakeUpdate done, tx hash:\", hash);\n }\n}\n","import { info } from \"@avalabs/avalanchejs\";\nimport { Chain, defineChain } from \"viem\";\nimport { anvil, avalanche, avalancheFuji } from \"viem/chains\";\nimport { getPchainBaseUrl } from \"./pChainUtils\";\nimport { getChainId } from \"./cChainUtils\";\n// Used in client\navalanche.testnet = false\navalancheFuji.testnet = true\n\nexport const chainList: Record<string, Chain> & { custom: Chain } = {\n anvil: anvil,\n mainnet: avalanche,\n fuji: avalancheFuji,\n kitetestnet: defineChain({\n id: 2368,\n name: 'KiteIA Testnet',\n network: 'fuji',\n testnet: true,\n nativeCurrency: {\n decimals: 18,\n name: 'KITE',\n symbol: 'KITE',\n },\n rpcUrls: {\n default: { http: [\"https://rpc-testnet.gokite.ai/\"] },\n },\n }),\n kiteIA: defineChain({\n id: 2366,\n name: 'KiteIA',\n network: 'mainnet',\n testnet: false,\n nativeCurrency: {\n decimals: 18,\n name: 'KITE',\n symbol: 'KITE',\n },\n rpcUrls: {\n default: { http: [\"https://rpc.gokite.ai\"] },\n },\n contracts: {\n multicall3: {\n address: \"0xE3104A157cc4C0d3c7C3a8c655092668D068c149\",\n blockCreated: 29260\n }\n }\n }),\n custom: defineChain({\n id: 13694,\n name: 'Custom',\n network: 'fuji',\n testnet: true,\n nativeCurrency: {\n decimals: 18,\n name: 'AVAX',\n symbol: 'AVAX',\n },\n contracts: {// We suppose that the custom chain has been deployed with the multicall3 contract on its genesis block TODO: Otherwise find a strategy\n multicall3: {\n address: \"0xca11bde05977b3631167028862be2a173976ca11\",\n blockCreated: 0,\n },\n },\n rpcUrls: {\n default: { http: [\"http://localhost:9650/ext/bc/C/rpc\"] },\n },\n })\n}\n\nexport async function setCustomChainRpcUrl(rpcUrl: string) {\n const url = new URL(rpcUrl);\n const infoApi = new info.InfoApi(`${url.protocol}//${url.host}`);\n const networkIDresp = await infoApi.getNetworkId()\n const chainId = await getChainId(rpcUrl)\n chainList.custom = defineChain({\n ...chainList.custom,\n testnet: networkIDresp.networkID === \"1\" ? false : true,\n network: networkIDresp.networkID === \"1\" ? 'mainnet' : 'fuji',\n id: Number(chainId),\n rpcUrls: {\n default: { http: [rpcUrl] },\n },\n });\n}\n","import { WalletClient, PublicClient, PublicActions, Hex } from 'viem'\nimport { Account } from 'viem/accounts'\nimport { type SafeClient } from '@safe-global/sdk-starter-kit'\nimport { chainList } from './lib/chainList';\n// Define the network types\nexport type Network = 'fuji' | 'mainnet' | 'anvil';\nexport type Chains = keyof typeof chainList;\n\nexport type PChainAddress = `P-${string}`;\nexport type Addresses = { P: PChainAddress, C: Hex };\nexport type ExtendedAccount = Account & { pChainAddress: PChainAddress, cSign?: (parameters: { hash: Hex }) => Promise<Hex> };\n\n// Create extended client type that includes public actions and network type\nexport type ExtendedWalletClient = WalletClient & PublicActions & { network: Network, addresses: Addresses, safe?: SafeClient, ledger?: boolean, account: ExtendedAccount | undefined };\nexport type ExtendedPublicClient = PublicClient & { network: Network };\nexport type ExtendedClient = ExtendedWalletClient | ExtendedPublicClient;\n\nimport { createWalletClient, custom, http, createPublicClient, publicActions } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nimport { getAddresses } from './lib/utils';\nimport { getCoreWalletAccount } from './lib/coreWalletUtils';\n\n// Web-safe client generator for Next.js fronts\nexport async function generateWebClient(chain: Chains, providerType: 'core' | 'injected' | Hex = 'core'): Promise<ExtendedWalletClient | ExtendedPublicClient> {\n const network = chainList[chain].testnet ? 'fuji' : 'mainnet';\n let account: ExtendedAccount | undefined;\n\n if (providerType === 'core') {\n account = await getCoreWalletAccount(network);\n } else if (providerType !== 'injected' && typeof providerType === 'string') {\n // Hex private key\n account = privateKeyToAccount(providerType) as ExtendedAccount;\n const addresses = getAddresses(providerType, network);\n account.address = addresses.C;\n account.pChainAddress = addresses.P;\n }\n\n if (account) {\n // We use window.avalanche for core, window.ethereum for standard injected\n const transportProvider = providerType === 'core'\n ? (window as any).avalanche\n : (providerType === 'injected' ? (window as any).ethereum : http());\n\n const client = createWalletClient({\n account,\n chain: chainList[chain],\n transport: custom(transportProvider)\n }).extend(publicActions);\n\n return {\n ...client,\n network,\n ledger: false, // Ledger is handled via CLI/Node HID, not web directly here\n safe: undefined, // Safe uses Node.js api kits, ignored in pure frontend client\n addresses: { C: account.address as Hex, P: account.pChainAddress }\n } as ExtendedWalletClient;\n }\n\n return {\n ...createPublicClient({\n chain: chainList[chain],\n transport: http()\n }).extend(publicActions),\n network\n } as ExtendedPublicClient;\n}\n","import { Hex, toHex } from \"viem\";\nimport { Network } from \"../client\";\nimport { getAddressesFromCoreExtension } from \"./utils\";\nimport { toAccount } from \"viem/accounts\";\nimport { ExtendedAccount } from \"../client\";\n\n\nexport async function getCoreWalletAccount(network: Network) {\n const provider = (window as any).avalanche\n if (!provider) throw new Error('Core extension not found. Please install Core. https://core.app')\n\n // Request account access\n await provider.request({ method: 'eth_requestAccounts', params: [] });\n\n const { evm, XP } = await provider.request({\n \"method\": \"avalanche_getAccountPubKey\",\n \"params\": []\n });\n const addresses = getAddressesFromCoreExtension({ evm, XP }, network);\n\n return {\n pChainAddress: addresses.P,\n cSign: async (parameters: { hash: Hex }) => {\n const { hash } = parameters;\n return await provider.request({\n \"method\": \"eth_sign\",\n \"params\": [\n addresses.C,\n hash\n ]\n });\n },\n ...toAccount({\n address: addresses.C,\n publicKey: evm,\n\n // Core Wallet handles signing + broadcasting via eth_sendTransaction.\n // signTransaction (returning a serialized signed tx) is not supported.\n async signTransaction(_transaction) {\n throw new Error(\n 'Core Wallet does not support signTransaction (sign-only without broadcast). ' +\n 'Use eth_sendTransaction via the provider instead.'\n );\n },\n\n async signMessage({ message }) {\n let messageHex: string;\n\n if (typeof message === 'string') {\n messageHex = toHex(message);\n } else {\n messageHex = typeof message.raw === 'string'\n ? message.raw\n : toHex(message.raw);\n }\n\n return await provider.request({\n method: 'personal_sign',\n params: [messageHex, addresses.C]\n });\n },\n\n async sign(parameters: { hash: Hex }) {\n const { hash } = parameters;\n return await provider.request({\n method: 'avalanche_signMessage',\n params: [hash]\n });\n },\n\n async signTypedData(parameters: any) {\n const { domain, types, primaryType, message } = parameters;\n return await provider.request({\n method: 'eth_signTypedData_v4',\n params: [\n addresses.C,\n JSON.stringify({ domain, types, primaryType, message })\n ]\n });\n }\n })\n } as ExtendedAccount;\n}\n","import { Account, bytesToHex, Hex, hexToBytes, parseEventLogs } from \"viem\";\nimport { ExtendedWalletClient } from \"./client\";\nimport { Config, pChainChainID } from \"./config\";\nimport { SafeSuzakuContract } from \"./lib/viemUtils\";\nimport { encodeNodeID, NodeId, parseNodeID, retryWhileError } from \"./lib/utils\";\nimport { logger } from './lib/logger';\nimport { color } from \"./lib/safeColors\";\nimport { collectSignatures, getSigningSubnetIdFromWarpMessage, packL1ValidatorRegistration, packL1ValidatorWeightMessage, packWarpIntoAccessList } from \"./lib/warpUtils\";\nimport { getCurrentValidators, registerL1Validator, setValidatorWeight } from \"./lib/pChainUtils\";\nimport { pipe, R } from \"@mobily/ts-belt\";\nimport { GetRegistrationJustification } from \"./lib/justification\";\nimport { utils } from \"@avalabs/avalanchejs\";\nimport { getValidationUptimeMessage } from \"./uptime\";\n\nexport async function updateStakingConfig(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n minimumStakeAmount: bigint,\n maximumStakeAmount: bigint,\n minimumStakeDuration: bigint,\n minimumDelegationFeeBips: number,\n maximumStakeMultiplier: number\n) {\n logger.log(\"Updating staking config...\");\n\n const hash = await kiteStakingManager.safeWrite.updateStakingConfig([\n minimumStakeAmount,\n maximumStakeAmount,\n minimumStakeDuration,\n minimumDelegationFeeBips,\n maximumStakeMultiplier\n ]);\n\n logger.log(\"updateStakingConfig executed successfully, tx hash:\", hash);\n return hash;\n}\n\nexport async function initiateValidatorRegistration(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n nodeId: NodeId,\n blsKey: Hex,\n remainingBalanceOwner: [number, Hex[]],\n disableOwner: [number, Hex[]],\n delegationFeeBips: number,\n minStakeDuration: bigint,\n rewardRecipient: Hex,\n initialStake: bigint\n) {\n logger.log(\"Initiating validator registration...\");\n\n // Parse NodeID to bytes32 format\n const nodeIdHex32 = parseNodeID(nodeId, false)\n\n const hash = await kiteStakingManager.safeWrite.initiateValidatorRegistration(\n [\n nodeIdHex32,\n blsKey,\n { threshold: remainingBalanceOwner[0], addresses: remainingBalanceOwner[1] },\n { threshold: disableOwner[0], addresses: disableOwner[1] },\n delegationFeeBips,\n minStakeDuration,\n rewardRecipient\n ],\n {\n value: initialStake,\n chain: null\n }\n );\n\n logger.log(\"initiateValidatorRegistration executed successfully, tx hash:\", hash);\n return hash;\n}\n\nexport async function initiateDelegatorRegistration(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n nodeId: NodeId,\n rewardRecipient: Hex,\n stakeAmount: bigint\n): Promise<Hex> {\n logger.log(\"Initiating delegator registration...\");\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Parse NodeID to bytes format (20 bytes, no padding)\n const nodeIdBytes = parseNodeID(nodeId, false);\n\n // Get validationID from ValidatorManager\n const validationID = await validatorManager.read.getNodeValidationID([nodeIdBytes]);\n\n const txHash = await kiteStakingManager.safeWrite.initiateDelegatorRegistration([\n validationID,\n rewardRecipient\n ], {\n value: stakeAmount,\n chain: null\n });\n\n logger.log(\"initiateDelegatorRegistration executed successfully, tx hash:\", txHash);\n return txHash;\n}\n\nexport async function initiateDelegatorRemoval(\n client: ExtendedWalletClient,\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n delegationID: Hex,\n includeUptimeProof: boolean,\n rpcUrl?: string\n): Promise<Hex> {\n logger.log(\"Initiating delegator removal...\");\n\n // messageIndex is always 0 for KiteStakingManager\n const messageIndex = 0;\n\n // If uptime proof is required, fetch and pack it into access list\n let accessList: Array<{ address: Hex; storageKeys: Hex[] }> | undefined = undefined;\n\n if (includeUptimeProof) {\n if (!rpcUrl) {\n logger.error(color.red(\"RPC URL is required when includeUptimeProof is true.\"));\n process.exit(1);\n }\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Get delegator info to get validationID\n const delegatorInfo = await kiteStakingManager.read.getDelegatorInfo([delegationID]);\n const validationID = delegatorInfo.validationID;\n\n // Get the validator info to get nodeID\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeId = encodeNodeID(validator.nodeID as Hex);\n\n // Get the uptime message\n const warpNetworkID = client.network === 'fuji' ? 5 : 1;\n const sourceChainID = utils.base58check.encode(hexToBytes(settings.uptimeBlockchainID));\n logger.log(\"\\nGetting validation uptime message...\");\n const signedUptimeMessage = await getValidationUptimeMessage(\n client,\n rpcUrl,\n nodeId,\n warpNetworkID,\n sourceChainID\n );\n\n // Ensure signedUptimeMessage has 0x prefix\n const signedUptimeMessageHex = signedUptimeMessage.startsWith('0x') ? signedUptimeMessage : `0x${signedUptimeMessage}`;\n\n // Pack uptime message into access list\n const signedUptimeMessageBytes = hexToBytes(signedUptimeMessageHex as Hex);\n const uptimeAccessList = packWarpIntoAccessList(signedUptimeMessageBytes);\n accessList = [uptimeAccessList[0]];\n }\n\n const hash = await kiteStakingManager.safeWrite.initiateDelegatorRemoval(\n [delegationID, includeUptimeProof, messageIndex],\n accessList ? {\n account: client.account!,\n chain: null,\n accessList\n } : undefined\n );\n\n logger.log(\"initiateDelegatorRemoval executed successfully, tx hash:\", hash);\n return hash;\n}\n\nexport async function initiateValidatorRemoval(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n nodeId: NodeId,\n includeUptimeProof: boolean\n) {\n logger.log(\"Initiating validator removal...\");\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Parse NodeID to bytes format (20 bytes, no padding)\n const nodeIdBytes = parseNodeID(nodeId, false);\n\n // Get validationID from ValidatorManager\n const validationID = await validatorManager.read.getNodeValidationID([nodeIdBytes]);\n\n // messageIndex is always 0 for KiteStakingManager\n const messageIndex = 0;\n\n const hash = await kiteStakingManager.safeWrite.initiateValidatorRemoval([\n validationID,\n includeUptimeProof,\n messageIndex\n ]);\n\n logger.log(\"initiateValidatorRemoval executed successfully, tx hash:\", hash);\n return hash;\n}\n\nexport async function completeDelegatorRegistration(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n initiateTxHash: Hex,\n rpcUrl: string\n): Promise<Hex> {\n logger.log(\"Completing delegator registration...\");\n\n // Wait for the initiate delegator registration transaction to be confirmed\n const receipt = await client.waitForTransactionReceipt({ hash: initiateTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initiateTxHash} reverted, pls resend the initiate delegator registration transaction`);\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Parse InitiatedDelegatorRegistration event from KiteStakingManager\n const initiatedDelegatorRegistration = parseEventLogs({\n abi: kiteStakingManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedDelegatorRegistration'\n })[0];\n\n if (!initiatedDelegatorRegistration) {\n logger.error(color.red(\"No InitiatedDelegatorRegistration event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n const delegationID = initiatedDelegatorRegistration.args.delegationID;\n const validationID = initiatedDelegatorRegistration.args.validationID;\n const validatorWeight = initiatedDelegatorRegistration.args.validatorWeight;\n const nonce = initiatedDelegatorRegistration.args.nonce;\n const setWeightMessageID = initiatedDelegatorRegistration.args.setWeightMessageID;\n\n // Get the validator info to get nodeID\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeId = encodeNodeID(validator.nodeID as Hex);\n\n // Get warp logs to find the weight message\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLogs[0].args.message);\n\n const weightWarpLog = warpLogs.find((w) => w.args.messageID === setWeightMessageID);\n if (!weightWarpLog) {\n logger.error(color.red(\"No matching warp message found for setWeightMessageID, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // Get the unsigned L1ValidatorWeightMessage\n const unsignedL1ValidatorWeightMessage = weightWarpLog.args.message;\n\n // Aggregate signatures from validators for the weight message\n logger.log(\"\\nCollecting signatures for the L1ValidatorWeightMessage from the Validator Manager chain...\");\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n logger.log(\"\\nSetting validator weight on P-Chain...\");\n pipe(await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tap(pChainSetWeightTxId => logger.log(\"SetL1ValidatorWeightTx executed on P-Chain:\", pChainSetWeightTxId)),\n R.tapError(err => {\n if (!err.includes('warp message contains stale nonce')) {\n logger.error(err);\n process.exit(1);\n }\n logger.warn(color.yellow(`Warning: Skipping SetL1ValidatorWeightTx for validationID ${validationID} due to stale nonce (already issued)`));\n }));\n\n // Pack and sign the P-Chain warp message for weight update\n const validationIDBytes = hexToBytes(validationID as Hex);\n const unsignedPChainWeightWarpMsg = packL1ValidatorWeightMessage(validationIDBytes, BigInt(nonce), BigInt(validatorWeight), client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWeightWarpMsgHex = bytesToHex(unsignedPChainWeightWarpMsg);\n\n // Aggregate signatures from validators for the P-Chain weight message\n logger.log(\"\\nAggregating signatures for the L1ValidatorWeightMessage from the P-Chain...\");\n const signedPChainWeightMessage = await collectSignatures({ network: client.network, message: unsignedPChainWeightWarpMsgHex, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the P-Chain\");\n\n // Get the uptime message\n const warpNetworkID = client.network === 'fuji' ? 5 : 1;\n const sourceChainID = utils.base58check.encode(hexToBytes(settings.uptimeBlockchainID));\n logger.log(\"\\nGetting validation uptime message...\");\n const signedUptimeMessage = await getValidationUptimeMessage(\n client,\n rpcUrl,\n nodeId,\n warpNetworkID,\n sourceChainID\n );\n\n // Ensure signedUptimeMessage has 0x prefix\n const signedUptimeMessageHex = signedUptimeMessage.startsWith('0x') ? signedUptimeMessage : `0x${signedUptimeMessage}`;\n\n // Pack both messages into access list\n // Convert both signed messages to bytes\n const signedPChainWeightWarpMsgBytes = hexToBytes(`0x${signedPChainWeightMessage}`);\n const signedUptimeMessageBytes = hexToBytes(signedUptimeMessageHex as Hex);\n\n // Pack both messages into separate access list objects\n const weightAccessList = packWarpIntoAccessList(signedPChainWeightWarpMsgBytes);\n const uptimeAccessList = packWarpIntoAccessList(signedUptimeMessageBytes);\n\n // Combine access lists as two separate objects in the array\n const combinedAccessList = [\n weightAccessList[0],\n uptimeAccessList[0]\n ];\n\n // messageIndex is always 0 for KiteStakingManager\n const messageIndex = 0;\n const uptimeMessageIndex = 1;\n\n logger.log(\"\\nCalling function completeDelegatorRegistration...\");\n const hash = await kiteStakingManager.safeWrite.completeDelegatorRegistration(\n [delegationID, messageIndex, uptimeMessageIndex],\n {\n account: client.account!,\n chain: null,\n accessList: combinedAccessList\n }\n );\n\n logger.log(\"completeDelegatorRegistration executed successfully, tx hash:\", hash);\n return hash;\n}\n\nexport async function completeDelegatorRemoval(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n initiateRemovalTxHash: Hex,\n rpcUrl: string,\n waitValidatorVisible: boolean,\n delegationIDs?: Hex[],\n initiateTxHash?: Hex\n): Promise<Hex> {\n logger.log(\"Completing delegator removal...\");\n\n // Wait for the initiate removal transaction to be confirmed\n const receipt = await client.waitForTransactionReceipt({ hash: initiateRemovalTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initiateRemovalTxHash} reverted, pls resend the removal transaction`);\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Parse InitiatedDelegatorRemoval events from KiteStakingManager\n const initiatedDelegatorRemovals = parseEventLogs({\n abi: kiteStakingManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedDelegatorRemoval'\n });\n\n if (initiatedDelegatorRemovals.length === 0) {\n logger.error(color.red(\"No InitiatedDelegatorRemoval event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // Filter by delegationIDs if provided\n const filteredRemovals = delegationIDs\n ? initiatedDelegatorRemovals.filter((e) => {\n const delegationID = e.args.delegationID;\n return delegationIDs.includes(delegationID);\n })\n : initiatedDelegatorRemovals;\n\n if (filteredRemovals.length === 0) {\n logger.error(color.red(\"No matching InitiatedDelegatorRemoval event found for the provided delegationIDs, verify the transaction hash and delegationIDs.\"));\n process.exit(1);\n }\n\n // Get warp logs\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n let lastHash: Hex | undefined;\n\n for (const event of filteredRemovals) {\n const delegationID = event.args.delegationID;\n const validationID = event.args.validationID;\n\n // Get the validator info to get nodeID\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeID = encodeNodeID(validator.nodeID as Hex);\n logger.log(`Processing removal for delegation ${delegationID}, node ${nodeID}`);\n\n // Get delegator info to find the registration block number\n const delegatorInfo = await kiteStakingManager.read.getDelegatorInfo([delegationID]);\n\n let addNodeBlockNumber = receipt.blockNumber;\n\n if (initiateTxHash) {\n const addNodeReceipt = await client.waitForTransactionReceipt({ hash: initiateTxHash, confirmations: 0 });\n if (addNodeReceipt.status === 'reverted') throw new Error(`Transaction ${initiateTxHash} reverted, pls use another initiate tx`);\n\n // Check if this delegationID is in the registration event\n const registrationEvents = parseEventLogs({\n abi: kiteStakingManager.abi,\n logs: addNodeReceipt.logs,\n eventName: 'InitiatedDelegatorRegistration'\n });\n\n if (registrationEvents.some((e) => e.args.delegationID === delegationID)) {\n addNodeBlockNumber = addNodeReceipt.blockNumber;\n }\n }\n\n // Look for InitiatedValidatorWeightUpdate events from ValidatorManager (similar to completeWeightUpdate)\n const initiatedValidatorWeightUpdates = parseEventLogs({\n abi: validatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorWeightUpdate'\n }).filter((e) => e.args.validationID === validationID);\n\n if (initiatedValidatorWeightUpdates.length === 0) {\n logger.error(color.red(`No InitiatedValidatorWeightUpdate event found for validationID ${validationID}`));\n continue;\n }\n\n const weightUpdateEvent = initiatedValidatorWeightUpdates[0];\n const warpLog = warpLogs.find((w) => w.args.messageID === weightUpdateEvent.args.weightUpdateMessageID);\n if (!warpLog) {\n logger.error(color.red(`No matching warp log found for weightUpdateMessageID ${weightUpdateEvent.args.weightUpdateMessageID}`));\n continue;\n }\n\n const unsignedL1ValidatorWeightMessage = warpLog.args.message;\n const weight = weightUpdateEvent.args.weight;\n const nonce = weightUpdateEvent.args.nonce;\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, unsignedL1ValidatorWeightMessage);\n\n // Aggregate signatures from validators for the weight message\n logger.log(\"\\nCollecting signatures for the L1ValidatorWeightMessage from the Validator Manager chain...\");\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n logger.log(\"\\nSetting validator weight on P-Chain...\");\n pipe(await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tap(pChainSetWeightTxId => logger.log(\"SetL1ValidatorWeightTx executed on P-Chain:\", pChainSetWeightTxId)),\n R.tapError(err => {\n if (!err.includes('warp message contains stale nonce')) {\n logger.error(err);\n process.exit(1);\n }\n logger.warn(color.yellow(`Warning: Skipping SetL1ValidatorWeightTx for validationID ${validationID} due to stale nonce (already issued)`));\n }));\n\n // Pack and sign the P-Chain warp message for weight update\n const validationIDBytes = hexToBytes(validationID as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorWeightMessage(validationIDBytes, BigInt(nonce), BigInt(weight), client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators for the P-Chain weight message\n logger.log(\"\\nAggregating signatures for the L1ValidatorWeightMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the P-Chain\");\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n // messageIndex is always 0 for KiteStakingManager\n const messageIndex = 0;\n\n logger.log(\"\\nCalling function completeDelegatorRemoval...\");\n const hash = await kiteStakingManager.safeWrite.completeDelegatorRemoval(\n [delegationID, messageIndex],\n {\n account: client.account!,\n chain: null,\n accessList\n }\n );\n\n if (waitValidatorVisible) {\n const subnetIDHex = await validatorManager.read.subnetID();\n logger.log(\"Waiting for the validator to be removed from the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, utils.base58check.encode(hexToBytes(subnetIDHex)))).some((v) => v.nodeID === nodeID), 5000, 180000, (res) => res === false);\n }\n\n logger.log(\"completeDelegatorRemoval executed successfully, tx hash:\", hash);\n lastHash = hash;\n }\n\n if (!lastHash) {\n throw new Error(\"No delegator removals processed\");\n }\n\n return lastHash;\n}\n\nexport async function completeValidatorRegistration(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n blsProofOfPossession: string,\n initiateTxHash: Hex,\n initialBalance: bigint,\n waitValidatorVisible: boolean\n) {\n logger.log(\"Completing validator registration...\");\n\n // Wait for transaction receipt to extract warp message and validation ID\n const receipt = await client.waitForTransactionReceipt({ hash: initiateTxHash });\n\n // Parse InitiatedStakingValidatorRegistration event from KiteStakingManager\n const initiatedStakingRegistration = parseEventLogs({\n abi: kiteStakingManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedStakingValidatorRegistration'\n })[0];\n\n if (!initiatedStakingRegistration) {\n logger.error(color.red(\"No InitiatedStakingValidatorRegistration event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Parse InitiatedValidatorRegistration event from ValidatorManager\n const initiatedValidatorRegistration = parseEventLogs({\n abi: validatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorRegistration'\n })[0];\n\n if (!initiatedValidatorRegistration) {\n logger.error(color.red(\"No InitiatedValidatorRegistration event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // messageIndex is always 0 for KiteStakingManager\n const messageIndex = 0;\n\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n })[0];\n\n if (!warpLogs) {\n logger.error(color.red(\"No IWarpMessenger event found in the transaction logs.\"));\n process.exit(1);\n }\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLogs.args.message);\n\n const validationIDHex = initiatedValidatorRegistration.args.validationID;\n const nodeId = encodeNodeID(initiatedValidatorRegistration.args.nodeID as Hex); // Convert bytes20 to NodeID format\n\n // Check if the node is still registered as a validator on the P-Chain\n const subnetIDHex = await validatorManager.read.subnetID();\n const subnetID = utils.base58check.encode(hexToBytes(subnetIDHex));\n const isValidator = (await getCurrentValidators(client, subnetID)).some((v) => v.nodeID === nodeId);\n\n if (isValidator) {\n logger.log(color.yellow(\"Node is already registered as a validator on the P-Chain, skipping registerL1Validator call.\"));\n } else {\n // Get the unsigned warp message from the receipt\n const RegisterL1ValidatorUnsignedWarpMsg = warpLogs.args.message;\n\n // Collect signatures for the warp message\n logger.log(\"\\nCollecting signatures for the L1ValidatorRegistrationMessage from the Validator Manager chain...\");\n const signedMessage = await collectSignatures({ network: client.network, message: RegisterL1ValidatorUnsignedWarpMsg, signingSubnetId });\n\n // Register validator on P-Chain\n logger.log(\"\\nRegistering validator on P-Chain...\");\n pipe(await registerL1Validator({\n client: pchainClient,\n blsProofOfPossession: blsProofOfPossession,\n signedMessage,\n initialBalance: initialBalance\n }),\n R.tap(pChainTxId => logger.log(\"RegisterL1ValidatorTx executed on P-Chain:\", pChainTxId)),\n R.tapError(err => { logger.error(err); process.exit(1) })\n );\n }\n\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationIDHex as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorRegistration(validationIDBytes, true, client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n logger.log(\"\\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n logger.log(\"\\nCalling function completeValidatorRegistration...\");\n const hash = await kiteStakingManager.safeWrite.completeValidatorRegistration(\n [messageIndex],\n {\n account: client.account!,\n chain: null,\n accessList\n }\n );\n\n // Wait until the validator is visible on the P-Chain\n if (waitValidatorVisible) {\n logger.log(\"Waiting for the validator to be visible on the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, utils.base58check.encode(hexToBytes(subnetIDHex)))).some((v) => v.nodeID === nodeId), 5000, 180000, (res) => res === true);\n }\n\n logger.log(\"completeValidatorRegistration executed successfully, tx hash:\", hash);\n return hash;\n}\n\nexport async function completeValidatorRemoval(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n config: Config,\n initiateRemovalTxHash: Hex,\n waitValidatorVisible: boolean,\n nodeIDs?: NodeId[],\n initiateTxHash?: Hex[]\n) {\n logger.log(\"Completing validator removal...\");\n\n // Wait for the initiate removal transaction to be confirmed\n const receipt = await client.waitForTransactionReceipt({ hash: initiateRemovalTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initiateRemovalTxHash} reverted, pls resend the removal transaction`);\n\n // Get ValidatorManager from settings\n const settings = await kiteStakingManager.read.getStakingManagerSettings();\n const validatorManager = await config.contracts.ValidatorManager(settings.manager);\n\n // Parse InitiatedValidatorRemoval events from ValidatorManager\n const initiatedValidatorRemovals = parseEventLogs({\n abi: validatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorRemoval'\n });\n\n if (initiatedValidatorRemovals.length === 0) {\n logger.error(color.red(\"No InitiatedValidatorRemoval event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // Filter by nodeIDs if provided\n // Note: InitiatedValidatorRemoval event doesn't include nodeID, so we need to get it from the validator\n const filteredRemovals = nodeIDs\n ? (await Promise.all(\n initiatedValidatorRemovals.map(async (e) => {\n const validator = await validatorManager.read.getValidator([e.args.validationID]);\n const nodeId = encodeNodeID(validator.nodeID as Hex);\n return { event: e, nodeId };\n })\n )).filter(({ nodeId }) => nodeIDs.includes(nodeId)).map(({ event }) => event)\n : initiatedValidatorRemovals;\n\n if (filteredRemovals.length === 0) {\n logger.error(color.red(\"No matching InitiatedValidatorRemoval event found for the provided NodeIDs, verify the transaction hash and NodeIDs.\"));\n process.exit(1);\n }\n\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n const subnetIDHex = await validatorManager.read.subnetID();\n const subnetID = utils.base58check.encode(hexToBytes(subnetIDHex));\n const currentValidators = await getCurrentValidators(client, subnetID);\n\n for (const event of filteredRemovals) {\n const eventIndex = filteredRemovals.indexOf(event);\n const validationID = event.args.validationID;\n\n // Get nodeID from validator - ValidatorManager InitiatedValidatorRemoval doesn't include nodeID\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeID = encodeNodeID(validator.nodeID as Hex);\n logger.log(`Processing removal for node ${nodeID}`);\n\n // Find the corresponding warp log\n // ValidatorManager InitiatedValidatorRemoval event has validatorWeightMessageID field\n const warpLog = warpLogs.find((w) => {\n // Match by messageID - ValidatorManager event has validatorWeightMessageID\n return w.args.messageID === event.args.validatorWeightMessageID;\n });\n\n if (!warpLog) {\n logger.error(color.red(`No matching warp log found for validationID ${validationID}`));\n continue;\n }\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLog.args.message);\n\n let addNodeBlockNumber = receipt.blockNumber;\n\n if (initiateTxHash && initiateTxHash.length > eventIndex) {\n const addNodeReceipt = await client.waitForTransactionReceipt({ hash: initiateTxHash[eventIndex], confirmations: 0 });\n if (addNodeReceipt.status === 'reverted') throw new Error(`Transaction ${initiateTxHash[eventIndex]} reverted, pls use another initiate tx`);\n addNodeBlockNumber = addNodeReceipt.blockNumber;\n }\n\n // Check if the node is still registered as a validator on the P-Chain\n const isValidator = currentValidators.some((v) => v.nodeID === nodeID);\n if (!isValidator) {\n logger.log(color.yellow(\"Node is not registered as a validator on the P-Chain.\"));\n } else {\n // Get the unsigned L1ValidatorWeightMessage with weight=0 generated by the ValidatorManager from the receipt\n const unsignedL1ValidatorWeightMessage = warpLog.args.message;\n\n // Aggregate signatures from validators\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n pipe(\n await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tapError(\n (error) => {\n throw new Error(\"SetL1ValidatorWeightTx failed on P-Chain: \" + error + '\\n');\n }),\n R.tap((txId) => {\n logger.log(\"SetL1ValidatorWeightTx executed on P-Chain: \" + txId);\n })\n );\n }\n\n // Get justification for original register validator tx\n const justification = await GetRegistrationJustification(nodeID, validationID, subnetID, client, addNodeBlockNumber);\n if (!justification) {\n throw new Error(\"Justification not found for validator removal\");\n }\n\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationID);\n const unsignedPChainWarpMsg = packL1ValidatorRegistration(validationIDBytes, false, client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, justification: bytesToHex(justification), signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorRegistrationMessage from the P-Chain\");\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n // messageIndex is always 0 for KiteStakingManager\n const messageIndex = 0;\n // Execute completeValidatorRemoval transaction\n logger.log(\"Executing completeValidatorRemoval transaction...\");\n // Checking if the node was only in the vmc or also in the stakingManager\n const completeHash = await kiteStakingManager.safeWrite.completeValidatorRemoval(\n [messageIndex],\n {\n account: client.account!,\n chain: null,\n accessList\n }\n );\n\n if (waitValidatorVisible) {\n logger.log(\"Waiting for the validator to be removed from the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, utils.base58check.encode(hexToBytes(subnetIDHex)))).some((v) => v.nodeID === nodeID), 5000, 180000, (res) => res === false);\n }\n\n logger.log(\"completeValidatorRemoval executed successfully, tx hash:\", completeHash);\n }\n}\n\n// ─── Info Aggregators ────────────────────────────────────────────────────────\n\nconst NANOS_PER_AVAX = 1_000_000_000n;\n\nfunction formatAvax(wei: bigint): string {\n const whole = wei / NANOS_PER_AVAX;\n const frac = wei % NANOS_PER_AVAX;\n return frac === 0n\n ? `${whole} AVAX`\n : `${whole}.${frac.toString().padStart(9, '0').replace(/0+$/, '')} AVAX`;\n}\n\nfunction formatDuration(seconds: bigint): string {\n const s = Number(seconds);\n if (s < 60) return `${s}s`;\n if (s < 3600) return `${Math.floor(s / 60)}m ${s % 60}s`;\n if (s < 86400) return `${Math.floor(s / 3600)}h ${Math.floor((s % 3600) / 60)}m`;\n return `${Math.floor(s / 86400)}d ${Math.floor((s % 86400) / 3600)}h`;\n}\n\nfunction formatTimestamp(ts: bigint): string {\n if (ts === 0n) return 'never';\n return new Date(Number(ts) * 1000).toISOString();\n}\n\n/** Aggregate all global-level information from KiteStakingManager */\nexport async function getKiteStakingManagerInfo(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager']\n) {\n const [\n config,\n settings,\n rewardCalculator,\n rewardVault,\n owner,\n pendingOwner,\n bipsFactor,\n maxDelegationFeeBips,\n maxStakeMultiplierLimit,\n ] = await Promise.all([\n kiteStakingManager.read.getStakingConfig(),\n kiteStakingManager.read.getStakingManagerSettings(),\n kiteStakingManager.read.getRewardCalculator(),\n kiteStakingManager.read.getRewardVault(),\n kiteStakingManager.read.owner(),\n kiteStakingManager.read.pendingOwner(),\n kiteStakingManager.read.BIPS_CONVERSION_FACTOR(),\n kiteStakingManager.read.MAXIMUM_DELEGATION_FEE_BIPS(),\n kiteStakingManager.read.MAXIMUM_STAKE_MULTIPLIER_LIMIT(),\n ]);\n\n return {\n // Staking config\n minimumStakeAmount: config[0].toString(),\n maximumStakeAmount: config[1].toString(),\n minimumStakeDuration: config[2].toString(),\n minimumDelegationFeeBips: config[3].toString(),\n maximumStakeMultiplier: config[4].toString(),\n weightToValueFactor: config[5].toString(),\n // Addresses\n validatorManager: settings.manager,\n rewardCalculator,\n rewardVault,\n uptimeBlockchainID: settings.uptimeBlockchainID,\n // Ownership\n owner,\n pendingOwner,\n // Protocol constants\n BIPS_CONVERSION_FACTOR: bipsFactor,\n MAXIMUM_DELEGATION_FEE_BIPS: maxDelegationFeeBips,\n MAXIMUM_STAKE_MULTIPLIER_LIMIT: maxStakeMultiplierLimit,\n // Human-readable summaries\n formatted: {\n minimumStakeAmount: formatAvax(config[0]),\n maximumStakeAmount: formatAvax(config[1]),\n minimumStakeDuration: formatDuration(config[2]),\n minimumDelegationFeeBips: `${config[3] / 100}%`,\n maximumStakeMultiplier: `${config[4]}x`,\n },\n };\n}\n\n/** Aggregate all information for a specific validator by validationID */\nexport async function getValidatorFullInfo(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n validationID: Hex\n) {\n const [validator, pendingRewards, rewardInfo] = await Promise.all([\n kiteStakingManager.read.getStakingValidator([validationID]),\n kiteStakingManager.read.getValidatorPendingRewards([validationID]),\n kiteStakingManager.read.getValidatorRewardInfo([validationID]),\n ]);\n\n const [rewardRecipient, accruedRewards] = rewardInfo;\n\n return {\n validationID,\n // PoS validator info\n owner: validator.owner,\n delegationFeeBips: validator.delegationFeeBips,\n minStakeDuration: validator.minStakeDuration.toString(),\n uptimeSeconds: validator.uptimeSeconds.toString(),\n lastRewardClaimTime: validator.lastRewardClaimTime.toString(),\n lastClaimUptimeSeconds: validator.lastClaimUptimeSeconds.toString(),\n // Pending rewards\n stakingReward: pendingRewards[0].toString(),\n delegationFees: pendingRewards[1].toString(),\n totalPendingReward: pendingRewards[2].toString(),\n // Reward accounting\n rewardRecipient,\n accruedRewards: accruedRewards.toString(),\n // Human-readable\n formatted: {\n delegationFeeBips: `${validator.delegationFeeBips / 100}%`,\n minStakeDuration: formatDuration(validator.minStakeDuration),\n uptime: formatDuration(validator.uptimeSeconds),\n lastRewardClaimTime: formatTimestamp(validator.lastRewardClaimTime),\n stakingReward: formatAvax(pendingRewards[0]),\n delegationFees: formatAvax(pendingRewards[1]),\n totalPendingReward: formatAvax(pendingRewards[2]),\n accruedRewards: formatAvax(accruedRewards),\n },\n };\n}\n\n/** Aggregate all information for a specific delegator by delegationID */\nexport async function getDelegatorFullInfo(\n kiteStakingManager: SafeSuzakuContract['KiteStakingManager'],\n delegationID: Hex\n) {\n const [delegator, pendingRewards, rewardInfo] = await Promise.all([\n kiteStakingManager.read.getDelegatorInfo([delegationID]),\n kiteStakingManager.read.getDelegatorPendingRewards([delegationID]),\n kiteStakingManager.read.getDelegatorRewardInfo([delegationID]),\n ]);\n\n const [rewardRecipient, accruedRewards] = rewardInfo;\n\n return {\n delegationID,\n // Delegator info\n status: delegator.status,\n owner: delegator.owner,\n validationID: delegator.validationID,\n weight: delegator.weight.toString(),\n startTime: delegator.startTime.toString(),\n startingNonce: delegator.startingNonce.toString(),\n endingNonce: delegator.endingNonce.toString(),\n lastRewardClaimTime: delegator.lastRewardClaimTime.toString(),\n lastClaimUptimeSeconds: delegator.lastClaimUptimeSeconds.toString(),\n // Pending rewards\n grossReward: pendingRewards[0].toString(),\n validatorFee: pendingRewards[1].toString(),\n netPendingReward: pendingRewards[2].toString(),\n // Reward accounting\n rewardRecipient,\n accruedRewards: accruedRewards.toString(),\n // Human-readable\n formatted: {\n startTime: formatTimestamp(delegator.startTime),\n lastRewardClaimTime: formatTimestamp(delegator.lastRewardClaimTime),\n grossReward: formatAvax(pendingRewards[0]),\n validatorFee: formatAvax(pendingRewards[1]),\n netPendingReward: formatAvax(pendingRewards[2]),\n accruedRewards: formatAvax(accruedRewards),\n },\n };\n}\n","import { packValidationUptimeMessage, collectSignatures, packWarpIntoAccessList } from \"./lib/warpUtils\";\nimport { bytesToHex } from '@noble/hashes/utils';\nimport { hexToBytes, Hex } from 'viem';\nimport { SafeSuzakuContract } from './lib/viemUtils';\nimport { ExtendedClient, Network } from \"./client\";\nimport { logger } from './lib/logger';\nimport { getCurrentValidators, validatedBy } from \"./lib/pChainUtils\";\nimport { utils } from \"@avalabs/avalanchejs\";\nimport { cb58ToHex } from \"./lib/utils\";\n\ntype getCurrentValidatorsRpcResponse = {\n result: {\n \"validators\": {\n \"validationID\": string,\n \"nodeID\": string,\n \"weight\": number,\n \"startTimestamp\": number,\n \"isActive\": boolean,\n \"isL1Validator\": boolean,\n \"isConnected\": boolean,\n \"uptimePercentage\": number,\n \"uptimeSeconds\": number\n }[],\n }\n error?: any\n}\n\nexport async function getCurrentValidatorsFromNode(rpcUrl: string) {\n const response = await fetch(rpcUrl + \"/validators\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"validators.getCurrentValidators\",\n params: {\n nodeIDs: [],\n },\n id: 1,\n }),\n });\n const data = await response.json() as getCurrentValidatorsRpcResponse;\n if (data.error) logger.exitError([\"Error from validators.getCurrentValidators:\", data.error])\n return data.result.validators;\n}\n\nexport async function getValidationUptimeMessage(\n client: ExtendedClient,\n rpcUrl: string,\n nodeId: string,\n networkID: number,\n sourceChainID: string\n) {\n // Perform a POST request to rpcUrl/validators, payload is {jsonrpc: \"2.0\", method: \"validators.getCurrentValidators\", params: { nodeIDs: [...] }, id: 1}\n const validators = await getCurrentValidatorsFromNode(rpcUrl);\n if (!validators[0]) logger.exitError([\"Validator not found for nodeID: \", nodeId])\n const validator = validators[0];\n const validationID = validator.validationID;\n const uptimeSeconds = validator.uptimeSeconds;\n logger.log(`Validator ${nodeId} has validationID ${validationID} and uptimeSeconds ${uptimeSeconds}`);\n\n const unsignedValidationUptimeMessage = packValidationUptimeMessage(validationID, uptimeSeconds, networkID, sourceChainID);\n const unsignedValidationUptimeMessageHex = bytesToHex(unsignedValidationUptimeMessage);\n logger.log(\"Unsigned Validation Uptime Message: \", unsignedValidationUptimeMessageHex);\n\n const signingSubnetId = await validatedBy(client, sourceChainID)\n const signedValidationUptimeMessage = await collectSignatures({ network: client.network, message: unsignedValidationUptimeMessageHex, signingSubnetId });\n logger.log(\"Signed Validation Uptime Message: \", signedValidationUptimeMessage);\n\n return signedValidationUptimeMessage;\n}\n\n\nexport async function computeValidatorUptime(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n signedUptimeHex: Hex\n) {\n\n // 2) Convert aggregator signature => bytes => accessList\n const warpBytes = hexToBytes(signedUptimeHex);\n const accessList = packWarpIntoAccessList(warpBytes);\n\n const txHash = await uptimeTracker.write.computeValidatorUptime([0], { accessList, chain: null });\n\n logger.log(\"computeValidatorUptime done, tx hash:\", txHash);\n return txHash;\n}\n\n\n// New orchestrator function\nexport async function reportAndSubmitValidatorUptime(\n // Parameters for getting the uptime message\n client: ExtendedClient,\n rpcUrl: string,\n nodeId: string,\n sourceChainID: string, // The chain ID for which uptime is being reported\n // Parameters for submitting to the contract\n uptimeTracker: SafeSuzakuContract['UptimeTracker']\n) {\n logger.log(`Starting validator uptime report for NodeID: ${nodeId} on source chain ${sourceChainID} via RPC ${rpcUrl}`);\n logger.log(`Target UptimeTracker: ${uptimeTracker.address}`);\n\n const warpNetworkID = client.network === 'mainnet' ? 1 : 5; // Mainnet or Fuji\n\n // Step 1: Get the signed validation uptime message\n let signedUptimeHex = await getValidationUptimeMessage(\n client,\n rpcUrl,\n nodeId,\n warpNetworkID,\n sourceChainID\n );\n\n logger.log(`Raw Signed Uptime Message from getValidationUptimeMessage: ${signedUptimeHex}`); // Log raw value for debugging\n\n // Ensure signedUptimeHex is a string and normalize it to have \"0x\" prefix\n if (typeof signedUptimeHex === 'string') {\n if (!signedUptimeHex.startsWith('0x')) {\n signedUptimeHex = `0x${signedUptimeHex}`; // Prepend \"0x\" if missing\n }\n } else {\n // If it's not a string at all (e.g., undefined, null from a failed collectSignatures)\n logger.error(\"getValidationUptimeMessage did not return a string for the signed message.\");\n throw new Error(\"Failed to obtain a valid signed uptime hex message (not a string).\");\n }\n\n // Now the check should pass if it was only about the \"0x\" prefix\n if (!signedUptimeHex || typeof signedUptimeHex !== 'string' || !signedUptimeHex.startsWith('0x') || signedUptimeHex.length <= 2) { // Added length check\n // This error should ideally not be hit if the above normalization works\n // and if getValidationUptimeMessage returns a non-empty hex string.\n logger.error(`Problematic signedUptimeHex after normalization: '${signedUptimeHex}'`);\n throw new Error(\"Failed to obtain a valid signed uptime hex message (post-normalization check failed).\");\n }\n\n logger.log(`\\nStep 1 complete. Normalized Signed Uptime Hex: ${signedUptimeHex}`);\n\n // Step 2: Submit this message to the UptimeTracker contract\n logger.log(\"\\nStep 2: Submitting uptime to the UptimeTracker contract...\");\n const txHash = await computeValidatorUptime(\n uptimeTracker,\n signedUptimeHex as Hex\n );\n\n logger.log(\"\\nValidator uptime report and submission complete.\");\n logger.log(\"Final Transaction Hash:\", txHash);\n return txHash;\n}\n\n/**\n * Compute uptime for an operator at a specific epoch\n */\nexport async function computeOperatorUptimeAtEpoch(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n operator: Hex,\n epoch: number\n) {\n\n\n const txHash = await uptimeTracker.safeWrite.computeOperatorUptimeAt([operator, epoch]);\n\n logger.log(`computeOperatorUptimeAt for epoch ${epoch} done, tx hash: ${txHash}`);\n return txHash;\n}\n\n/**\n * Compute uptime for an operator across multiple epochs\n */\nexport async function computeOperatorUptimeForEpochs(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n operator: Hex,\n startEpoch: number,\n endEpoch: number,\n initialNonce?: number\n) {\n\n let currentNonce = initialNonce ?? 0;\n\n for (let epoch = startEpoch; epoch <= endEpoch; epoch++) {\n await uptimeTracker.safeWrite.computeOperatorUptimeAt([operator, epoch]);\n currentNonce++;\n }\n}\n\n/**\n * Get validator uptime for a specific epoch\n */\nexport async function getValidatorUptimeForEpoch(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n validationID: Hex,\n epoch: number\n) {\n return await uptimeTracker.read.validatorUptimePerEpoch(\n [epoch, validationID]\n );\n}\n\n/**\n * Check if validator uptime is set for a specific epoch\n */\nexport async function isValidatorUptimeSetForEpoch(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n validationID: Hex,\n epoch: number\n) {\n return await uptimeTracker.read.isValidatorUptimeSet(\n [epoch, validationID]\n );\n}\n\n/**\n * Get operator uptime for a specific epoch\n */\nexport async function getOperatorUptimeForEpoch(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n operator: Hex,\n epoch: number\n) {\n return await uptimeTracker.read.operatorUptimePerEpoch(\n [epoch, operator]\n );\n}\n\n/**\n * Check if operator uptime is set for a specific epoch\n */\nexport async function isOperatorUptimeSetForEpoch(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n operator: Hex,\n epoch: number\n) {\n return await uptimeTracker.read.isOperatorUptimeSet(\n [epoch, operator]\n );\n}\n\n/**\n * Get last uptime checkpoint for a validator\n */\nexport async function getLastUptimeCheckpoint(\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n validationID: Hex\n) {\n return await uptimeTracker.read.getLastUptimeCheckpoint(\n [validationID]\n );\n}\n\n/**\n * Check if all validators from all operators have reported uptime for the epoch\n */\nexport async function reportAllValidatorsUptime(\n client: ExtendedClient,\n uptimeTracker: SafeSuzakuContract['UptimeTracker'],\n middleware: SafeSuzakuContract['L1Middleware'],\n rpcUrl: string,\n sourceChainID: string\n) {\n\n const targetEpoch = Number(await middleware.read.getCurrentEpoch());\n logger.log(`Checking uptime status for epoch ${targetEpoch}...`);\n\n const operators = await middleware.read.getAllOperators();\n if (operators.length === 0) {\n logger.log(\"No operators found.\");\n return;\n }\n const currentValidators = await getCurrentValidatorsFromNode(rpcUrl);\n\n if (currentValidators.length === 0) {\n logger.log(\"No validators found for any operator.\");\n return;\n }\n\n // Check uptime status and get validator details in parallel structure\n const uptimeStatus = await uptimeTracker.multicall(\n currentValidators.map(v => ({ name: 'isValidatorUptimeSet', args: [targetEpoch, cb58ToHex(v.validationID)] }))\n )\n\n const signingSubnetId = await validatedBy(client, sourceChainID);\n const networkID = client.network === 'mainnet' ? 1 : 5;\n\n for (const [index, validator] of currentValidators.entries()) {\n const { validationID, nodeID, uptimeSeconds } = validator;\n const status = uptimeStatus[index];\n\n if (!status) {\n // get validator uptime\n logger.log(`Reporting uptime for validator ${validationID} (${nodeID})...`);\n const unsignedValidationUptimeMessage = packValidationUptimeMessage(validationID, uptimeSeconds, networkID, sourceChainID);\n const unsignedValidationUptimeMessageHex = bytesToHex(unsignedValidationUptimeMessage);\n const signedValidationUptimeMessage = await collectSignatures({ network: client.network, message: unsignedValidationUptimeMessageHex, signingSubnetId });\n // compute validator uptime\n const warpBytes = hexToBytes(signedValidationUptimeMessage);\n const accessList = packWarpIntoAccessList(warpBytes);\n\n const txHash = await uptimeTracker.write.computeValidatorUptime([0], { accessList, chain: null });\n logger.log(`computeValidatorUptime done, tx hash: ${txHash}`);\n logger.addData('computeValidatorUptime', { validationID, nodeID, txHash });\n }\n };\n\n logger.log(\"All validators have reported their uptime for epoch \" + targetEpoch);\n}\n","import { ExtendedClient, ExtendedWalletClient } from './client';\nimport { Config } from './config';\nimport { CurriedSuzakuContractMap, SafeSuzakuContract, withSafeWrite } from './lib/viemUtils';\nimport { parseUnits, parseEventLogs, Hex, hexToBytes, bytesToHex, formatUnits } from 'viem';\nimport { logger } from './lib/logger';\nimport { parseNodeID, NodeId, encodeNodeID, retryWhileError, bytes32ToAddress } from './lib/utils';\nimport { getContract } from 'viem';\nimport { color } from './lib/safeColors';\nimport { collectSignatures, getSigningSubnetIdFromWarpMessage, packL1ValidatorRegistration, packL1ValidatorWeightMessage, packWarpIntoAccessList } from './lib/warpUtils';\nimport { getValidationUptimeMessage } from './uptime';\nimport { getCurrentValidators, registerL1Validator, setValidatorWeight } from './lib/pChainUtils';\nimport { GetRegistrationJustification } from './lib/justification';\nimport { pipe, R } from '@mobily/ts-belt';\nimport { utils } from '@avalabs/avalanchejs';\nimport { pChainChainID } from './config';\n\nexport async function getValidatorManagerAddress(config: Config, stakingVault: SafeSuzakuContract['StakingVault']): Promise<{ validatorManagerAddress: Hex, stakingManager: SafeSuzakuContract['KiteStakingManager'], stakingManagerStorageLocation: Hex }> {\n const stakingManagerAddress = await stakingVault.read.getStakingManager();\n const stakingManager = await config.contracts.KiteStakingManager(stakingManagerAddress);\n const stakingManagerStorageLocation = await stakingManager.read.STAKING_MANAGER_STORAGE_LOCATION() as Hex\n const validatorManagerAddress = bytes32ToAddress((await config.client.getStorageAt({ address: stakingManagerAddress, slot: stakingManagerStorageLocation })) as Hex) as Hex;\n return { validatorManagerAddress, stakingManager, stakingManagerStorageLocation };\n}\n\n/**\n * Deposit native tokens (AVAX) into the StakingVault\n * @param client - The wallet client\n * @param stakingVault - The StakingVault contract instance\n * @param amount - Amount to deposit in AVAX (will be converted to wei with 9 decimals)\n * @param minShares - Minimum shares expected from the deposit (slippage protection)\n */\nexport async function depositStakingVault(\n client: ExtendedWalletClient,\n stakingVault: SafeSuzakuContract['StakingVault'],\n amount: string,\n minShares: bigint\n) {\n logger.log(\"Depositing to StakingVault...\");\n\n // Convert amount to wei\n const amountWei = parseUnits(amount, 18);\n\n logger.log(\"\\n=== Deposit Details ===\");\n logger.log(\"Amount:\", amount, \"AVAX\");\n logger.log(\"Amount in wei:\", amountWei.toString());\n logger.log(\"Minimum shares expected:\", minShares.toString());\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call deposit with value (payable function)\n const hash = await stakingVault.safeWrite.deposit(\n [minShares],\n {\n value: amountWei,\n chain: null\n }\n );\n\n logger.log(\"Deposit tx hash:\", hash);\n\n // Wait for deposit confirmation\n logger.log(\"Waiting for deposit confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Deposit confirmed in block:\", receipt.blockNumber);\n\n // Parse the deposit event to get the actual shares received\n try {\n const depositEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__Deposited',\n logs: receipt.logs,\n });\n\n if (depositEvents.length > 0) {\n const event = depositEvents[0];\n logger.log(\"✅ Deposit completed successfully!\");\n logger.log(\"Shares received:\", event.args?.shares?.toString() || 'N/A');\n logger.log(\"Stake amount:\", event.args?.stakeAmount?.toString() || 'N/A');\n } else {\n logger.log(\"✅ Deposit completed successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Deposit completed successfully!\");\n logger.log(\"Note: Could not parse deposit event\");\n }\n}\n\n/**\n * Request withdrawal from the StakingVault\n * @param client - The wallet client\n * @param stakingVault - The StakingVault contract instance\n * @param shares - Amount of shares to withdraw (in wei, 18 decimals)\n */\nexport async function requestWithdrawalStakingVault(\n client: ExtendedWalletClient,\n stakingVault: SafeSuzakuContract['StakingVault'],\n shares: string\n) {\n logger.log(\"Requesting withdrawal from StakingVault...\");\n\n // Convert shares to wei (18 decimals)\n const sharesWei = parseUnits(shares, 18);\n\n logger.log(\"\\n=== Withdrawal Request Details ===\");\n logger.log(\"Shares:\", shares);\n logger.log(\"Shares in wei:\", sharesWei.toString());\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call requestWithdrawal\n const hash = await stakingVault.safeWrite.requestWithdrawal([sharesWei]);\n\n logger.log(\"Request withdrawal tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the withdrawal requested event to get the requestId\n try {\n const withdrawalRequestedEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__WithdrawalRequested',\n logs: receipt.logs,\n });\n\n if (withdrawalRequestedEvents.length > 0) {\n const event = withdrawalRequestedEvents[0];\n logger.log(\"✅ Withdrawal requested successfully!\");\n logger.log(\"Request ID:\", event.args?.requestId?.toString() || 'N/A');\n logger.log(\"Shares:\", event.args?.shares?.toString() || 'N/A');\n logger.log(\"Stake amount:\", event.args?.stakeAmount?.toString() || 'N/A');\n } else {\n logger.log(\"✅ Withdrawal requested successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Withdrawal requested successfully!\");\n logger.log(\"Note: Could not parse withdrawal requested event\");\n }\n}\n\n/**\n * Claim withdrawal from the StakingVault\n * @param client - The wallet client\n * @param stakingVault - The StakingVault contract instance\n * @param requestId - The withdrawal request ID to claim\n */\nexport async function claimWithdrawalStakingVault(\n client: ExtendedWalletClient,\n stakingVault: SafeSuzakuContract['StakingVault'],\n requestId: bigint\n) {\n logger.log(\"Claiming withdrawal from StakingVault...\");\n\n logger.log(\"\\n=== Withdrawal Claim Details ===\");\n logger.log(\"Request ID:\", requestId.toString());\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call claimWithdrawal\n const hash = await stakingVault.safeWrite.claimWithdrawal([requestId]);\n\n logger.log(\"Claim withdrawal tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the withdrawal claimed event\n try {\n const withdrawalClaimedEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__WithdrawalClaimed',\n logs: receipt.logs,\n });\n\n if (withdrawalClaimedEvents.length > 0) {\n const event = withdrawalClaimedEvents[0];\n logger.log(\"✅ Withdrawal claimed successfully!\");\n logger.log(\"Request ID:\", event.args?.requestId?.toString() || 'N/A');\n logger.log(\"Stake amount claimed:\", event.args?.stakeAmount?.toString() || 'N/A');\n } else {\n logger.log(\"✅ Withdrawal claimed successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Withdrawal claimed successfully!\");\n logger.log(\"Note: Could not parse withdrawal claimed event\");\n }\n}\n\n/**\n * Process epoch in the StakingVault\n * @param client - The wallet client\n * @param stakingVault - The StakingVault contract instance\n */\nexport async function processEpochStakingVault(\n client: ExtendedWalletClient,\n stakingVault: SafeSuzakuContract['StakingVault']\n) {\n logger.log(\"Processing epoch in StakingVault...\");\n\n logger.log(\"\\n=== Process Epoch Details ===\");\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call processEpoch\n const hash = await stakingVault.safeWrite.processEpoch([]);\n\n logger.log(\"Process epoch tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the epoch processed event\n try {\n const epochProcessedEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__EpochProcessed',\n logs: receipt.logs,\n });\n\n if (epochProcessedEvents.length > 0) {\n const event = epochProcessedEvents[0];\n logger.log(\"✅ Epoch processed successfully!\");\n logger.log(\"Epoch:\", event.args?.epoch?.toString() || 'N/A');\n logger.log(\"Withdrawals fulfilled:\", event.args?.withdrawalsFulfilled?.toString() || 'N/A');\n logger.log(\"Stake released:\", event.args?.stakeReleased?.toString() || 'N/A');\n logger.log(\"Requests remaining:\", event.args?.requestsRemaining?.toString() || 'N/A');\n } else {\n logger.log(\"✅ Epoch processed successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Epoch processed successfully!\");\n logger.log(\"Note: Could not parse epoch processed event\");\n }\n}\n\n/**\n * Initiate validator registration in the StakingVault\n * @param client - The wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param nodeId - The node ID\n * @param blsKey - The BLS public key\n * @param remainingBalanceOwner - P-Chain remaining balance owner struct\n * @param disableOwner - P-Chain disable owner struct\n * @param stakeAmount - The stake amount in AVAX (will be converted to wei with 18 decimals)\n */\nexport async function initiateValidatorRegistrationStakingVault(\n client: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n nodeId: NodeId,\n blsKey: Hex,\n remainingBalanceOwner: [number, Hex[]],\n disableOwner: [number, Hex[]],\n stakeAmount: string\n) {\n logger.log(\"Initiating validator registration in StakingVault...\");\n\n // Convert stake amount to wei (18 decimals)\n const stakeAmountWei = parseUnits(stakeAmount, 18);\n\n // Parse NodeID to bytes format (20 bytes, no padding)\n const nodeIdBytes = parseNodeID(nodeId, false);\n\n logger.log(\"\\n=== Validator Registration Details ===\");\n logger.log(\"Node ID:\", nodeId);\n logger.log(\"BLS Key:\", blsKey);\n logger.log(\"Stake amount:\", stakeAmount, \"AVAX\");\n logger.log(\"Stake amount in wei:\", stakeAmountWei.toString());\n logger.log(\"Remaining balance owner threshold:\", remainingBalanceOwner[0]);\n logger.log(\"Remaining balance owner addresses:\", remainingBalanceOwner[1]);\n logger.log(\"Disable owner threshold:\", disableOwner[0]);\n logger.log(\"Disable owner addresses:\", disableOwner[1]);\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call initiateValidatorRegistration\n const hash = await stakingVault.safeWrite.initiateValidatorRegistration([\n nodeIdBytes,\n blsKey,\n { threshold: remainingBalanceOwner[0], addresses: remainingBalanceOwner[1] },\n { threshold: disableOwner[0], addresses: disableOwner[1] },\n stakeAmountWei\n ]);\n\n logger.log(\"Initiate validator registration tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the validator registration initiated event\n try {\n const validatorRegisteredEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__ValidatorRegistrationInitiated',\n logs: receipt.logs,\n });\n\n if (validatorRegisteredEvents.length > 0) {\n const event = validatorRegisteredEvents[0];\n logger.log(\"✅ Validator registration initiated successfully!\");\n logger.log(\"Validation ID:\", event.args?.validationID || 'N/A');\n logger.log(\"Operator:\", event.args?.operator || 'N/A');\n } else {\n logger.log(\"✅ Validator registration initiated successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Validator registration initiated successfully!\");\n logger.log(\"Note: Could not parse validator registration initiated event\");\n }\n}\n\n/**\n * Add an operator to the StakingVault\n * @param client - The wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param operator - The operator address\n * @param allocationBips - The allocation in basis points (1 bips = 0.01%)\n * @param feeRecipient - The fee recipient address\n */\nexport async function addOperatorStakingVault(\n client: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n operator: Hex,\n allocationBips: bigint,\n feeRecipient: Hex\n) {\n logger.log(\"Adding operator to StakingVault...\");\n\n logger.log(\"\\n=== Add Operator Details ===\");\n logger.log(\"Operator address:\", operator);\n logger.log(\"Allocation (bips):\", allocationBips.toString());\n logger.log(\"Fee recipient:\", feeRecipient);\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call addOperator\n const hash = await stakingVault.safeWrite.addOperator([\n operator,\n allocationBips,\n feeRecipient\n ]);\n\n logger.log(\"Add operator tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the operator added event\n try {\n const operatorAddedEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__OperatorAdded',\n logs: receipt.logs,\n });\n\n if (operatorAddedEvents.length > 0) {\n const event = operatorAddedEvents[0];\n logger.log(\"✅ Operator added successfully!\");\n logger.log(\"Operator:\", event.args?.operator || 'N/A');\n logger.log(\"Allocation (bips):\", event.args?.allocationBips?.toString() || 'N/A');\n } else {\n logger.log(\"✅ Operator added successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Operator added successfully!\");\n logger.log(\"Note: Could not parse operator added event\");\n }\n}\n\n/**\n * Complete validator registration in the StakingVault\n * @param client - The wallet client\n * @param pchainClient - The P-Chain wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract\n * @param validatorManager - The ValidatorManager contract\n * @param blsProofOfPossession - The BLS proof of possession\n * @param initiateTxHash - The initiateValidatorRegistration transaction hash\n * @param initialBalance - The initial balance for the validator (in nAVAX, 9 decimals)\n * @param waitValidatorVisible - Whether to wait for the validator to be visible on P-Chain\n */\nexport async function completeValidatorRegistrationStakingVault(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n blsProofOfPossession: string,\n initiateTxHash: Hex,\n initialBalance: bigint,\n waitValidatorVisible: boolean\n) {\n logger.log(\"Completing validator registration in StakingVault...\");\n\n // Wait for transaction receipt to extract warp message and validation ID\n const receipt = await client.waitForTransactionReceipt({ hash: initiateTxHash });\n\n // Parse StakingVault__ValidatorRegistrationInitiated event from StakingVaultOperations\n const validatorRegisteredEvents = parseEventLogs({\n abi: stakingVault.abi,\n logs: receipt.logs,\n eventName: 'StakingVault__ValidatorRegistrationInitiated'\n });\n\n if (!validatorRegisteredEvents || validatorRegisteredEvents.length === 0) {\n logger.error(color.red(\"No StakingVault__ValidatorRegistrationInitiated event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n const validatorRegisteredEvent = validatorRegisteredEvents[0];\n const validationIDHex = validatorRegisteredEvent.args?.validationID;\n\n if (!validationIDHex) {\n logger.error(color.red(\"No validationID found in StakingVault__ValidatorRegistrationInitiated event.\"));\n process.exit(1);\n }\n\n // Get ValidatorManager to get nodeID and subnetID\n\n // Get validator info from ValidatorManager\n const validator = await validatorManager.read.getValidator([validationIDHex]);\n const nodeId = encodeNodeID(validator.nodeID as Hex);\n const subnetIDHex = await validatorManager.read.subnetID();\n\n // messageIndex is always 0 for StakingVaultOperations\n const messageIndex = 0;\n\n // Parse IWarpMessenger event to get the unsigned warp message\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n if (!warpLogs || warpLogs.length === 0) {\n logger.error(color.red(\"No IWarpMessenger event found in the transaction logs.\"));\n process.exit(1);\n }\n\n const warpLog = warpLogs[0];\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLog.args.message);\n\n // Check if the node is already registered as a validator on the P-Chain\n const subnetIDStr = utils.base58check.encode(hexToBytes(subnetIDHex));\n const isValidator = (await getCurrentValidators(client, subnetIDStr)).some((v) => v.nodeID === nodeId);\n\n if (isValidator) {\n logger.log(color.yellow(\"Node is already registered as a validator on the P-Chain, skipping registerL1Validator call.\"));\n } else {\n // Get the unsigned warp message from the receipt\n const RegisterL1ValidatorUnsignedWarpMsg = warpLog.args.message;\n\n // Collect signatures for the warp message\n logger.log(\"\\nCollecting signatures for the L1ValidatorRegistrationMessage from the Validator Manager chain...\");\n const signedMessage = await collectSignatures({ network: client.network, message: RegisterL1ValidatorUnsignedWarpMsg, signingSubnetId });\n\n // Register validator on P-Chain\n logger.log(\"\\nRegistering validator on P-Chain...\");\n pipe(await registerL1Validator({\n client: pchainClient,\n blsProofOfPossession: blsProofOfPossession,\n signedMessage,\n initialBalance: initialBalance\n }),\n R.tap(pChainTxId => logger.log(\"RegisterL1ValidatorTx executed on P-Chain:\", pChainTxId)),\n R.tapError(err => { logger.error(err); process.exit(1) })\n );\n }\n\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationIDHex as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorRegistration(validationIDBytes, true, client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n logger.log(\"\\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, signingSubnetId });\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n logger.log(\"\\nCalling function completeValidatorRegistration on the staking vault...\");\n const hash = await stakingVault.safeWrite.completeValidatorRegistration(\n [messageIndex],\n {\n chain: null,\n accessList\n }\n );\n\n // Wait until the validator is visible on the P-Chain\n if (waitValidatorVisible) {\n logger.log(\"Waiting for the validator to be visible on the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, subnetIDStr)).some((v) => v.nodeID === nodeId), 5000, 180000, (res) => res === true);\n }\n\n logger.log(\"completeValidatorRegistration executed successfully, tx hash:\", hash);\n return hash;\n}\n\n/**\n * Initiate validator removal in the StakingVault\n * @param client - The wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param validatorManager - The ValidatorManager contract instance\n * @param nodeId - The node ID of the validator to remove\n */\nexport async function initiateValidatorRemovalStakingVault(\n client: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n nodeId: NodeId\n) {\n logger.log(\"Initiating validator removal in StakingVault...\");\n\n // Parse NodeID to bytes format (20 bytes, no padding)\n const nodeIdBytes = parseNodeID(nodeId, false);\n\n // Get validationID from ValidatorManager\n const validationID = await validatorManager.read.getNodeValidationID([nodeIdBytes]);\n\n logger.log(\"\\n=== Validator Removal Initiation Details ===\");\n logger.log(\"Node ID:\", nodeId);\n logger.log(\"Validation ID:\", validationID);\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call initiateValidatorRemoval\n const hash = await stakingVault.safeWrite.initiateValidatorRemoval([\n validationID\n ]);\n\n logger.log(\"Initiate validator removal tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the validator removal initiated event\n try {\n const validatorRemovalInitiatedEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__ValidatorRemovalInitiated',\n logs: receipt.logs,\n });\n\n if (validatorRemovalInitiatedEvents.length > 0) {\n const event = validatorRemovalInitiatedEvents[0];\n logger.log(\"✅ Validator removal initiated successfully!\");\n logger.log(\"Validation ID:\", event.args?.validationID || 'N/A');\n logger.log(\"Operator:\", event.args?.operator || 'N/A');\n } else {\n logger.log(\"✅ Validator removal initiated successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Validator removal initiated successfully!\");\n logger.log(\"Note: Could not parse validator removal initiated event\");\n }\n\n return hash;\n}\n\n/**\n * Force remove a validator from the StakingVault (admin/emergency operation).\n * @param client - The wallet client\n * @param stakingVault - The StakingVault contract instance\n * @param validatorManager - The ValidatorManager contract instance\n * @param nodeId - The node ID of the validator to force remove\n */\nexport async function forceRemoveValidatorStakingVault(\n client: ExtendedWalletClient,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n nodeId: NodeId\n) {\n logger.log(\"Force removing validator from StakingVault...\");\n\n // Parse NodeID to bytes format (20 bytes, no padding)\n const nodeIdBytes = parseNodeID(nodeId, false);\n\n // Get validationID from ValidatorManager\n const validationID = await validatorManager.read.getNodeValidationID([nodeIdBytes]);\n\n logger.log(\"\\n=== Force Remove Validator Details ===\");\n logger.log(\"Node ID:\", nodeId);\n logger.log(\"Validation ID:\", validationID);\n logger.log(\"Vault address:\", stakingVault.address);\n\n const hash = await stakingVault.safeWrite.forceRemoveValidator([validationID]);\n\n logger.log(\"Force remove validator tx hash:\", hash);\n\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n logger.log(\"✅ Validator force-removed successfully!\");\n return hash;\n}\n\n/**\n * Complete validator removal in the StakingVault\n * @param client - The wallet client\n * @param pchainClient - The P-Chain wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param validatorManager - The ValidatorManager contract instance\n * @param initiateRemovalTxHash - The initiateValidatorRemoval transaction hash\n * @param waitValidatorVisible - Whether to wait for the validator to be removed from P-Chain\n * @param nodeIDs - Optional node IDs to filter removals\n * @param initiateTxHash - Optional initiate validator registration transaction hash for justification\n */\nexport async function completeValidatorRemovalStakingVault(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n initiateRemovalTxHash: Hex,\n waitValidatorVisible: boolean,\n nodeIDs?: NodeId[],\n initiateTxHash?: Hex\n) {\n logger.log(\"Completing validator removal in StakingVault...\");\n\n // Wait for the initiate removal transaction to be confirmed\n const receipt = await client.waitForTransactionReceipt({ hash: initiateRemovalTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initiateRemovalTxHash} reverted, pls resend the removal transaction`);\n\n // Parse StakingVault__ValidatorRemovalInitiated events from StakingVaultOperations\n const validatorRemovalInitiatedEvents = parseEventLogs({\n abi: stakingVault.abi,\n logs: receipt.logs,\n eventName: 'StakingVault__ValidatorRemovalInitiated'\n });\n\n if (validatorRemovalInitiatedEvents.length === 0) {\n logger.error(color.red(\"No StakingVault__ValidatorRemovalInitiated event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // Filter by nodeIDs if provided\n const filteredRemovals = nodeIDs\n ? (await Promise.all(\n validatorRemovalInitiatedEvents.map(async (e) => {\n const validationID = e.args?.validationID;\n if (!validationID) return null;\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeId = encodeNodeID(validator.nodeID as Hex);\n return { event: e, nodeId };\n })\n )).filter((item): item is { event: any; nodeId: NodeId } => item !== null && nodeIDs.includes(item.nodeId)).map(({ event }) => event)\n : validatorRemovalInitiatedEvents;\n\n if (filteredRemovals.length === 0) {\n logger.error(color.red(\"No matching StakingVault__ValidatorRemovalInitiated event found for the provided NodeIDs, verify the transaction hash and NodeIDs.\"));\n process.exit(1);\n }\n\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n const subnetIDHex = await validatorManager.read.subnetID();\n const subnetID = utils.base58check.encode(hexToBytes(subnetIDHex));\n const currentValidators = await getCurrentValidators(client, subnetID);\n\n // Find InitiatedValidatorRemoval events from ValidatorManager to get weight message info\n const validatorManagerRemovalEvents = parseEventLogs({\n abi: validatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorRemoval'\n });\n\n for (const event of filteredRemovals) {\n const validationID = event.args?.validationID;\n if (!validationID) {\n logger.error(color.red(\"No validationID found in StakingVault__ValidatorRemovalInitiated event.\"));\n continue;\n }\n\n // Get nodeID from validator\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeID = encodeNodeID(validator.nodeID as Hex);\n logger.log(`Processing removal for node ${nodeID}`);\n\n // Find the corresponding ValidatorManager InitiatedValidatorRemoval event\n const validatorManagerEvent = validatorManagerRemovalEvents.find((e) => e.args?.validationID === validationID);\n if (!validatorManagerEvent) {\n logger.error(color.red(`No matching ValidatorManager InitiatedValidatorRemoval event found for validationID ${validationID}`));\n continue;\n }\n\n // Find the corresponding warp log\n const warpLog = warpLogs.find((w) => {\n return w.args.messageID === validatorManagerEvent.args.validatorWeightMessageID;\n });\n\n if (!warpLog) {\n logger.error(color.red(`No matching warp log found for validationID ${validationID}`));\n continue;\n }\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLog.args.message);\n\n let addNodeBlockNumber = receipt.blockNumber;\n if (initiateTxHash) {\n const addNodeReceipt = await client.waitForTransactionReceipt({ hash: initiateTxHash, confirmations: 0 });\n if (addNodeReceipt.status === 'reverted') throw new Error(`Transaction ${initiateTxHash} reverted, pls use another initiate tx`);\n addNodeBlockNumber = addNodeReceipt.blockNumber;\n }\n\n // Check if the node is still registered as a validator on the P-Chain\n const isValidator = currentValidators.some((v) => v.nodeID === nodeID);\n if (!isValidator) {\n logger.log(color.yellow(\"Node is not registered as a validator on the P-Chain.\"));\n } else {\n // Get the unsigned L1ValidatorWeightMessage with weight=0 generated by the ValidatorManager from the receipt\n const unsignedL1ValidatorWeightMessage = warpLog.args.message;\n\n // Aggregate signatures from validators\n logger.log(\"\\nCollecting signatures for the L1ValidatorWeightMessage from the Validator Manager chain...\");\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n logger.log(\"\\nSetting validator weight on P-Chain...\");\n pipe(\n await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tapError(\n (error) => {\n throw new Error(\"SetL1ValidatorWeightTx failed on P-Chain: \" + error + '\\n');\n }),\n R.tap((txId) => {\n logger.log(\"SetL1ValidatorWeightTx executed on P-Chain: \" + txId);\n })\n );\n }\n\n // Get justification for original register validator tx\n const justification = await GetRegistrationJustification(nodeID, validationID, pChainChainID, client, addNodeBlockNumber);\n if (!justification) {\n throw new Error(\"Justification not found for validator removal\");\n }\n\n // Pack and sign the P-Chain warp message\n const validationIDBytes = hexToBytes(validationID as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorRegistration(validationIDBytes, false, client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators\n logger.log(\"\\nAggregating signatures for the L1ValidatorRegistrationMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, justification: bytesToHex(justification as Uint8Array), signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorRegistrationMessage from the P-Chain\");\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n // messageIndex is always 0 for StakingVaultOperations\n const messageIndex = 0;\n\n // Execute completeValidatorRemoval transaction\n logger.log(\"Executing completeValidatorRemoval transaction...\");\n const completeHash = await stakingVault.safeWrite.completeValidatorRemoval(\n [messageIndex],\n {\n account: client.account!,\n chain: null,\n accessList\n }\n );\n\n if (waitValidatorVisible) {\n logger.log(\"Waiting for the validator to be removed from the P-Chain (may take a while)...\");\n await retryWhileError(async () => (await getCurrentValidators(client, subnetID)).some((v) => v.nodeID === nodeID), 5000, 180000, (res) => res === false);\n }\n\n logger.log(\"completeValidatorRemoval executed successfully, tx hash:\", completeHash);\n }\n}\n\n/**\n * Initiate delegator registration in the StakingVault\n * @param client - The wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param validatorManager - The ValidatorManager contract instance\n * @param nodeId - The node ID of the validator to delegate to\n * @param amount - The stake amount in AVAX (will be converted to wei with 18 decimals)\n */\nexport async function initiateDelegatorRegistrationStakingVault(\n client: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n nodeId: NodeId,\n amount: string\n) {\n logger.log(\"Initiating delegator registration in StakingVault...\");\n\n // Convert amount to wei (18 decimals)\n const amountWei = parseUnits(amount, 18);\n\n // Parse NodeID to bytes format (20 bytes, no padding)\n const nodeIdBytes = parseNodeID(nodeId, false);\n\n // Get validationID from ValidatorManager\n const validationID = await validatorManager.read.getNodeValidationID([nodeIdBytes]);\n\n logger.log(\"\\n=== Delegator Registration Details ===\");\n logger.log(\"Node ID:\", nodeId);\n logger.log(\"Validation ID:\", validationID);\n logger.log(\"Amount:\", amount, \"AVAX\");\n logger.log(\"Amount in wei:\", amountWei.toString());\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call initiateDelegatorRegistration\n const hash = await stakingVault.safeWrite.initiateDelegatorRegistration([\n validationID,\n amountWei\n ]);\n\n logger.log(\"Initiate delegator registration tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the delegator registration initiated event\n try {\n const delegatorRegisteredEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__DelegatorRegistrationInitiated',\n logs: receipt.logs,\n });\n\n if (delegatorRegisteredEvents.length > 0) {\n const event = delegatorRegisteredEvents[0];\n logger.log(\"✅ Delegator registration initiated successfully!\");\n logger.log(\"Delegation ID:\", event.args?.delegationID || 'N/A');\n logger.log(\"Validation ID:\", event.args?.validationID || 'N/A');\n logger.log(\"Operator:\", event.args?.operator || 'N/A');\n logger.log(\"Amount:\", event.args?.amount?.toString() || 'N/A');\n } else {\n logger.log(\"✅ Delegator registration initiated successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Delegator registration initiated successfully!\");\n logger.log(\"Note: Could not parse delegator registration initiated event\");\n }\n\n return hash;\n}\n\n/**\n * Complete delegator registration in the StakingVault\n * @param client - The wallet client\n * @param pchainClient - The P-Chain wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param validatorManager - The ValidatorManager contract instance\n * @param initiateTxHash - The initiateDelegatorRegistration transaction hash\n * @param rpcUrl - RPC URL for getting validator uptime\n * @param uptimeBlockchainID - The uptime blockchain ID (Hex) for the source chain ID\n */\nexport async function completeDelegatorRegistrationStakingVault(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n initiateTxHash: Hex,\n rpcUrl: string,\n uptimeBlockchainID: Hex\n): Promise<Hex> {\n logger.log(\"Completing delegator registration in StakingVault...\");\n\n // Wait for the initiate delegator registration transaction to be confirmed\n const receipt = await client.waitForTransactionReceipt({ hash: initiateTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initiateTxHash} reverted, pls resend the initiate delegator registration transaction`);\n\n // Parse StakingVault__DelegatorRegistrationInitiated event from StakingVaultOperations\n const delegatorRegisteredEvents = parseEventLogs({\n abi: stakingVault.abi,\n logs: receipt.logs,\n eventName: 'StakingVault__DelegatorRegistrationInitiated'\n });\n\n if (!delegatorRegisteredEvents || delegatorRegisteredEvents.length === 0) {\n logger.error(color.red(\"No StakingVault__DelegatorRegistrationInitiated event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n const delegatorRegisteredEvent = delegatorRegisteredEvents[0];\n const delegationID = delegatorRegisteredEvent.args?.delegationID;\n const validationID = delegatorRegisteredEvent.args?.validationID;\n\n if (!delegationID || !validationID) {\n logger.error(color.red(\"No delegationID or validationID found in StakingVault__DelegatorRegistrationInitiated event.\"));\n process.exit(1);\n }\n\n // Get the validator info to get nodeID\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeId = encodeNodeID(validator.nodeID as Hex);\n\n // Find InitiatedValidatorWeightUpdate events from ValidatorManager to get weight and nonce\n const weightUpdateEvents = parseEventLogs({\n abi: validatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorWeightUpdate'\n });\n\n // Find the weight update event for this validationID\n const weightUpdateEvent = weightUpdateEvents.find((e) => e.args?.validationID === validationID);\n if (!weightUpdateEvent) {\n logger.error(color.red(\"No InitiatedValidatorWeightUpdate event found for validationID, verify the transaction hash.\"));\n process.exit(1);\n }\n\n const validatorWeight = weightUpdateEvent.args?.weight;\n const nonce = weightUpdateEvent.args?.nonce;\n const setWeightMessageID = weightUpdateEvent.args?.weightUpdateMessageID;\n\n // Get warp logs to find the weight message\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n const weightWarpLog = warpLogs.find((w) => w.args.messageID === setWeightMessageID);\n if (!weightWarpLog) {\n logger.error(color.red(\"No matching warp message found for setWeightMessageID, verify the transaction hash.\"));\n process.exit(1);\n }\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, weightWarpLog.args.message);\n\n // Get the unsigned L1ValidatorWeightMessage\n const unsignedL1ValidatorWeightMessage = weightWarpLog.args.message;\n\n // Aggregate signatures from validators for the weight message\n logger.log(\"\\nCollecting signatures for the L1ValidatorWeightMessage from the Validator Manager chain...\");\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n logger.log(\"\\nSetting validator weight on P-Chain...\");\n pipe(await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tap(pChainSetWeightTxId => logger.log(\"SetL1ValidatorWeightTx executed on P-Chain:\", pChainSetWeightTxId)),\n R.tapError(err => {\n if (!err.includes('warp message contains stale nonce')) {\n logger.error(err);\n process.exit(1);\n }\n logger.warn(color.yellow(`Warning: Skipping SetL1ValidatorWeightTx for validationID ${validationID} due to stale nonce (already issued)`));\n }));\n\n // Pack and sign the P-Chain warp message for weight update\n const validationIDBytes = hexToBytes(validationID as Hex);\n const unsignedPChainWeightWarpMsg = packL1ValidatorWeightMessage(validationIDBytes, BigInt(nonce), BigInt(validatorWeight), client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWeightWarpMsgHex = bytesToHex(unsignedPChainWeightWarpMsg);\n // Aggregate signatures from validators for the P-Chain weight message\n logger.log(\"\\nAggregating signatures for the L1ValidatorWeightMessage from the P-Chain...\");\n const signedPChainWeightMessage = await collectSignatures({ network: client.network, message: unsignedPChainWeightWarpMsgHex, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the P-Chain\");\n\n // Get the uptime message\n // Use the uptimeBlockchainID passed as parameter (same as KiteStakingManager settings)\n const warpNetworkID = client.network === 'fuji' ? 5 : 1;\n const sourceChainID = utils.base58check.encode(hexToBytes(uptimeBlockchainID));\n logger.log(\"\\nGetting validation uptime message...\");\n const signedUptimeMessage = await getValidationUptimeMessage(\n client,\n `${rpcUrl}/ext/bc/${sourceChainID}`,\n nodeId,\n warpNetworkID,\n sourceChainID\n );\n\n // Ensure signedUptimeMessage has 0x prefix\n const signedUptimeMessageHex = signedUptimeMessage.startsWith('0x') ? signedUptimeMessage : `0x${signedUptimeMessage}`;\n\n // Pack both messages into access list\n // Convert both signed messages to bytes\n const signedPChainWeightWarpMsgBytes = hexToBytes(`0x${signedPChainWeightMessage}`);\n const signedUptimeMessageBytes = hexToBytes(signedUptimeMessageHex as Hex);\n\n // Pack both messages into separate access list objects\n const weightAccessList = packWarpIntoAccessList(signedPChainWeightWarpMsgBytes);\n const uptimeAccessList = packWarpIntoAccessList(signedUptimeMessageBytes);\n\n // Combine access lists as two separate objects in the array\n const combinedAccessList = [\n weightAccessList[0],\n uptimeAccessList[0]\n ];\n\n // messageIndex is always 0 for StakingVaultOperations\n const messageIndex = 0;\n const uptimeMessageIndex = 1;\n\n logger.log(\"\\nCalling function completeDelegatorRegistration...\");\n const hash = await stakingVault.safeWrite.completeDelegatorRegistration(\n [delegationID, messageIndex, uptimeMessageIndex],\n {\n account: client.account!,\n chain: null,\n accessList: combinedAccessList\n }\n );\n\n logger.log(\"completeDelegatorRegistration executed successfully, tx hash:\", hash);\n return hash;\n}\n\n/**\n * Initiate delegator removal in the StakingVault\n * @param client - The wallet client\n * @param config - The config object\n * @param stakingVaultAddress - The StakingVault contract address\n * @param delegationID - The delegation ID to remove\n */\nexport async function initiateDelegatorRemovalStakingVault(\n client: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n delegationID: Hex\n) {\n logger.log(\"Initiating delegator removal in StakingVault...\");\n\n logger.log(\"\\n=== Delegator Removal Initiation Details ===\");\n logger.log(\"Delegation ID:\", delegationID);\n logger.log(\"Vault address:\", stakingVault.address);\n\n // Call initiateDelegatorRemoval (StakingVaultOperations version only takes delegationID)\n const hash = await stakingVault.safeWrite.initiateDelegatorRemoval([\n delegationID\n ]);\n\n logger.log(\"Initiate delegator removal tx hash:\", hash);\n\n // Wait for transaction confirmation\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n\n // Parse the delegator removal initiated event\n try {\n const delegatorRemovalInitiatedEvents = parseEventLogs({\n abi: stakingVault.abi,\n eventName: 'StakingVault__DelegatorRemovalInitiated',\n logs: receipt.logs,\n });\n\n if (delegatorRemovalInitiatedEvents.length > 0) {\n const event = delegatorRemovalInitiatedEvents[0];\n logger.log(\"✅ Delegator removal initiated successfully!\");\n logger.log(\"Delegation ID:\", event.args?.delegationID || 'N/A');\n } else {\n logger.log(\"✅ Delegator removal initiated successfully!\");\n }\n } catch (error) {\n logger.log(\"✅ Delegator removal initiated successfully!\");\n logger.log(\"Note: Could not parse delegator removal initiated event\");\n }\n\n return hash;\n}\n\n/**\n * Force remove a delegator from the StakingVault (admin/emergency operation).\n * @param client - The wallet client\n * @param stakingVault - The StakingVault contract instance\n * @param delegationID - The delegation ID to force remove\n */\nexport async function forceRemoveDelegatorStakingVault(\n client: ExtendedWalletClient,\n stakingVault: SafeSuzakuContract['StakingVault'],\n delegationID: Hex\n) {\n logger.log(\"Force removing delegator from StakingVault...\");\n\n logger.log(\"\\n=== Force Remove Delegator Details ===\");\n logger.log(\"Delegation ID:\", delegationID);\n logger.log(\"Vault address:\", stakingVault.address);\n\n const hash = await stakingVault.safeWrite.forceRemoveDelegator([delegationID]);\n\n logger.log(\"Force remove delegator tx hash:\", hash);\n\n logger.log(\"Waiting for transaction confirmation...\");\n const receipt = await client.waitForTransactionReceipt({ hash });\n logger.log(\"Transaction confirmed in block:\", receipt.blockNumber);\n logger.log(\"✅ Delegator force-removed successfully!\");\n return hash;\n}\n\n/**\n * Complete delegator removal in the StakingVault\n * @param client - The wallet client\n * @param pchainClient - The P-Chain wallet client\n * @param config - The config object\n * @param stakingVault - The StakingVault contract instance\n * @param validatorManager - The ValidatorManager contract instance\n * @param initiateRemovalTxHash - The initiateDelegatorRemoval transaction hash\n * @param waitValidatorVisible - Whether to wait for the validator to be removed from P-Chain\n * @param delegationIDs - Optional delegation IDs to filter removals\n * @param initiateTxHash - Optional initiate delegator registration transaction hash\n */\nexport async function completeDelegatorRemovalStakingVault(\n client: ExtendedWalletClient,\n pchainClient: ExtendedWalletClient,\n config: Config,\n stakingVault: SafeSuzakuContract['StakingVault'],\n validatorManager: SafeSuzakuContract['ValidatorManager'],\n initiateRemovalTxHash: Hex,\n waitValidatorVisible: boolean,\n delegationIDs?: Hex[],\n initiateTxHash?: Hex\n): Promise<Hex> {\n logger.log(\"Completing delegator removal in StakingVault...\");\n\n // Wait for the initiate removal transaction to be confirmed\n const receipt = await client.waitForTransactionReceipt({ hash: initiateRemovalTxHash, confirmations: 1 });\n if (receipt.status === 'reverted') throw new Error(`Transaction ${initiateRemovalTxHash} reverted, pls resend the removal transaction`);\n\n // Parse StakingVault__DelegatorRemovalInitiated events from StakingVaultOperations\n const delegatorRemovalInitiatedEvents = parseEventLogs({\n abi: stakingVault.abi,\n logs: receipt.logs,\n eventName: 'StakingVault__DelegatorRemovalInitiated'\n });\n\n if (delegatorRemovalInitiatedEvents.length === 0) {\n logger.error(color.red(\"No StakingVault__DelegatorRemovalInitiated event found in the transaction logs, verify the transaction hash.\"));\n process.exit(1);\n }\n\n // Filter by delegationIDs if provided\n const filteredRemovals = delegationIDs\n ? delegatorRemovalInitiatedEvents.filter((e) => {\n const delegationID = e.args?.delegationID;\n return delegationID && delegationIDs.includes(delegationID);\n })\n : delegatorRemovalInitiatedEvents;\n\n if (filteredRemovals.length === 0) {\n logger.error(color.red(\"No matching StakingVault__DelegatorRemovalInitiated event found for the provided delegationIDs, verify the transaction hash and delegationIDs.\"));\n process.exit(1);\n }\n\n // Get warp logs\n const warpLogs = parseEventLogs({\n abi: config.abis.IWarpMessenger,\n logs: receipt.logs,\n });\n\n let lastHash: Hex | undefined;\n\n for (const event of filteredRemovals) {\n const delegationID = event.args?.delegationID;\n if (!delegationID) {\n logger.error(color.red(\"No delegationID found in StakingVault__DelegatorRemovalInitiated event.\"));\n continue;\n }\n\n // Get delegator info from StakingVault to get validationID\n const delegatorInfo = await stakingVault.read.getDelegatorInfo([delegationID]);\n\n const validationID = delegatorInfo.validationID;\n\n // Get the validator info to get nodeID\n const validator = await validatorManager.read.getValidator([validationID]);\n const nodeID = encodeNodeID(validator.nodeID as Hex);\n logger.log(`Processing removal for delegation ${delegationID}, node ${nodeID}`);\n\n let addNodeBlockNumber = receipt.blockNumber;\n\n if (initiateTxHash) {\n const addNodeReceipt = await client.waitForTransactionReceipt({ hash: initiateTxHash, confirmations: 0 });\n if (addNodeReceipt.status === 'reverted') throw new Error(`Transaction ${initiateTxHash} reverted, pls use another initiate tx`);\n\n // Check if this delegationID is in the registration event\n const registrationEvents = parseEventLogs({\n abi: stakingVault.abi,\n logs: addNodeReceipt.logs,\n eventName: 'StakingVault__DelegatorRegistrationInitiated'\n });\n\n if (registrationEvents.some((e) => e.args?.delegationID === delegationID)) {\n addNodeBlockNumber = addNodeReceipt.blockNumber;\n }\n }\n\n // Look for InitiatedValidatorWeightUpdate events from ValidatorManager (similar to completeWeightUpdate)\n const initiatedValidatorWeightUpdates = parseEventLogs({\n abi: validatorManager.abi,\n logs: receipt.logs,\n eventName: 'InitiatedValidatorWeightUpdate'\n }).filter((e) => e.args.validationID === validationID);\n\n if (initiatedValidatorWeightUpdates.length === 0) {\n logger.error(color.red(`No InitiatedValidatorWeightUpdate event found for validationID ${validationID}`));\n continue;\n }\n\n const weightUpdateEvent = initiatedValidatorWeightUpdates[0];\n const warpLog = warpLogs.find((w) => w.args.messageID === weightUpdateEvent.args.weightUpdateMessageID);\n if (!warpLog) {\n logger.error(color.red(`No matching warp log found for weightUpdateMessageID ${weightUpdateEvent.args.weightUpdateMessageID}`));\n continue;\n }\n\n const signingSubnetId = await getSigningSubnetIdFromWarpMessage(client, warpLog.args.message);\n\n const unsignedL1ValidatorWeightMessage = warpLog.args.message;\n const weight = weightUpdateEvent.args.weight;\n const nonce = weightUpdateEvent.args.nonce;\n\n // Aggregate signatures from validators for the weight message\n logger.log(\"\\nCollecting signatures for the L1ValidatorWeightMessage from the Validator Manager chain...\");\n const signedL1ValidatorWeightMessage = await collectSignatures({ network: client.network, message: unsignedL1ValidatorWeightMessage, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the Validator Manager chain\");\n\n // Call setValidatorWeight on the P-Chain with the signed L1ValidatorWeightMessage\n logger.log(\"\\nSetting validator weight on P-Chain...\");\n pipe(await setValidatorWeight({\n client: pchainClient,\n validationID: validationID,\n message: signedL1ValidatorWeightMessage\n }),\n R.tap(pChainSetWeightTxId => logger.log(\"SetL1ValidatorWeightTx executed on P-Chain:\", pChainSetWeightTxId)),\n R.tapError(err => {\n if (!err.includes('warp message contains stale nonce')) {\n logger.error(err);\n process.exit(1);\n }\n logger.warn(color.yellow(`Warning: Skipping SetL1ValidatorWeightTx for validationID ${validationID} due to stale nonce (already issued)`));\n }));\n\n // Pack and sign the P-Chain warp message for weight update\n const validationIDBytes = hexToBytes(validationID as Hex);\n const unsignedPChainWarpMsg = packL1ValidatorWeightMessage(validationIDBytes, BigInt(nonce), BigInt(weight), client.network === 'fuji' ? 5 : 1, pChainChainID);\n const unsignedPChainWarpMsgHex = bytesToHex(unsignedPChainWarpMsg);\n\n // Aggregate signatures from validators for the P-Chain weight message\n logger.log(\"\\nAggregating signatures for the L1ValidatorWeightMessage from the P-Chain...\");\n const signedPChainMessage = await collectSignatures({ network: client.network, message: unsignedPChainWarpMsgHex, justification: unsignedPChainWarpMsgHex, signingSubnetId });\n logger.log(\"Aggregated signatures for the L1ValidatorWeightMessage from the P-Chain\");\n\n // Convert the signed warp message to bytes and pack into access list\n const signedPChainWarpMsgBytes = hexToBytes(`0x${signedPChainMessage}`);\n const accessList = packWarpIntoAccessList(signedPChainWarpMsgBytes);\n\n // messageIndex is always 0 for StakingVaultOperations\n const messageIndex = 0;\n\n logger.log(\"\\nCalling function completeDelegatorRemoval...\");\n const hash = await stakingVault.safeWrite.completeDelegatorRemoval(\n [delegationID, messageIndex],\n {\n account: client.account!,\n chain: null,\n accessList\n }\n );\n\n if (waitValidatorVisible) {\n logger.log(\"Waiting for the validator to be removed from the P-Chain (may take a while)...\");\n const subnetIDHex = await validatorManager.read.subnetID();\n const subnetID = utils.base58check.encode(hexToBytes(subnetIDHex));\n await retryWhileError(async () => (await getCurrentValidators(client, subnetID)).some((v) => v.nodeID === nodeID), 5000, 180000, (res) => res === false);\n }\n\n logger.log(\"completeDelegatorRemoval executed successfully, tx hash:\", hash);\n lastHash = hash;\n }\n\n if (!lastHash) {\n throw new Error(\"No delegator removals processed\");\n }\n\n return lastHash;\n}\n\n// ── Info functions ─────────────────────────────────────────────────────\n\ntype StakingVaultContract = SafeSuzakuContract['StakingVault'];\n\nfunction fmt(amount: bigint, decimals: number): string {\n return formatUnits(amount, decimals);\n}\n\n/**\n * General overview of the vault\n */\nexport async function getGeneralInfo(stakingVault: StakingVaultContract, client: ExtendedClient) {\n const [\n totalPooledStake, totalSupply, exchangeRate, availableStake,\n totalValidatorStake, totalDelegatedStake, pendingWithdrawals,\n claimableWithdrawals, inFlightExiting, currentEpoch,\n lastEpochProcessed, decimals, symbol, owner, paused,\n ] = await stakingVault.multicall([\n 'getTotalPooledStake', 'totalSupply', 'getExchangeRate', 'getAvailableStake',\n 'getTotalValidatorStake', 'getTotalDelegatedStake', 'getPendingWithdrawals',\n 'getClaimableWithdrawalStake', 'getInFlightExitingAmount', 'getCurrentEpoch',\n 'getLastEpochProcessed', 'decimals', 'symbol', 'owner', 'paused',\n ]);\n\n const contractBalance = await client.getBalance({ address: stakingVault.address });\n\n logger.log(color.bold(`\\n═══ General Info ═══`));\n logger.log(` Owner: ${owner}`);\n logger.log(` Paused: ${paused}`);\n logger.log(` Symbol: ${symbol}`);\n logger.log(` Total Pooled Stake: ${fmt(totalPooledStake, decimals)} AVAX`);\n logger.log(` Total Supply (LST): ${fmt(totalSupply, decimals)} ${symbol}`);\n logger.log(` Exchange Rate: ${fmt(exchangeRate, decimals)}`);\n logger.log(` Available Stake: ${fmt(availableStake, decimals)} AVAX`);\n logger.log(` Total Validator Stake: ${fmt(totalValidatorStake, decimals)} AVAX`);\n logger.log(` Total Delegated Stake: ${fmt(totalDelegatedStake, decimals)} AVAX`);\n logger.log(` Pending Withdrawals: ${fmt(pendingWithdrawals, decimals)} AVAX`);\n logger.log(` Claimable Withdrawals: ${fmt(claimableWithdrawals, decimals)} AVAX`);\n logger.log(` In-Flight Exiting: ${fmt(inFlightExiting, decimals)} AVAX`);\n logger.log(` Current Epoch: ${currentEpoch}`);\n logger.log(` Last Epoch Processed: ${lastEpochProcessed}`);\n logger.log(` Contract Balance: ${formatUnits(contractBalance, 18)} AVAX`);\n}\n\n/**\n * Fees configuration\n */\nexport async function getFeesInfo(stakingVault: StakingVaultContract) {\n const [\n protocolFeeBips, protocolFeeRecipient, pendingProtocolFees,\n operatorFeeBips, totalAccruedOperatorFees, liquidityBufferBips, decimals,\n ] = await stakingVault.multicall([\n 'getProtocolFeeBips', 'getProtocolFeeRecipient', 'getPendingProtocolFees',\n 'getOperatorFeeBips', 'getTotalAccruedOperatorFees', 'getLiquidityBufferBips', 'decimals',\n ]);\n\n logger.log(color.bold(`\\n═══ Fees Info ═══`));\n logger.log(` Protocol Fee: ${protocolFeeBips} bips (${Number(protocolFeeBips) / 100}%)`);\n logger.log(` Protocol Fee Recipient: ${protocolFeeRecipient}`);\n logger.log(` Pending Protocol Fees: ${fmt(pendingProtocolFees, decimals)} AVAX`);\n logger.log(` Operator Fee: ${operatorFeeBips} bips (${Number(operatorFeeBips) / 100}%)`);\n logger.log(` Total Accrued Op. Fees: ${fmt(totalAccruedOperatorFees, decimals)} AVAX`);\n logger.log(` Liquidity Buffer: ${liquidityBufferBips} bips (${Number(liquidityBufferBips) / 100}%)`);\n}\n\n/**\n * Operators overview\n */\nexport async function getOperatorsInfo(stakingVault: StakingVaultContract) {\n const [operatorList, maxOperators, maxValidatorsPerOp, decimals, symbol] = await stakingVault.multicall([\n 'getOperatorList', 'getMaxOperators', 'getMaxValidatorsPerOperator', 'decimals', 'symbol',\n ]);\n\n logger.log(color.bold(`\\n═══ Operators Info ═══`));\n logger.log(` Max Operators: ${maxOperators}`);\n logger.log(` Max Validators/Operator: ${maxValidatorsPerOp}`);\n logger.log(` Registered Operators: ${operatorList.length}`);\n\n let totalActive = 0;\n let totalAllocationBips = 0n;\n\n for (const operator of operatorList) {\n const [info, exitDebt, validators, delegators] = await stakingVault.multicall([\n { name: 'getOperatorInfo', args: [operator] },\n { name: 'getOperatorExitDebt', args: [operator] },\n { name: 'getOperatorValidators', args: [operator] },\n { name: 'getOperatorDelegators', args: [operator] },\n ]);\n\n if (info.active) totalActive++;\n totalAllocationBips += info.allocationBips;\n\n logger.log(`\\n ${color.cyan(operator)}:`);\n logger.log(` Active: ${info.active}`);\n logger.log(` Allocation: ${info.allocationBips} bips (${Number(info.allocationBips) / 100}%)`);\n logger.log(` Active Stake: ${fmt(info.activeStake, decimals)} AVAX`);\n logger.log(` Accrued Fees: ${fmt(info.accruedFees, decimals)} AVAX`);\n logger.log(` Fee Recipient: ${info.feeRecipient}`);\n logger.log(` Exit Debt: ${fmt(exitDebt, decimals)} AVAX`);\n logger.log(` Validators: ${validators.length}`);\n logger.log(` Delegations: ${delegators.length}`);\n }\n\n logger.log(`\\n ── Summary ──`);\n logger.log(` Active / Total: ${totalActive} / ${operatorList.length}`);\n logger.log(` Total Allocation: ${totalAllocationBips} bips (${Number(totalAllocationBips) / 100}%)`);\n}\n\n/**\n * Validators details per operator\n */\nexport async function getValidatorsInfo(stakingVault: StakingVaultContract) {\n const [operatorList, totalValidatorStake, maxValidatorStake, decimals] = await stakingVault.multicall([\n 'getOperatorList', 'getTotalValidatorStake', 'getMaximumValidatorStake', 'decimals',\n ]);\n\n logger.log(color.bold(`\\n═══ Validators Info ═══`));\n logger.log(` Total Validator Stake: ${fmt(totalValidatorStake, decimals)} AVAX`);\n logger.log(` Max Validator Stake: ${fmt(maxValidatorStake, decimals)} AVAX`);\n\n let totalValidators = 0;\n let totalPendingRemoval = 0;\n\n for (const operator of operatorList) {\n const [validatorIDs] = await stakingVault.multicall([\n { name: 'getOperatorValidators', args: [operator] },\n ]);\n\n if (validatorIDs.length === 0) continue;\n\n logger.log(`\\n Operator ${color.cyan(operator)} (${validatorIDs.length} validators):`);\n\n // Batch all validator queries in a single multicall\n const queries = validatorIDs.flatMap(id => [\n { name: 'getValidatorStakeAmount' as const, args: [id] as const },\n { name: 'isValidatorPendingRemoval' as const, args: [id] as const },\n ]);\n const results = await stakingVault.multicall(queries);\n\n for (let i = 0; i < validatorIDs.length; i++) {\n const stakeAmount = results[i * 2] as bigint;\n const pendingRemoval = results[i * 2 + 1] as boolean;\n totalValidators++;\n if (pendingRemoval) totalPendingRemoval++;\n\n logger.log(` ${validatorIDs[i]}`);\n logger.log(` Stake: ${fmt(stakeAmount, decimals)} AVAX`);\n logger.log(` Pending Removal: ${pendingRemoval}`);\n }\n }\n\n logger.log(`\\n ── Summary ──`);\n logger.log(` Total Validators: ${totalValidators}`);\n logger.log(` Pending Removal: ${totalPendingRemoval}`);\n}\n\n/**\n * Delegations details per operator\n */\nexport async function getDelegatorsInfo(stakingVault: StakingVaultContract) {\n const [operatorList, totalDelegatedStake, maxDelegatorStake, decimals] = await stakingVault.multicall([\n 'getOperatorList', 'getTotalDelegatedStake', 'getMaximumDelegatorStake', 'decimals',\n ]);\n\n logger.log(color.bold(`\\n═══ Delegators Info ═══`));\n logger.log(` Total Delegated Stake: ${fmt(totalDelegatedStake, decimals)} AVAX`);\n logger.log(` Max Delegator Stake: ${fmt(maxDelegatorStake, decimals)} AVAX`);\n\n let totalDelegations = 0;\n\n for (const operator of operatorList) {\n const [delegatorIDs] = await stakingVault.multicall([\n { name: 'getOperatorDelegators', args: [operator] },\n ]);\n\n if (delegatorIDs.length === 0) continue;\n\n logger.log(`\\n Operator ${color.cyan(operator)} (${delegatorIDs.length} delegations):`);\n\n // Batch all delegator queries\n const queries = delegatorIDs.map(id => ({\n name: 'getDelegatorInfo' as const,\n args: [id] as const,\n }));\n const results = await stakingVault.multicall(queries);\n\n for (let i = 0; i < delegatorIDs.length; i++) {\n const info = results[i] as { validationID: Hex; isVaultOwnedValidator: boolean; operator: Hex };\n totalDelegations++;\n\n logger.log(` ${delegatorIDs[i]}`);\n logger.log(` Target Validator: ${info.validationID}`);\n logger.log(` Vault-Owned Validator: ${info.isVaultOwnedValidator}`);\n logger.log(` Operator: ${info.operator}`);\n }\n }\n\n logger.log(`\\n ── Summary ──`);\n logger.log(` Total Delegations: ${totalDelegations}`);\n}\n\n/**\n * Withdrawal queue info\n */\nexport async function getWithdrawalsInfo(stakingVault: StakingVaultContract) {\n const [\n queueLength, queueHead, pendingWithdrawals, claimableWithdrawals,\n totalExitDebt, currentEpoch, lastEpochProcessed, epochDuration, decimals,\n ] = await stakingVault.multicall([\n 'getWithdrawalQueueLength', 'getQueueHead', 'getPendingWithdrawals', 'getClaimableWithdrawalStake',\n 'getTotalExitDebt', 'getCurrentEpoch', 'getLastEpochProcessed', 'getEpochDuration', 'decimals',\n ]);\n\n logger.log(color.bold(`\\n═══ Withdrawals Info ═══`));\n logger.log(` Queue Length: ${queueLength}`);\n logger.log(` Queue Head: ${queueHead}`);\n logger.log(` Pending Withdrawals: ${fmt(pendingWithdrawals, decimals)} AVAX`);\n logger.log(` Claimable Withdrawals: ${fmt(claimableWithdrawals, decimals)} AVAX`);\n logger.log(` Total Exit Debt: ${fmt(totalExitDebt, decimals)} AVAX`);\n logger.log(` Current Epoch: ${currentEpoch}`);\n logger.log(` Last Epoch Processed: ${lastEpochProcessed}`);\n logger.log(` Epoch Duration: ${epochDuration}s`);\n}\n\n/**\n * Epoch info\n */\nexport async function getEpochInfo(stakingVault: StakingVaultContract) {\n const [currentEpoch, epochDuration, lastEpochProcessed, minStakeDuration] = await stakingVault.multicall([\n 'getCurrentEpoch', 'getEpochDuration', 'getLastEpochProcessed', 'getMinimumStakeDuration',\n ]);\n\n const epochsBehind = currentEpoch - lastEpochProcessed;\n\n logger.log(color.bold(`\\n═══ Epoch Info ═══`));\n logger.log(` Current Epoch: ${currentEpoch}`);\n logger.log(` Epoch Duration: ${epochDuration}s`);\n logger.log(` Last Epoch Processed: ${lastEpochProcessed}`);\n logger.log(` Epochs Behind: ${epochsBehind}`);\n logger.log(` Min Stake Duration: ${minStakeDuration}s`);\n}\n"],"mappings":"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A,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACI,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACf;AAAA,EACA;AAA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AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,gBAAkB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,mBAAqB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,OAAS;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,YAAc;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,oBAAsB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,cAAgB;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,wBAA0B;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,kBAAoB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,2BAA6B;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,mBAAqB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,eAAiB;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,cAAgB;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,0BAA4B;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,gBAAkB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,kBAAoB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,eAAiB;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,oBAAsB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,SAAW;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,oBAAsB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,cAAgB;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;A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","names":["decodeEventLog","utils","secp256k1","hexToBytes","Address","sha256","fromBytes","getAddress","Buffer","parseAbiItem","hexToBytes","utils","sha256","hexToBytes","sha256","utils","utils","sha256","hexToBytes","utils","Buffer","sha256","parseAbiItem","hexToBytes","getAddress","getAddresses","secp256k1","hexToBytes","utils","Address","sha256","fromBytes","LogLevelEnum","decodeEventLog","parseEventLogs","nodeId","info","bytesToHex","hexToBytes","parseEventLogs","pipe","R","utils","parseEventLogs","hexToBytes","pipe","R","bytesToHex","receipt","subnetIDHex","defineChain","avalanche","avalancheFuji","avalanche","avalancheFuji","defineChain","createWalletClient","http","publicActions","getAddresses","http","createWalletClient","publicActions","completeValidatorRegistration","completeValidatorRemoval","bytesToHex","hexToBytes","parseEventLogs","pipe","R","utils","bytesToHex","hexToBytes","bytesToHex","utils","hexToBytes","parseEventLogs","pipe","R","bytesToHex","completeValidatorRegistration","completeValidatorRemoval","parseEventLogs","hexToBytes","bytesToHex","pipe","R","utils","parseEventLogs","utils","hexToBytes","pipe","R","bytesToHex","info"]}
|