/**
 * Eval primitives as agent tools — `makeEvalTools` packages the substrate's
 * judge / completion / analysis entry points as JSON-Schema tool definitions
 * an LLM agent loop can call. The host closes over the live config (judge
 * panels, the correctness checker, analyst registry); the agent passes only
 * data over the wire.
 *
 * Three tools, each present only when its config section is supplied:
 *   - `run_judges`        — score an artifact with the configured `JudgeConfig`s
 *   - `verify_completion` — gold-spec requirement check → `CompletionVerdict`
 *   - `analyze_runs`      — `RunRecord[]` (inline or from a file) → `InsightReport`
 *
 * `toOpenAiTool` converts a definition to the OpenAI function-tool wire shape.
 */
import type { JudgeConfig } from './campaign/types';
import { type CorrectnessChecker } from './completion-verifier';
import { type AnalyzeRunsOptions } from './contract/analyze-runs';
/** One agent-callable tool. `parameters` is a JSON Schema (draft-07+) object. */
export interface EvalToolDef {
    name: string;
    description: string;
    parameters: Record<string, unknown>;
    handler: (args: unknown, ctx?: {
        signal?: AbortSignal;
    }) => Promise<unknown>;
}
export interface MakeEvalToolsConfig {
    /** Judges available to `run_judges`. Omit to exclude the tool. */
    judges?: Array<JudgeConfig<unknown>>;
    /** Host-side correctness checker for `verify_completion` (the third
     *  `verifyCompletion` argument — a function, so it cannot cross the wire).
     *  Omit to exclude the tool. */
    completion?: {
        checkCorrectness: CorrectnessChecker;
    };
    /** `analyzeRuns` options minus `runs` (runs arrive as tool args, inline or
     *  via `path`). Omit to exclude the tool. */
    analyze?: Omit<AnalyzeRunsOptions, 'runs'>;
}
/** OpenAI function-tool wire shape for an `EvalToolDef`. */
export declare function toOpenAiTool(def: EvalToolDef): {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    };
};
/**
 * Build the eval toolset for the supplied config. Only sections present in
 * `cfg` produce tools, so the agent's tool list mirrors what the host
 * actually wired. Handlers fail loud on malformed args — no silent defaults.
 */
export declare function makeEvalTools(cfg: MakeEvalToolsConfig): EvalToolDef[];
//# sourceMappingURL=eval-tools.d.ts.map