/**
 * Executes arpeggio workflow steps: data-driven batch processing.
 *
 * Reads data from a source, expands templates with batch data,
 * calls LLM for each batch (with concurrency control),
 * merges results, and returns an aggregated response.
 */
import type { WorkflowStep, WorkflowState, WorkflowResumePointEntry } from '../../models/types.js';
import type { OptionsBuilder } from './OptionsBuilder.js';
import type { StepExecutor } from './StepExecutor.js';
import type { PhaseName, PhasePromptParts, RuntimeStepResolution, StepRunResult } from '../types.js';
import type { StructuredCaller } from '../../../agents/structured-caller.js';
export interface ArpeggioRunnerDeps {
    readonly optionsBuilder: OptionsBuilder;
    readonly stepExecutor: StepExecutor;
    readonly getCwd: () => string;
    readonly getWorkflowName: () => string;
    readonly getInteractive: () => boolean;
    readonly observabilityEnabled: boolean;
    readonly observabilityRunId?: string;
    readonly sanitizeObservabilityText?: (text: string) => string;
    readonly getCurrentWorkflowStack?: () => WorkflowResumePointEntry[] | undefined;
    readonly detectRuleIndex: (content: string, stepName: string) => number;
    readonly structuredCaller: StructuredCaller;
    readonly onPhaseStart?: (step: WorkflowStep, phase: 1 | 2 | 3, phaseName: PhaseName, instruction: string, promptParts: PhasePromptParts, phaseExecutionId?: string, iteration?: number) => void;
    readonly onPhaseComplete?: (step: WorkflowStep, phase: 1 | 2 | 3, phaseName: PhaseName, content: string, status: string, error?: string, phaseExecutionId?: string, iteration?: number) => void;
}
export declare class ArpeggioRunner {
    private readonly deps;
    constructor(deps: ArpeggioRunnerDeps);
    /**
     * Run an arpeggio step: read data, expand templates, call LLM,
     * merge results, and return an aggregated response.
     */
    runArpeggioStep(step: WorkflowStep, state: WorkflowState, runtime?: RuntimeStepResolution): Promise<StepRunResult>;
    /** Execute all batches with concurrency control */
    private executeBatches;
}
//# sourceMappingURL=ArpeggioRunner.d.ts.map