/**
 * Port: How LLM evaluation is executed.
 *
 * Abstracts the eval engine (Promptfoo today, potentially something else
 * in the future). The domain kernel never mentions Promptfoo — it works
 * with evaluation results.
 */
import type { StepResult } from "../types/index.js";
export interface EvalRunConfig {
    /** Path to the promptfoo config file to execute */
    configPath: string;
    /** Debug filter flags (--filter-first-n, --filter-pattern, etc.) */
    filterFlags?: string;
    /** Concurrency limit */
    concurrency?: number;
    /** Environment variables to pass to the eval process */
    env?: Record<string, string>;
    /**
     * Maximum wall-clock time for this eval subprocess in ms.
     * When exceeded, the process is killed and partial results are used.
     * Default: no limit (backward compatible).
     */
    maxDurationMs?: number;
}
export interface EvalRunner {
    /** Run an evaluation and return the step result */
    run(config: EvalRunConfig): Promise<StepResult>;
    /** Extract the share URL from eval output (Promptfoo-specific) */
    extractShareUrl?(outputPath: string): string | undefined;
}
