/**
 * @file Scorer registry for managing scorer registration and discovery
 * Follows NeuroLink's factory + registry pattern with dynamic imports
 */
import type { Scorer, ScorerCategory, ScorerConfig, ScorerFactory, ScorerMetadata, ScorerRegistryEntry, ScorerType } from "../../types/index.js";
/**
 * Central registry for all scorers
 * Manages registration, discovery, and instantiation
 */
export declare class ScorerRegistry {
    private static scorers;
    private static initialized;
    private static initPromise;
    /**
     * Register a scorer with the registry
     */
    static register(entry: ScorerRegistryEntry): void;
    /**
     * Register a scorer using a simple configuration
     */
    static registerScorer(metadata: ScorerMetadata, factory: ScorerFactory, aliases?: string[]): void;
    private static registerScorerDefinitions;
    private static registerBuiltInLLMScorers;
    private static registerBuiltInRuleScorers;
    /**
     * Register built-in scorers using dynamic imports
     */
    static registerBuiltInScorers(): Promise<void>;
    /**
     * Get a scorer instance by ID
     */
    static getScorer(scorerId: string, config?: ScorerConfig): Promise<Scorer | undefined>;
    /**
     * Get scorers by category
     */
    static getScorersByCategory(category: ScorerCategory): ScorerRegistryEntry[];
    /**
     * Get scorers by type
     */
    static getScorersByType(type: ScorerType): ScorerRegistryEntry[];
    /**
     * List all registered scorer metadata
     */
    static list(): ScorerMetadata[];
    /**
     * Check if a scorer is registered
     */
    static has(scorerId: string): boolean;
    /**
     * Unregister a scorer
     */
    static unregister(scorerId: string): boolean;
    /**
     * Clear all registered scorers
     */
    static clear(): void;
    /**
     * Ensure built-in scorers are initialized
     */
    private static ensureInitialized;
    /**
     * Get the number of registered scorers (excluding aliases)
     */
    static get size(): number;
}
