/**
 * Behavioral eval framework — EvalScenario + runEval + LLM scorer.
 *
 * Sprint-563: B6 — EvalScenario + LLM scorer + Vitest integration.
 *
 * Setup an agent scenario with assertions on the output events.
 * Optionally score the result with an LLM judge.
 * Integrates with Vitest for regression gating in CI.
 */
import type { OODAAgent, CycleEvent } from "../orchestration/index.js";
export interface EvalScenario {
    /** Scenario name (shown in test output). */
    name: string;
    /** Agent to evaluate. */
    agent: OODAAgent;
    /** Optional setup hook — runs before triggerCycle. */
    setup?: () => Promise<void>;
    /** Assertions on the streamed events. Return true if pass, false if fail. */
    assertions?: (events: CycleEvent[]) => boolean | Promise<boolean>;
    /** Expected cycle status. */
    expectedStatus?: "succeeded" | "failed" | "skipped";
    /** Minimum score from LLM judge (0-100). Only checked if llmScorer is set. */
    minScore?: number;
}
export interface EvalResult {
    name: string;
    passed: boolean;
    events: CycleEvent[];
    status: string;
    assertionFailure?: string;
    llmScore?: number;
    durationMs: number;
}
export interface EvalSuite {
    results: EvalResult[];
    passed: number;
    failed: number;
    total: number;
}
export interface LLMScorer {
    score(events: CycleEvent[], scenario: EvalScenario): Promise<number>;
}
/**
 * Run a single eval scenario. Triggers one cycle via streamCycle() and
 * validates assertions + optional LLM scorer.
 */
export declare function runEval(scenario: EvalScenario, opts?: {
    llmScorer?: LLMScorer;
}): Promise<EvalResult>;
/**
 * Run a suite of eval scenarios. Returns aggregate results.
 */
export declare function runEvalSuite(scenarios: EvalScenario[], opts?: {
    llmScorer?: LLMScorer;
}): Promise<EvalSuite>;
/**
 * A basic scorer that checks if the expected number of phase events occurred.
 * Production use should inject a real LLM judge via the LLMScorer interface.
 */
export declare function createPhaseCountScorer(expectedPhases: string[]): LLMScorer;
//# sourceMappingURL=eval.d.ts.map