/**
 * Multi-provider AI judge engine.
 *
 * Evaluates (input, output) pairs against structured rubrics using either
 * deterministic checks (no LLM cost) or an LLM-as-judge (any provider).
 *
 * Provider resolution order:
 *   1. config.model (explicit) → detectProvider()
 *   2. ANTHROPIC_API_KEY env
 *   3. OPENAI_API_KEY / GOOGLE_API_KEY / CEREBRAS_API_KEY / ZAI_API_KEY env
 */
import { type AIProvider } from "./ai-client.js";
export type JudgeProvider = AIProvider | "auto";
export interface JudgeConfig {
    model?: string;
    provider?: JudgeProvider;
    apiKey?: string;
    temperature?: number;
}
export type JudgeRubric = {
    type: "contains";
    value: string;
} | {
    type: "not_contains";
    value: string;
} | {
    type: "regex";
    pattern: string;
} | {
    type: "llm";
    prompt: string;
    threshold?: number;
} | {
    type: "factual";
    facts: string[];
} | {
    type: "no_pii";
    patterns?: string[];
} | {
    type: "coherent";
} | {
    type: "faithful";
    sourceDocs: string[];
} | {
    type: "safe";
};
export interface JudgeInput {
    input: string;
    output: string;
    context?: string;
    rubric: JudgeRubric;
}
export interface JudgeResult {
    pass: boolean;
    score: number;
    reason: string;
    rubricType: string;
    tokensUsed: number;
    provider: string;
    model: string;
    durationMs: number;
}
export declare function judge(input: JudgeInput, config?: JudgeConfig): Promise<JudgeResult>;
export interface BatchJudgeResult {
    results: JudgeResult[];
    passCount: number;
    failCount: number;
    avgScore: number;
    totalTokensUsed: number;
}
export declare function judgeAll(inputs: JudgeInput[], config?: JudgeConfig): Promise<BatchJudgeResult>;
//# sourceMappingURL=judge.d.ts.map