import type { AgentResponse, LoopMonitorConfig, WorkflowMaxSteps, WorkflowState, WorkflowStep } from '../../models/types.js';
import type { RuntimeStepResolution } from '../types.js';
import type { OptionsBuilder } from './OptionsBuilder.js';
import type { StepExecutor } from './StepExecutor.js';
interface LoopMonitorJudgeRunnerDeps {
    optionsBuilder: OptionsBuilder;
    stepExecutor: StepExecutor;
    state: WorkflowState;
    task: string;
    getMaxSteps: () => WorkflowMaxSteps;
    language?: string;
    updatePersonaSession: (persona: string, sessionId: string | undefined) => void;
    resolveNextStepFromDone: (step: WorkflowStep, response: AgentResponse) => string;
    onStepStart: (step: WorkflowStep, iteration: number, instruction: string) => void;
    onStepComplete: (step: WorkflowStep, response: AgentResponse, instruction: string) => void;
    emitCollectedReports: () => void;
    resetCycleDetector: () => void;
}
export declare class LoopMonitorJudgeRunner {
    private readonly deps;
    constructor(deps: LoopMonitorJudgeRunnerDeps);
    run(monitor: LoopMonitorConfig, cycleCount: number, triggeringStep: WorkflowStep, triggeringRuntime?: RuntimeStepResolution): Promise<string>;
    private createJudgeStep;
    private resolveJudgeRuntime;
    private buildDefaultProviderOptions;
    private buildDefaultInstruction;
}
export {};
//# sourceMappingURL=LoopMonitorJudgeRunner.d.ts.map