/**
 * Batch Processing Mode
 *
 * Process multiple files or tasks in batch:
 * - File-based batch operations
 * - Task queue processing
 * - Parallel execution
 * - Progress tracking
 * - Result aggregation
 */
export interface BatchTask {
    id: string;
    type: 'file' | 'command' | 'prompt';
    input: string;
    options?: Record<string, unknown>;
    priority?: number;
}
export interface BatchResult {
    taskId: string;
    success: boolean;
    output?: string;
    error?: string;
    durationMs: number;
    startedAt: Date;
    completedAt: Date;
}
export interface BatchProgress {
    total: number;
    completed: number;
    failed: number;
    inProgress: number;
    percentage: number;
    currentTask?: string;
    estimatedRemainingMs?: number;
}
export interface BatchConfig {
    /** Maximum parallel tasks */
    concurrency?: number;
    /** Continue on error */
    continueOnError?: boolean;
    /** Timeout per task (ms) */
    taskTimeout?: number;
    /** Progress callback */
    onProgress?: (progress: BatchProgress) => void;
    /** Task complete callback */
    onTaskComplete?: (result: BatchResult) => void;
    /** Dry run (don't execute, just validate) */
    dryRun?: boolean;
}
export interface BatchSummary {
    totalTasks: number;
    successfulTasks: number;
    failedTasks: number;
    totalDurationMs: number;
    averageTaskDurationMs: number;
    results: BatchResult[];
}
/**
 * Batch Processor
 */
export declare class BatchProcessor {
    private config;
    private onProgress?;
    private onTaskComplete?;
    private tasks;
    private results;
    private isRunning;
    private aborted;
    constructor(config?: BatchConfig);
    /**
     * Add a single task
     */
    addTask(task: BatchTask): void;
    /**
     * Add multiple tasks
     */
    addTasks(tasks: BatchTask[]): void;
    /**
     * Add file tasks from glob pattern
     */
    addFileTasks(pattern: string | string[], options?: {
        cwd?: string;
        taskType?: 'file';
        taskOptions?: Record<string, unknown>;
    }): Promise<number>;
    /**
     * Add tasks from a batch file (JSON or text)
     */
    addTasksFromFile(filePath: string): Promise<number>;
    /**
     * Execute all tasks
     */
    execute(taskHandler: (task: BatchTask) => Promise<{
        success: boolean;
        output?: string;
        error?: string;
    }>): Promise<BatchSummary>;
    /**
     * Execute tasks with concurrency limit
     */
    private executeWithConcurrency;
    /**
     * Abort execution
     */
    abort(): void;
    /**
     * Check if running
     */
    isExecuting(): boolean;
    /**
     * Get current results
     */
    getResults(): BatchResult[];
    /**
     * Clear all tasks
     */
    clear(): void;
    /**
     * Get task count
     */
    getTaskCount(): number;
    /**
     * Format summary for display
     */
    static formatSummary(summary: BatchSummary): string;
}
/**
 * Create a batch processor with file tasks
 */
export declare function createFileBatchProcessor(pattern: string | string[], config?: BatchConfig): Promise<BatchProcessor>;
export default BatchProcessor;
