import type { WorkflowStep, WorkflowState, Language, WorkflowResumePointEntry } from '../../models/types.js';
import type { StepProviderOptions } from '../../models/workflow-types.js';
import type { RunAgentOptions } from '../../../agents/runner.js';
import type { WorkflowMeta } from '../../../agents/types.js';
import type { PhaseRunnerContext } from '../phase-runner.js';
import type { WorkflowEngineOptions, PhaseName, StepProviderInfo, PhasePromptParts, JudgeStageEntry, RuntimeStepResolution } from '../types.js';
export declare class OptionsBuilder {
    private readonly engineOptions;
    private readonly getCwd;
    private readonly getProjectCwd;
    private readonly getSessionId;
    private readonly getReportDir;
    private readonly getLanguage;
    private readonly getWorkflowSteps;
    private readonly getWorkflowName;
    private readonly getWorkflowDescription;
    private readonly getCurrentWorkflowStack;
    constructor(engineOptions: WorkflowEngineOptions, getCwd: () => string, getProjectCwd: () => string, getSessionId: (persona: string) => string | undefined, getReportDir: () => string, getLanguage: () => Language | undefined, getWorkflowSteps: () => ReadonlyArray<{
        name: string;
        description?: string;
    }>, getWorkflowName: () => string, getWorkflowDescription: () => string | undefined, getCurrentWorkflowStack?: () => WorkflowResumePointEntry[] | undefined);
    private resolveEngineProviderModel;
    resolveStepProviderModel(step: WorkflowStep, runtime?: RuntimeStepResolution): StepProviderInfo;
    private resolveMergedProviderOptions;
    /** Build common RunAgentOptions shared by all phases */
    buildBaseOptions(step: WorkflowStep, mergedProviderOptions?: StepProviderOptions, runtime?: RuntimeStepResolution): RunAgentOptions;
    buildPhase1WorkflowMeta(workflowMeta: WorkflowMeta | undefined, runtime?: RuntimeStepResolution): WorkflowMeta | undefined;
    private resolveSupportedMaxTurns;
    /** Build RunAgentOptions for Phase 1 (main execution) */
    buildAgentOptions(step: WorkflowStep, runtime?: RuntimeStepResolution): RunAgentOptions;
    /** Build RunAgentOptions for session-resume phases (Phase 2, Phase 3) */
    buildResumeOptions(step: WorkflowStep, sessionId: string, overrides: Pick<RunAgentOptions, 'maxTurns'>, runtime?: RuntimeStepResolution): RunAgentOptions;
    /** Build RunAgentOptions for Phase 2 retry with a new session */
    buildNewSessionReportOptions(step: WorkflowStep, overrides: Pick<RunAgentOptions, 'allowedTools' | 'maxTurns'>, runtime?: RuntimeStepResolution): RunAgentOptions;
    /** Build PhaseRunnerContext for Phase 2/3 execution */
    buildPhaseRunnerContext(state: WorkflowState, lastResponse: string | undefined, updatePersonaSession: (persona: string, sessionId: string | undefined) => void, onPhaseStart?: (step: WorkflowStep, phase: 1 | 2 | 3, phaseName: PhaseName, instruction: string, promptParts: PhasePromptParts, phaseExecutionId?: string, iteration?: number) => void, onPhaseComplete?: (step: WorkflowStep, phase: 1 | 2 | 3, phaseName: PhaseName, content: string, status: string, error?: string, phaseExecutionId?: string, iteration?: number) => void, onJudgeStage?: (step: WorkflowStep, phase: 3, phaseName: 'judge', entry: JudgeStageEntry, phaseExecutionId?: string, iteration?: number) => void, iteration?: number, runtime?: RuntimeStepResolution): PhaseRunnerContext;
    private requireStructuredCaller;
}
//# sourceMappingURL=OptionsBuilder.d.ts.map