/**
 * @file Batch Strategy
 * Batch processing for evaluation pipelines
 */
import type { ScorerInput } from "../../../types/scorerTypes.js";
import type { EvaluationPipeline, PipelineExecutionOptions, PipelineResult } from "../evaluationPipeline.js";
/**
 * Batch processing configuration
 */
export type BatchConfig = {
    /** Maximum concurrent evaluations */
    concurrency?: number;
    /** Delay between batches (ms) */
    batchDelay?: number;
    /** Continue on individual failures */
    continueOnError?: boolean;
    /** Progress callback */
    onProgress?: (progress: BatchProgress) => void;
    /** Individual result callback */
    onResult?: (result: BatchItemResult) => void;
};
/**
 * Batch progress information
 */
export type BatchProgress = {
    total: number;
    completed: number;
    failed: number;
    remaining: number;
    percentComplete: number;
    estimatedTimeRemaining?: number;
};
/**
 * Individual batch item result
 */
export type BatchItemResult = {
    index: number;
    input: ScorerInput;
    result?: PipelineResult;
    error?: string;
    duration: number;
};
/**
 * Batch evaluation result
 */
export type BatchResult = {
    /** All individual results */
    results: BatchItemResult[];
    /** Summary statistics */
    summary: {
        total: number;
        successful: number;
        failed: number;
        averageScore: number;
        passRate: number;
        totalDuration: number;
        averageDuration: number;
    };
};
/**
 * Batch evaluation strategy
 */
export declare class BatchStrategy {
    private _pipeline;
    private _config;
    constructor(pipeline: EvaluationPipeline, config?: BatchConfig);
    /**
     * Evaluate a batch of inputs
     */
    evaluate(inputs: ScorerInput[], options?: PipelineExecutionOptions): Promise<BatchResult>;
    /**
     * Evaluate a single item
     */
    private _evaluateItem;
    /**
     * Estimate remaining time based on average duration
     */
    private _estimateRemainingTime;
    /**
     * Delay helper
     */
    private _delay;
    /**
     * Update configuration
     */
    configure(config: Partial<BatchConfig>): void;
}
/**
 * Create a batch strategy for a pipeline
 */
export declare function createBatchStrategy(pipeline: EvaluationPipeline, config?: BatchConfig): BatchStrategy;
/**
 * Evaluate a batch of inputs using a pipeline
 */
export declare function evaluateBatch(pipeline: EvaluationPipeline, inputs: ScorerInput[], config?: BatchConfig): Promise<BatchResult>;
/**
 * Stream batch evaluation results
 */
export declare function streamBatchEvaluation(pipeline: EvaluationPipeline, inputs: ScorerInput[], config?: Omit<BatchConfig, "onResult" | "onProgress">): AsyncGenerator<BatchItemResult, BatchResult["summary"], void>;
