export type VisionFixOutcome = 'ok' | 'pulled' | 'skipped-confirm' | 'failed' | 'no-target';
export type ContextFixOutcome = 'ok' | 'rewritten' | 'skipped' | 'failed';
export type PruneOutcome = 'ok' | 'failed';
export interface DoctorFixResult {
    vision: {
        outcome: VisionFixOutcome;
        message: string;
        pulledModel?: string;
    };
    context: {
        outcome: ContextFixOutcome;
        message: string;
        previousValue?: number;
        nextValue?: number;
    };
    prune: {
        outcome: PruneOutcome;
        message: string;
        removed: number;
        scanned: number;
    };
}
export interface DoctorFixOptions {
    /** Project root used for settings.json + agent-outputs lookups. */
    projectDir: string;
    /** Ollama host for vision-model pulls. */
    ollamaHost: string;
    /** Configured vision model from doctor input (CLI/env). */
    visionModel: string;
    /** Currently configured contextMaxTokens (0/undefined means already auto). */
    contextMaxTokens: number;
    /** When true, perform destructive fixes (vision pull) without prompting. */
    yes: boolean;
    /** Model to pull when no vision-capable model is installed. */
    defaultVisionPull?: string;
    /** Cutoff in days for agent-outputs prune. Defaults to 14. */
    pruneMaxAgeDays?: number;
    /**
     * Lists installed Ollama models. Defaults to the live `ollama` SDK call.
     * Tests inject a mock to avoid network.
     */
    listInstalledModels?: () => Promise<string[]>;
    /**
     * Pulls a model via Ollama. Defaults to the live SDK call. Tests inject
     * a mock that records the requested model.
     */
    pullModel?: (model: string) => Promise<void>;
    /**
     * Interactive confirmation hook. When provided AND `yes` is false, the
     * vision fixer calls it before pulling so a TTY user can approve in
     * one invocation. Returning `true` proceeds with the pull; `false`
     * leaves the outcome as `skipped-confirm`.
     */
    confirmVisionPull?: (model: string) => Promise<boolean>;
}
export declare function runDoctorFix(options: DoctorFixOptions): Promise<DoctorFixResult>;
export declare function formatDoctorFixSummary(result: DoctorFixResult): string;
//# sourceMappingURL=doctorFix.d.ts.map