export interface CircuitBreakerEntry { consecutiveFailures: number; lastFailureAt: number; lastExitCode: number | null; lastExitTail: string; open: boolean; openedAt: number; lastProbeAt: number; } export declare class CircuitBreaker { #private; constructor(opts?: { threshold?: number; cooldownMs?: number; maxKeys?: number; staleMs?: number; }); static key(agentId: string, ticketId: string, role: string): string; static isTransientExit(code: number | null): boolean; record(key: string, exitCode: number | null, tailSnippet?: string, opts?: { forceOpen?: boolean; }): { justOpened: boolean; entry: CircuitBreakerEntry; }; shouldBlock(key: string): string | null; reset(key: string): void; recordSuccess(key: string): void; resetAgent(agentId: string): void; sweep(now?: number): number; getOpenBreakers(): Array<{ key: string; entry: CircuitBreakerEntry; }>; get size(): number; }