/**
 * Source Registry
 *
 * Manages multiple plugin sources with priority ordering
 */
import type { IPluginSource, PluginInfo, PluginUpdateInfo, SourceConfig } from '../types/index.js';
/**
 * Source Registry manages all plugin sources
 */
export declare class SourceRegistry {
    private sources;
    private configPath;
    constructor(configPath?: string);
    /**
     * Add a source to the registry
     */
    addSource(source: IPluginSource): boolean;
    /**
     * Remove a source from the registry
     */
    removeSource(id: string): boolean;
    /**
     * Get a source by ID
     */
    getSource(id: string): IPluginSource | undefined;
    /**
     * Get all registered sources
     */
    getAllSources(): IPluginSource[];
    /**
     * Get enabled sources, sorted by priority (highest first)
     */
    getEnabledSources(): IPluginSource[];
    /**
     * Get sources of a specific type
     */
    getSourcesByType(type: string): IPluginSource[];
    /**
     * Check for plugin updates across all enabled sources
     * Uses priority ordering - first source with a valid update wins
     */
    checkUpdate(pluginName: string, currentVersion: string, identifier: string, sourceType?: string): Promise<PluginUpdateInfo>;
    /**
     * Search for plugins across all enabled sources
     */
    searchAll(query: string, limit?: number): Promise<PluginInfo[]>;
    /**
     * Load sources configuration from file
     */
    loadConfig(): Promise<boolean>;
    /**
     * Save sources configuration to file
     */
    saveConfig(sources: SourceConfig[]): Promise<boolean>;
    /**
     * Get source count
     */
    get count(): number;
    /**
     * Get enabled source count
     */
    get enabledCount(): number;
    /**
     * Clear all sources
     */
    clear(): void;
}
//# sourceMappingURL=registry.d.ts.map