import type { EveEvalCaseResult, EveEval, EveEvalResult, EveEvalTarget } from "#evals/types.js";
/**
 * Reporter lifecycle interface. The runner calls these methods at defined
 * points during eval execution. Methods may return a promise for reporters
 * that perform asynchronous work (e.g. uploading to a remote service).
 */
export interface EvalReporter {
    /**
     * The runner calls this once when an eval run begins.
     */
    onEvalStart(evaluation: EveEval, target: EveEvalTarget): void | Promise<void>;
    /**
     * The runner calls this after each case completes, with its scores.
     */
    onCaseComplete(caseResult: EveEvalCaseResult): void | Promise<void>;
    /**
     * The runner calls this once when an eval run finishes, with the aggregated result.
     */
    onEvalComplete(evalResult: EveEvalResult): void | Promise<void>;
}
