import type { CVESource } from '../types/cve.js';
import { BaseCVESourceImplementation } from './base.js';
interface SourceValidationDetails {
    isValid: boolean;
    errors: string[];
    warnings: string[];
    enabled: boolean;
    hasApiKey: boolean;
}
export { BaseCVESourceImplementation };
export declare class SourceFactory {
    private static sourceImplementations;
    static registerSourceImplementation(type: string, implementationClass: new (config: CVESource, apiKey?: string) => BaseCVESourceImplementation): void;
    static createSourceImplementation(sourceName: string, config: CVESource, apiKey?: string): BaseCVESourceImplementation;
    static createSourceImplementations(sources: Record<string, CVESource>, apiKeys?: Record<string, string>): Record<string, BaseCVESourceImplementation>;
    /**
     * Validates all source configurations and returns aggregated results
     */
    static validateAllSources(sources: Record<string, CVESource>, apiKeys?: Record<string, string>): {
        isValid: boolean;
        errors: string[];
        warnings: string[];
        sourceResults: Record<string, SourceValidationDetails>;
    };
    /**
     * Validates a specific source configuration
     */
    static validateSource(name: string, config: CVESource, apiKey?: string): {
        isValid: boolean;
        errors: string[];
        warnings: string[];
    };
    static getEnabledImplementations(implementations: Record<string, BaseCVESourceImplementation>): BaseCVESourceImplementation[];
    static getImplementationsByFeature(implementations: Record<string, BaseCVESourceImplementation>, feature: string): BaseCVESourceImplementation[];
    static getAvailableSourceTypes(): string[];
    private static determineSourceType;
    private static getApiKeyForSource;
    /**
     * Resolves API keys for all sources using distributed logic
     */
    static resolveApiKeysForSources(sources: Record<string, CVESource>, providedApiKeys?: Record<string, string>): Record<string, string | undefined>;
    static testAllConnections(implementations: Record<string, BaseCVESourceImplementation>): Promise<Record<string, boolean>>;
}
//# sourceMappingURL=factory.d.ts.map