/**
 * Chunker Factory
 *
 * Factory for creating chunker instances with configuration.
 * Follows the BaseFactory pattern for consistent lifecycle management.
 */
import { BaseFactory } from "../core/infrastructure/index.js";
import type { Chunker, ChunkerConfig, ChunkerMetadata, ChunkingStrategy } from "../types/index.js";
/**
 * Chunker Factory
 *
 * Creates chunker instances based on strategy with configuration support.
 * Uses lazy loading via dynamic imports to avoid circular dependencies.
 */
export declare class ChunkerFactory extends BaseFactory<Chunker, ChunkerConfig> {
    private static instance;
    private metadataMap;
    private constructor();
    /**
     * Get singleton instance
     */
    static getInstance(): ChunkerFactory;
    /**
     * Reset singleton (for testing)
     */
    static resetInstance(): void;
    /**
     * Register all default chunkers
     */
    protected registerAll(): Promise<void>;
    /**
     * Register a chunker with metadata and aliases
     */
    registerChunker(strategy: ChunkingStrategy | string, factory: (config?: ChunkerConfig) => Promise<Chunker>, metadata: ChunkerMetadata): void;
    /**
     * Create a chunker by strategy name or alias
     */
    createChunker(strategyOrAlias: string, config?: ChunkerConfig): Promise<Chunker>;
    /**
     * Get metadata for a chunker
     */
    getChunkerMetadata(strategyOrAlias: string): ChunkerMetadata | undefined;
    /**
     * Get default configuration for a chunker
     */
    getDefaultConfig(strategyOrAlias: string): ChunkerConfig | undefined;
    /**
     * Get available chunking strategies (not including aliases)
     */
    getAvailableStrategies(): Promise<ChunkingStrategy[]>;
    /**
     * Get all aliases mapped to their strategies
     */
    getStrategyAliases(): Map<string, string>;
    /**
     * Check if a strategy exists
     */
    hasStrategy(strategyOrAlias: string): boolean;
    /**
     * Get chunkers suitable for a use case
     */
    getChunkersForUseCase(useCase: string): ChunkingStrategy[];
    /**
     * Get all chunker metadata
     */
    getAllMetadata(): Map<string, ChunkerMetadata>;
    /**
     * Clear factory and metadata
     */
    clear(): void;
}
/**
 * Global chunker factory singleton
 */
export declare const chunkerFactory: ChunkerFactory;
/**
 * Convenience function to create a chunker
 */
export declare function createChunker(strategyOrAlias: string, config?: ChunkerConfig): Promise<Chunker>;
/**
 * Convenience function to get available strategies
 */
export declare function getAvailableStrategies(): Promise<ChunkingStrategy[]>;
/**
 * Convenience function to get chunker metadata
 */
export declare function getChunkerMetadata(strategyOrAlias: string): ChunkerMetadata | undefined;
/**
 * Convenience function to get default config
 */
export declare function getDefaultConfig(strategyOrAlias: string): ChunkerConfig | undefined;
