import type { AgencyConfig } from "../../config/config.js"; import type { EvalRunGrading } from "../../eval/runTypes.js"; import { type ScoreDraft } from "../../runDirectory/mutations.js"; import { type GraderSource } from "./gradeRun.js"; import type { Scorecard } from "./scorecard.js"; export type GradeSuiteResult = { grading: EvalRunGrading; scorecard: Scorecard; passId: string | null; /** LLM spend of this pass's judge calls, in USD. */ judgeCostUsd: number; }; /** * Score a run directory and record the verdict as one grading pass: one * `score` annotation per grader per trace, all sharing a fresh pass id, the * last one marking the pass complete. Reads one snapshot, grades it, converts * the grades to score drafts, and hands them to `recordGradingPass` — the run * directory owns how they land. Shared by every caller that grades a * directory (`eval grade`, the optimizer's per-candidate grading). * * `record: false` grades without writing (the optimizer's throwaway candidate * directories, and dry runs). `defaultGoal` is `eval grade --goal`: the goal * for tests that recorded none. */ export declare function gradeSuite(runDir: string, graders: GraderSource, config: AgencyConfig, options?: { record?: boolean; defaultGoal?: string; }): Promise; /** One draft per grade that actually ran. A gate-failed or ungraded trace * contributes the rows it has (its zero is the fold's business: a failed * gate is a `pass: false` row, an ungraded trace has none). A judge's row * records the goal it scored against, so a re-grade with a different * `--goal` stays tellable apart from the first. */ export declare function scoreDrafts(scorecard: Scorecard): ScoreDraft[];