import type { AgentResponse, LoopMonitorConfig, WorkflowMaxSteps, WorkflowState, WorkflowStep } from '../../models/types.js';
import type { RuntimeStepResolution, StepRunResult, WorkflowEngineOptions } from '../types.js';
import { type WorkflowRuleTransition } from './transitions.js';
interface WorkflowEngineStepCoordinatorDeps {
    config: {
        steps: WorkflowStep[];
    };
    state: WorkflowState;
    task: string;
    getMaxSteps: () => WorkflowMaxSteps;
    getOptions: () => WorkflowEngineOptions;
    stepExecutor: {
        runNormalStep: (step: WorkflowStep, state: WorkflowState, task: string, maxSteps: WorkflowMaxSteps, updateSession: (persona: string, sessionId: string | undefined) => void, prebuiltInstruction?: string, runtime?: RuntimeStepResolution) => Promise<StepRunResult>;
        buildInstruction: (step: WorkflowStep, stepIteration: number, state: WorkflowState, task: string, maxSteps: WorkflowMaxSteps) => string;
        buildPhase1Instruction: (instruction: string, step: WorkflowStep, runtime?: RuntimeStepResolution) => string;
        drainReportFiles: () => Array<{
            step: WorkflowStep;
            filePath: string;
            fileName: string;
        }>;
    };
    parallelRunner: {
        runParallelStep: (step: WorkflowStep, state: WorkflowState, task: string, maxSteps: WorkflowMaxSteps, updateSession: (persona: string, sessionId: string | undefined) => void, runtime?: RuntimeStepResolution) => Promise<StepRunResult>;
    };
    arpeggioRunner: {
        runArpeggioStep: (step: WorkflowStep, state: WorkflowState, runtime?: RuntimeStepResolution) => Promise<StepRunResult>;
    };
    teamLeaderRunner: {
        runTeamLeaderStep: (step: WorkflowStep, state: WorkflowState, task: string, maxSteps: WorkflowMaxSteps, updateSession: (persona: string, sessionId: string | undefined) => void, runtime?: RuntimeStepResolution) => Promise<StepRunResult>;
    };
    systemStepExecutor: {
        run: (step: WorkflowStep, state: WorkflowState) => Promise<AgentResponse>;
    };
    loopMonitorJudgeRunner: {
        run: (monitor: LoopMonitorConfig, cycleCount: number, triggeringStep: WorkflowStep, triggeringRuntime?: RuntimeStepResolution) => Promise<string>;
    };
    workflowCallRunner: {
        run: (step: WorkflowStep & {
            call: string;
        }, runtime?: RuntimeStepResolution) => Promise<StepRunResult>;
        resolveRuntime: (step: WorkflowStep & {
            call: string;
        }) => RuntimeStepResolution;
    };
    updatePersonaSession: (persona: string, sessionId: string | undefined) => void;
    emitReport: (step: WorkflowStep, filePath: string, fileName: string) => void;
}
export declare class WorkflowEngineStepCoordinator {
    private readonly deps;
    constructor(deps: WorkflowEngineStepCoordinatorDeps);
    getStep(name: string): WorkflowStep;
    resolveRuntimeForStep(step: WorkflowStep): RuntimeStepResolution | undefined;
    runStep(step: WorkflowStep, prebuiltInstruction?: string, runtime?: RuntimeStepResolution): Promise<StepRunResult>;
    resolveNextStepFromDone(step: WorkflowStep, response: AgentResponse): string;
    resolveTransitionFromDone(step: WorkflowStep, response: AgentResponse): WorkflowRuleTransition;
    buildInstruction(step: WorkflowStep, stepIteration: number): string;
    buildPhase1Instruction(step: WorkflowStep, instruction: string, runtime?: RuntimeStepResolution): string;
    runLoopMonitorJudge(monitor: LoopMonitorConfig, cycleCount: number, triggeringStep: WorkflowStep, triggeringRuntime?: RuntimeStepResolution): Promise<string>;
}
export {};
//# sourceMappingURL=WorkflowEngineStepCoordinator.d.ts.map