import type { ToolGuardRecoverableFailure, ToolHealthStats } from '../tool-guard.js'; import type { ResolvedOpenCodeGuardPolicy } from './policy.js'; import type { OpenCodeGuard, OpenCodeGuardLifecycleScope, OpenCodeGuardVerdict, ToolOutcomeTuple } from './types.js'; export declare class ConsecutiveErrorsGuard implements OpenCodeGuard { private readonly policy; readonly id = "consecutive-errors"; readonly layer: "heuristic"; private consecutiveErrors; private maxConsecutiveErrors; private totalErrors; private totalSuccesses; private toolEventsSinceLastProgress; private recentWindow; private recoveryFailure; constructor(policy: ResolvedOpenCodeGuardPolicy); start(scope: OpenCodeGuardLifecycleScope): void; onToolOutcome(outcome: ToolOutcomeTuple): OpenCodeGuardVerdict | undefined; takeRecoveryFailure(): ToolGuardRecoverableFailure | undefined; stats(recoveriesUsed: number): ToolHealthStats; private pushWindow; } export declare class CycleBudgetGuard implements OpenCodeGuard { private readonly limit; readonly id = "cycle-budget"; readonly layer: "heuristic"; private readonly completedMessages; private cyclesWithoutToolSuccess; constructor(limit: number); start(scope: OpenCodeGuardLifecycleScope): void; onToolOutcome(outcome: ToolOutcomeTuple): OpenCodeGuardVerdict | undefined; onMessageCycle(messageId: string): OpenCodeGuardVerdict | undefined; } //# sourceMappingURL=heuristic-guards.d.ts.map