/**
 * `test_case_facts`, one row per run × task × model × variant (D0091).
 *
 * The workhorse table: per-test-case cost, tokens, latency, pass/fail, the
 * composite and per-dimension scores, and the output-quality flags, joined to
 * the feature area. Answers "cost/tokens/latency and score per feature area
 * over time", none of which is queryable today.
 *
 * ## Two sources, joined per test case
 *
 * The grain is one `rawResults` entry (per run × mode × task × model, always
 * present when the eval ran, and its `sourceUri` is the natural `gs_uri`). The
 * feature `area`, the normalized composite / per-dimension scores, and the
 * output-quality flags come from the enriched `scoreSummary.testResults[]`
 * (`StoredTestResult`), looked up by (task, model, variant). `passed`, cost,
 * tokens, and latency come from the raw entry itself. A run missing either
 * artifact yields zero rows (the engine only runs a descriptor when every
 * `sourceArtifacts` type is present).
 *
 * Derives from the canonical `ScoreSummary` / `StoredTestResult` core types
 * and the `splitTaskVariant` axis convention (D0045, derive, don't redeclare);
 * the promptfoo raw shape has no canonical core type, so its read-projection is
 * a local minimal interface, narrowed field-by-field.
 *
 * @see packages/core/src/types/index.ts, ScoreSummary, StoredTestResult
 * @see docs/design-docs/bigquery-analytics-fact-loader.md
 */
import { z } from "zod";
import { type RunFactBase } from "./common.js";
export type TestCaseFactRow = RunFactBase & {
    /** Variant-or-mode axis value: `"baseline"` / `"gold"` (literacy) or the mode. */
    readonly mode: string;
    /** Literacy variant when the mode encodes one, else null. */
    readonly variant: string | null;
    /** Task id (variant suffix stripped). */
    readonly task: string;
    /** Model under evaluation. */
    readonly model_id: string;
    /** Resolved feature area (from the score summary), or null when unjoined. */
    readonly area: string | null;
    /** Whether the grading result passed. */
    readonly passed: boolean | null;
    /** Weighted composite score (0–100). */
    readonly composite_score: number | null;
    /** Per-test cost (USD). */
    readonly cost: number | null;
    /** Prompt/input tokens. */
    readonly prompt_tokens: number | null;
    /** Completion/output tokens. */
    readonly completion_tokens: number | null;
    /** Cached tokens (cache-served results). */
    readonly cached_tokens: number | null;
    /** Total tokens. */
    readonly total_tokens: number | null;
    /** Response latency in milliseconds. */
    readonly latency_ms: number | null;
    /** Model produced no gradeable output (empty/refusal/error). */
    readonly output_failure: boolean | null;
    /** Response was truncated from a longer output. */
    readonly output_truncated: boolean | null;
    /** Per-dimension grader scores keyed by dimension name (0–100). */
    readonly dimension_scores: Record<string, number> | null;
};
declare const rowSchema: z.ZodObject<{
    mode: z.ZodString;
    variant: z.ZodNullable<z.ZodString>;
    task: z.ZodString;
    model_id: z.ZodString;
    area: z.ZodNullable<z.ZodString>;
    passed: z.ZodNullable<z.ZodBoolean>;
    composite_score: z.ZodNullable<z.ZodNumber>;
    cost: z.ZodNullable<z.ZodNumber>;
    prompt_tokens: z.ZodNullable<z.ZodNumber>;
    completion_tokens: z.ZodNullable<z.ZodNumber>;
    cached_tokens: z.ZodNullable<z.ZodNumber>;
    total_tokens: z.ZodNullable<z.ZodNumber>;
    latency_ms: z.ZodNullable<z.ZodNumber>;
    output_failure: z.ZodNullable<z.ZodBoolean>;
    output_truncated: z.ZodNullable<z.ZodBoolean>;
    dimension_scores: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodNumber>>;
    run_id: z.ZodString;
    report_id: z.ZodNullable<z.ZodString>;
    completed_at: z.ZodString;
    gs_uri: z.ZodString;
}, z.core.$strip>;
export declare const testCaseFacts: import("../descriptor.js").FactTableDescriptor<import("../descriptor.js").FactRow>;
export { rowSchema as testCaseFactRowSchema };
