/**
 * @file EvaluatorFactory - Factory for creating evaluator instances.
 * Extends BaseFactory to provide dynamic evaluator creation with configuration support.
 */
import { BaseFactory } from "../core/infrastructure/index.js";
import type { EvaluationConfig, EvaluatorPreset } from "../types/index.js";
import { Evaluator } from "./index.js";
/**
 * Factory for creating Evaluator instances with various configurations.
 * Supports presets for common use cases and custom configurations.
 *
 * @example
 * ```typescript
 * const factory = EvaluatorFactory.getInstance();
 *
 * // Create with default configuration
 * const evaluator = await factory.create('default');
 *
 * // Create with a preset
 * const strictEvaluator = await factory.create('strict');
 *
 * // Create with custom config
 * const customEvaluator = await factory.create('default', {
 *   threshold: 9,
 *   evaluationModel: 'gpt-4',
 *   provider: 'openai'
 * });
 * ```
 */
export declare class EvaluatorFactory extends BaseFactory<Evaluator, EvaluationConfig> {
    private static instance;
    private constructor();
    /**
     * Gets the singleton instance of the EvaluatorFactory.
     */
    static getInstance(): EvaluatorFactory;
    /**
     * Resets the singleton instance (useful for testing).
     */
    static resetInstance(): void;
    /**
     * Registers all built-in evaluator configurations.
     * This is called automatically on first access.
     */
    protected registerAll(): Promise<void>;
    /**
     * Creates an evaluator instance with the specified preset and optional config overrides.
     *
     * @param presetOrName - The preset name or alias
     * @param config - Optional configuration overrides
     * @returns A configured Evaluator instance
     */
    createEvaluator(presetOrName?: string, config?: EvaluationConfig): Promise<Evaluator>;
    /**
     * Creates an evaluator with a fully custom configuration (not based on a preset).
     *
     * @param config - The evaluation configuration
     * @returns A configured Evaluator instance
     */
    createCustomEvaluator(config: EvaluationConfig): Evaluator;
    /**
     * Gets information about a preset by name or alias.
     *
     * @param presetOrName - The preset name or alias
     * @returns The preset information or undefined if not found
     */
    getPresetInfo(presetOrName: string): Promise<EvaluatorPreset | undefined>;
    /**
     * Lists all available presets with their descriptions.
     *
     * @returns Array of preset information
     */
    listPresets(): Promise<Array<{
        name: string;
        aliases: string[];
        preset: EvaluatorPreset;
    }>>;
    /**
     * Validates an evaluation configuration.
     *
     * @param config - The configuration to validate
     * @throws {NeuroLinkFeatureError} If the configuration is invalid
     */
    validateConfig(config: EvaluationConfig): void;
    /**
     * Registers a custom evaluator preset.
     *
     * @param name - Unique name for the preset
     * @param config - The evaluation configuration for this preset
     * @param aliases - Alternative names for the preset
     * @param description - Human-readable description
     */
    registerPreset(name: string, config: EvaluationConfig, aliases?: string[], description?: string): void;
    /**
     * Unregisters a preset from the factory.
     *
     * @param name - The preset name to remove
     * @returns true if the preset was removed, false if it didn't exist
     */
    unregisterPreset(name: string): boolean;
}
export declare const getEvaluatorFactory: () => EvaluatorFactory;
