import type { AgentRunInput, AgentRunResult, ExperimentFileSystem, ExperimentGit, ExperimentRunResult, JournalEntry, MetricDef } from "../types.js"; type SimulationFs = ExperimentFileSystem; type TurnContext = { fs: SimulationFs; readFile: (filePath: string) => Promise; writeFile: (filePath: string, content: string) => Promise; }; type MetricResultQueue = Record; export type SimulationExecCall = { command: string; cwd?: string; timeout?: number; }; export type AgentTurnSpec = { assertPrompt?: (prompt: string, ctx: TurnContext) => void | Promise; fileChanges?: Record; output: AgentRunResult; }; export type SimulationMetricResult = { stdout: string; stderr: string; exitCode: number; }; export type CreateExperimentDocOptions = { agent?: string | string[]; metric?: MetricDef | MetricDef[]; baseline?: Record | null; body?: string; }; export type ExperimentLoopSimulationOptions = { docPath?: string; docContent?: string; files?: Record; maxExperiments: number; metricResults?: MetricResultQueue; signal?: AbortSignal; turns: AgentTurnSpec[]; }; export type SimulationGit = ExperimentGit & { commitAll: (message: string, cwd: string) => Promise; currentHashCalls: string[]; commitAllCalls: Array<{ message: string; cwd: string; }>; resetCalls: Array<{ commitHash: string; cwd: string; }>; getHeadHash: () => string; }; export type SimulationResult = { result: ExperimentRunResult; prompts: string[]; runs: AgentRunInput[]; fs: SimulationFs; git: SimulationGit; execCalls: SimulationExecCall[]; cwd: string; homeDir: string; docPath: string; journalPath: string; readDoc: () => Promise; readFile: (filePath: string) => Promise; readJournal: () => Promise; }; export declare function createExperimentDoc(options?: CreateExperimentDocOptions): string; export declare function metricResult(options?: { score?: number; stdout?: string; stderr?: string; exitCode?: number; passed?: boolean; }): SimulationMetricResult; export declare function agentOutput(output?: Partial, options?: { assertPrompt?: AgentTurnSpec["assertPrompt"]; fileChanges?: Record; }): AgentTurnSpec; export declare function agentMakesChanges(fileChanges?: Record, options?: { assertPrompt?: AgentTurnSpec["assertPrompt"]; stdout?: string; stderr?: string; }): AgentTurnSpec; export declare function createExperimentLoopSimulation(options: ExperimentLoopSimulationOptions): { run: () => Promise; }; export {};