import type { AgentRunInput, AgentRunUsage, PipelineFileSystem, PipelinePlan, PipelineRunOptions, PipelineRunResult, PipelineTask, ResolvedStepDefinitions, StepDefinition } from "../types.js"; type SimulationFs = PipelineFileSystem; type TurnContext = { fs: SimulationFs; readFile: (filePath: string) => Promise; writeFile: (filePath: string, content: string) => Promise; readPlan: () => Promise; }; type TurnOutput = { stdout: string; stderr?: string; exitCode?: number; usage?: AgentRunUsage; }; export type TurnSpec = { assertPrompt?: (prompt: string, ctx: TurnContext) => void | Promise; fileChanges?: Record; output: TurnOutput; }; export type SimulationOptions = { plan: PipelinePlan; globalSteps?: ResolvedStepDefinitions; globalStepsSetup?: StepDefinition; globalStepsTeardown?: StepDefinition; projectSteps?: ResolvedStepDefinitions; projectStepsSetup?: StepDefinition; projectStepsTeardown?: StepDefinition; turns: TurnSpec[]; files?: Record; config?: { maxRuns?: number; logDir?: string; }; onPlanReloadError?: (error: Error) => void; }; export type SimulationRun = AgentRunInput; export type SimulationTaskCompletion = Parameters>[0]; export type SimulationResult = { result: PipelineRunResult; prompts: string[]; runs: SimulationRun[]; taskCompletions: SimulationTaskCompletion[]; fs: SimulationFs; readFile: (filePath: string) => Promise; readPlan: () => Promise; getTask: (taskId: string) => Promise; }; export declare function successTurn(assertPrompt?: TurnSpec["assertPrompt"], fileChanges?: Record): TurnSpec; export declare function failTurn(stderr: string, assertPrompt?: TurnSpec["assertPrompt"]): TurnSpec; export declare function createPipelineSimulation(options: SimulationOptions): { run: () => Promise; }; export {};