import type { JudgeScore } from '../campaign/types';
export type { JudgeScore } from '../campaign/types';
export declare const DEFAULT_JUDGE_MODEL = "openai/gpt-4o-mini";
export interface JudgeDimension {
    /** JSON field name + score key. */
    key: string;
    /** Description shown in the judge's user prompt. */
    description: string;
}
export interface JudgeConfig<TInput> {
    /** Display name (for trace + log). */
    name: string;
    /** Model used for this judge. */
    model?: string;
    /** 0-10 scored dimensions. */
    dimensions: JudgeDimension[];
    /** Judge system prompt — sets persona + JSON-only constraint. */
    systemPrompt: string;
    /** Build the user prompt from the typed input. Must include "Respond with
     *  ONLY this JSON: { ... }" listing each dimension key. */
    buildPrompt: (input: TInput) => string;
    /** Optional model + api overrides. */
    apiKey?: string;
    baseUrl?: string;
}
export declare function runJudge<TInput>(judge: JudgeConfig<TInput>, input: TInput): Promise<JudgeScore>;
/** Convenience: stringified dimension list for inclusion in a judge prompt.
 *  Returns lines like `- audience_fit: Does this match what the audience cares about? (0-10)`. */
export declare function renderDimensions(dims: readonly JudgeDimension[]): string;
/** Convenience: build the "Respond with ONLY this JSON" footer for a judge prompt. */
export declare function renderJsonFooter(dims: readonly JudgeDimension[]): string;
//# sourceMappingURL=judges.d.ts.map