/**
 * Reranker Factory
 *
 * Factory for creating reranker instances with configuration.
 * Follows the BaseFactory pattern for consistent lifecycle management.
 */
import { BaseFactory } from "../../core/infrastructure/index.js";
import type { AIProvider } from "../../types/providers.js";
import type { Reranker, RerankerConfig, RerankerMetadata, RerankerType } from "../../types/ragTypes.js";
export type { RerankerType } from "../../types/ragTypes.js";
export type { Reranker } from "../../types/ragTypes.js";
export type { RerankerConfig } from "../../types/ragTypes.js";
export type { RerankerMetadata } from "../../types/ragTypes.js";
/**
 * Reranker Factory
 *
 * Creates reranker instances based on type with configuration support.
 * Uses lazy loading via dynamic imports to avoid circular dependencies.
 */
export declare class RerankerFactory extends BaseFactory<Reranker, RerankerConfig> {
    private static instance;
    private metadataMap;
    private modelProvider;
    private constructor();
    /**
     * Get singleton instance
     */
    static getInstance(): RerankerFactory;
    /**
     * Reset singleton (for testing)
     */
    static resetInstance(): void;
    /**
     * Set the AI provider for LLM-based rerankers
     */
    setModelProvider(provider: AIProvider): void;
    /**
     * Register all default rerankers
     */
    protected registerAll(): Promise<void>;
    /**
     * Create LLM-based reranker wrapper
     */
    private createLLMReranker;
    /**
     * Create cross-encoder reranker wrapper
     */
    private createCrossEncoderReranker;
    /**
     * Create Cohere reranker wrapper
     */
    private createCohereReranker;
    /**
     * Create simple reranker wrapper
     */
    private createSimpleReranker;
    /**
     * Create batch reranker wrapper
     */
    private createBatchReranker;
    /**
     * Register a reranker with metadata and aliases
     */
    registerReranker(type: RerankerType, factory: (config?: RerankerConfig) => Promise<Reranker>, metadata: RerankerMetadata): void;
    /**
     * Create a reranker by type or alias
     */
    createReranker(typeOrAlias: string, config?: RerankerConfig): Promise<Reranker>;
    /**
     * Get metadata for a reranker
     */
    getRerankerMetadata(typeOrAlias: string): RerankerMetadata | undefined;
    /**
     * Get default configuration for a reranker
     */
    getDefaultConfig(typeOrAlias: string): Partial<RerankerConfig> | undefined;
    /**
     * Get available reranker types (not including aliases)
     */
    getAvailableTypes(): Promise<RerankerType[]>;
    /**
     * Get all aliases mapped to their types
     */
    getTypeAliases(): Map<string, string>;
    /**
     * Check if a type exists
     */
    hasType(typeOrAlias: string): boolean;
    /**
     * Get rerankers suitable for a use case
     */
    getRerankersForUseCase(useCase: string): RerankerType[];
    /**
     * Get rerankers that don't require external APIs
     */
    getLocalRerankers(): RerankerType[];
    /**
     * Get rerankers that don't require AI models
     */
    getModelFreeRerankers(): RerankerType[];
    /**
     * Get all reranker metadata
     */
    getAllMetadata(): Map<RerankerType, RerankerMetadata>;
    /**
     * Clear factory and metadata
     */
    clear(): void;
}
/**
 * Global reranker factory singleton
 */
export declare const rerankerFactory: RerankerFactory;
/**
 * Convenience function to create a reranker
 */
export declare function createReranker(typeOrAlias: string, config?: RerankerConfig): Promise<Reranker>;
/**
 * Convenience function to get available reranker types
 */
export declare function getAvailableRerankerTypes(): Promise<RerankerType[]>;
/**
 * Convenience function to get reranker metadata
 */
export declare function getRerankerMetadata(typeOrAlias: string): RerankerMetadata | undefined;
/**
 * Convenience function to get default config
 */
export declare function getRerankerDefaultConfig(typeOrAlias: string): Partial<RerankerConfig> | undefined;
