import type { ResolvedRole } from './config.js'; export type FailureClass = 'model-entitlement-or-quota' | 'transient-rate-limit' | 'overload' | 'authentication' | 'policy' | 'unknown-api-error'; export interface FailureEvidence { class: FailureClass; httpStatus?: number; model?: string; confidence: 'low' | 'medium' | 'high'; source: 'claude-pane' | 'acp' | 'codex-app-server' | 'auth-proxy'; observedAt: string; } export interface ModelRecoveryLedger { schemaVersion: 1; chainFingerprint: string; declaredModel: string; effectiveModel: string; index: number; evidenceCount: number; evidenceSource?: FailureEvidence['source']; lastEvidenceAt?: string; transitionedAt?: string; heldDown: boolean; reconciledAt: string; } export type RecoveryAction = { kind: 'none'; ledger: ModelRecoveryLedger; } | { kind: 'advance'; from: string; to: string; ledger: ModelRecoveryLedger; } | { kind: 'hold'; model: string; ledger: ModelRecoveryLedger; }; export declare function classifyFailureText(text: string, source?: FailureEvidence['source'], observedAt?: string): FailureEvidence | undefined; export declare function reconcileModelRecovery(dir: string, role: ResolvedRole, now?: string): ModelRecoveryLedger | undefined; export declare function recordModelFailure(dir: string, role: ResolvedRole, evidence: FailureEvidence, threshold?: number): RecoveryAction; export declare function effectiveModelForRole(dir: string, role: ResolvedRole): string | undefined; export declare function modelRecoveryHeld(dir: string): boolean; export declare function resetModelRecovery(dir: string, role: ResolvedRole): ModelRecoveryLedger | undefined;