export interface SetupHealthInput {
    host: string;
    visionModel: string;
    audioTranscribeCommand: string;
    audioSamplePath?: string;
    pdfOcrCommand?: string;
    projectDir?: string;
}
export interface LocalHealthCheck {
    ok: boolean;
    message: string;
}
export interface BackendHealthCheck {
    /** Backend identifier matching HARNESS_BACKEND values (cerebras, groq, github, ...). */
    id: string;
    /** Human-readable provider label. */
    label: string;
    /** True when an API key is present in one of the configured env vars. */
    ok: boolean;
    /** Status message shown by the doctor. */
    message: string;
    /** Env var that supplied the key, if any. Useful for debugging precedence. */
    apiKeyEnvVar?: string;
    /**
     * Number of keys parsed from the env var (1 for a single key, >1 for a
     * comma-separated credential pool). Reports count only — never the keys
     * themselves, which would leak via the doctor output.
     */
    keyCount?: number;
    /** Optional signup link for missing keys. */
    signupUrl?: string;
}
export interface SetupHealthResult {
    ollama: {
        ok: boolean;
        message: string;
        modelCount: number;
    };
    vision: {
        ok: boolean;
        message: string;
    };
    audio: {
        ok: boolean;
        message: string;
    };
    pdfOcr?: {
        ok: boolean;
        message: string;
    };
    local: {
        node: LocalHealthCheck;
        package: LocalHealthCheck;
        sessions: LocalHealthCheck;
        tools: LocalHealthCheck;
        automations: LocalHealthCheck;
        mycelium: LocalHealthCheck;
    };
    /**
     * Auth check for each known OpenAI-compatible backend preset.
     * Reports one entry per preset so the doctor surfaces "key present /
     * not present" without making a network call. Backends that require a
     * subscription still appear here as `ok: true` if the key is set; the
     * subscription gate only triggers on actual chat calls.
     */
    backends: BackendHealthCheck[];
    /** Fallback routing configuration for remote providers. */
    fallback: FallbackRoutingConfig;
    /** SMTP email configuration status. */
    smtp: {
        ok: boolean;
        message: string;
    };
    /** Per-model synthesis turn statistics (optional, populated when stats file exists). */
    synthesisStats?: Record<string, {
        fired: number;
        total: number;
        adaptiveMaxTurns: number;
    }>;
}
export interface FallbackRoutingConfig {
    /** Whether auto-fallback is enabled (HARNESS_REMOTE_AUTO_FALLBACK === '1'). Default is opt-in. */
    enabled: boolean;
    /** Cooldown window in ms after a backend hits a limit error. */
    cooldownMs: number;
    /** Configured fallback order, or 'default' if using the built-in order. */
    order: string;
    /** Number of backends with a configured API key. */
    configuredCount: number;
}
export declare function checkSetupHealth(input: SetupHealthInput): Promise<SetupHealthResult>;
//# sourceMappingURL=health.d.ts.map