/**
 * @file Evaluation Pipeline
 * Multi-scorer orchestration with configurable execution
 */
import type { JsonObject } from "../../types/common.js";
import type { AggregatedScores, PipelineConfig, Scorer, ScorerInput } from "../../types/scorerTypes.js";
/**
 * Pipeline execution options
 */
export type PipelineExecutionOptions = {
    /** Correlation ID for tracing */
    correlationId?: string;
    /** Custom timeout override */
    timeout?: number;
    /** Skip specific scorers. Mutually exclusive with onlyScorers. */
    skipScorers?: string[];
    /** Only run specific scorers. Mutually exclusive with skipScorers. */
    onlyScorers?: string[];
    /** Additional metadata to attach */
    metadata?: JsonObject;
};
/**
 * Pipeline execution result
 */
export type PipelineResult = AggregatedScores & {
    /** Pipeline configuration used */
    pipelineConfig: PipelineConfig;
    /** Execution options used */
    executionOptions?: PipelineExecutionOptions;
    /** Errors that occurred during execution */
    errors: Array<{
        scorerId: string;
        error: string;
    }>;
    /** Scorers that were skipped */
    skippedScorers: string[];
};
/**
 * Evaluation Pipeline for running multiple scorers
 */
export declare class EvaluationPipeline {
    private _config;
    private _scorers;
    private _initialized;
    constructor(config: PipelineConfig);
    /**
     * Get pipeline configuration
     */
    get config(): PipelineConfig;
    /**
     * Check if pipeline is initialized
     */
    get initialized(): boolean;
    /**
     * Initialize the pipeline by loading all scorers
     */
    initialize(): Promise<void>;
    /**
     * Execute the pipeline on input
     */
    execute(input: ScorerInput, options?: PipelineExecutionOptions): Promise<PipelineResult>;
    private _validateExecutionOptions;
    /**
     * Get scorers to run based on options
     */
    private _getScorersToRun;
    /**
     * Get list of skipped scorers
     */
    private _getSkippedScorers;
    /**
     * Execute a single scorer with timeout
     */
    private _executeScorer;
    /**
     * Aggregate scores based on configuration
     */
    /**
     * Rescale a result's score to the default 0-MAX scale using its own scale info
     */
    private _rescaleToDefault;
    private _aggregateScores;
    /**
     * Add a scorer to the pipeline
     */
    addScorer(id: string, scorer: Scorer): void;
    /**
     * Remove a scorer from the pipeline
     */
    removeScorer(id: string): boolean;
    /**
     * Get a scorer by ID
     */
    getScorer(id: string): Scorer | undefined;
    /**
     * Get all scorer IDs
     */
    getScorerIds(): string[];
    /**
     * Update pipeline configuration
     */
    configure(config: Partial<PipelineConfig>): void;
    /**
     * Create a clone of this pipeline
     */
    clone(): EvaluationPipeline;
}
/**
 * Create a new evaluation pipeline
 */
export declare function createPipeline(config: PipelineConfig): EvaluationPipeline;
/**
 * Create and initialize a pipeline
 */
export declare function createAndInitializePipeline(config: PipelineConfig): Promise<EvaluationPipeline>;
