import type { MorePartsResponse } from '../../../agents/agent-usecases.js';
import type { PartDefinition, PartResult } from '../../models/types.js';
export interface TeamLeaderExecutionOptions {
    initialParts: PartDefinition[];
    maxConcurrency: number;
    refillThreshold: number;
    maxTotalParts?: number;
    runPart: (part: PartDefinition, partIndex: number) => Promise<PartResult>;
    requestMoreParts: (args: {
        partResults: PartResult[];
        scheduledIds: string[];
        remainingPartBudget: number;
        unfinishedScheduledPartCount: number;
    }) => Promise<MorePartsResponse>;
    onPartQueued?: (part: PartDefinition, partIndex: number) => void;
    onPartCompleted?: (result: PartResult) => void;
    onPlanningDone?: (feedback: {
        reason: string;
        plannedParts: number;
        completedParts: number;
    }) => void;
    onPlanningNoNewParts?: (feedback: {
        reason: string;
        plannedParts: number;
        completedParts: number;
    }) => void;
    onPartsAdded?: (feedback: {
        parts: PartDefinition[];
        reason: string;
        totalPlanned: number;
    }) => void;
    onPlanningError?: (error: unknown) => void;
}
export interface TeamLeaderExecutionResult {
    plannedParts: PartDefinition[];
    partResults: PartResult[];
}
export declare function runTeamLeaderExecution(options: TeamLeaderExecutionOptions): Promise<TeamLeaderExecutionResult>;
//# sourceMappingURL=team-leader-execution.d.ts.map