/**
 * Recommendation Engine
 *
 * Main orchestrator for plugin recommendations.
 * Runs multiple algorithms and combines results.
 *
 * @since v1.66.0
 */
import type { RegistryPlugin } from '../registry/registry-types.js';
import type { CuratedCollection, Recommendation, RecommendationConfig, RecommendationPreferences, RecommendationResults } from './recommendation-types.js';
/**
 * Recommendation Engine
 */
export declare class RecommendationEngine {
    private config;
    private cooccurrenceMatrix;
    private cache;
    constructor(config?: Partial<RecommendationConfig>);
    /**
     * Update configuration
     */
    setConfig(config: Partial<RecommendationConfig>): void;
    /**
     * Get current configuration
     */
    getConfig(): RecommendationConfig;
    /**
     * Clear the results cache
     */
    clearCache(): void;
    /**
     * Generate recommendations for the given context
     */
    generateRecommendations(installedPlugins: RegistryPlugin[], registryPlugins: RegistryPlugin[], preferences?: Partial<RecommendationPreferences>): Promise<RecommendationResults>;
    /**
     * Get recommendations by type
     */
    getByType(type: Recommendation['type'], installedPlugins: RegistryPlugin[], registryPlugins: RegistryPlugin[], preferences?: Partial<RecommendationPreferences>, limit?: number): Promise<Recommendation[]>;
    /**
     * Get curated collections
     */
    getCollections(): CuratedCollection[];
    /**
     * Get plugins from a collection
     */
    getCollectionPlugins(collectionId: string, registryPlugins: RegistryPlugin[]): RegistryPlugin[];
    /**
     * Get featured collections
     */
    getFeaturedCollections(): CuratedCollection[];
    /**
     * Dismiss a recommendation
     */
    dismissRecommendation(recommendations: Recommendation[], pluginId: string): Recommendation[];
    /**
     * Save a recommendation for later
     */
    saveRecommendation(recommendations: Recommendation[], pluginId: string): Recommendation[];
    /**
     * Get saved recommendations
     */
    getSaved(recommendations: Recommendation[]): Recommendation[];
    /**
     * Get statistics about recommendation generation
     */
    getStats(results: RecommendationResults): {
        totalRecommendations: number;
        byType: Record<string, number>;
        bySource: Record<string, number>;
        averageScore: number;
        executionTime: number;
        algorithmStats: Array<{
            name: string;
            count: number;
            time: number;
            success: boolean;
        }>;
    };
}
/**
 * Get the recommendation engine instance
 */
export declare function getRecommendationEngine(config?: Partial<RecommendationConfig>): RecommendationEngine;
/**
 * Reset the engine instance (for testing)
 */
export declare function resetRecommendationEngine(): void;
//# sourceMappingURL=recommendation-engine.d.ts.map