import type { AgencyConfig } from "../config.js"; import { type JudgeSuiteArgs } from "../eval/judge/suite.js"; import type { SuiteVerdict } from "../eval/judge/types.js"; import type { EvalRunResult, Input } from "../eval/runTypes.js"; import { type ProposeMutationArgs } from "./mutator.js"; import { type OptimizeReporter } from "./reporter.js"; import type { MutationProposal, OptimizeLoopConfig, OptimizeResult } from "./types.js"; export type OptimizeLoopDeps = { /** Presentation boundary; defaults to a silent reporter. */ reporter?: OptimizeReporter; /** Pipe candidate agents' stdout/stderr through to the console. */ pipeAgentOutput?: boolean; mutate?: (args: ProposeMutationArgs) => Promise; evalRun?: (args: { agent: string; inputs: Input[]; runsDir: string; runId: string; config: AgencyConfig; pipeAgentOutput: boolean; }) => Promise; judgeSuite?: (args: JudgeSuiteArgs) => Promise; }; export declare function optimizeLoop(config: OptimizeLoopConfig, deps?: OptimizeLoopDeps): Promise;