/**
 * Conflict Service
 *
 * Detects known plugin conflicts based on a conflict database.
 *
 * @since v1.21.0
 */
import type { ScannedPlugin } from '../types/index.js';
import type { ConflictCategory, ConflictSummary, DetectedConflict, PluginConflict } from './conflict-types.js';
/**
 * Normalize a plugin name for matching
 */
export declare function normalizePluginName(name: string): string;
/**
 * Check if two plugin names match (accounting for aliases)
 */
export declare function pluginNamesMatch(name1: string, name2: string): boolean;
/**
 * Service for detecting plugin conflicts
 */
export declare class ConflictService {
    private conflicts;
    private categories;
    private loaded;
    /**
     * Load the conflict database
     */
    load(): Promise<void>;
    /**
     * Ensure the database is loaded
     */
    private ensureLoaded;
    /**
     * Detect conflicts among installed plugins
     */
    detectConflicts(installedPlugins: ScannedPlugin[]): Promise<DetectedConflict[]>;
    /**
     * Check if adding a new plugin would cause conflicts
     */
    checkNewPlugin(pluginName: string, installedPlugins: ScannedPlugin[]): Promise<DetectedConflict[]>;
    /**
     * Check mutual exclusion categories for a new plugin
     */
    checkCategoryConflict(pluginName: string, installedPlugins: ScannedPlugin[]): Promise<DetectedConflict[]>;
    /**
     * Get conflict info between two specific plugins
     */
    getConflict(pluginA: string, pluginB: string): Promise<PluginConflict | null>;
    /**
     * Get summary of conflicts
     */
    getConflictSummary(detected: DetectedConflict[]): ConflictSummary;
    /**
     * Filter conflicts by severity
     */
    filterBySeverity(detected: DetectedConflict[], minSeverity: 'error' | 'warning' | 'info'): DetectedConflict[];
    /**
     * Get all known conflicts (for debugging/display)
     */
    getAllConflicts(): Promise<PluginConflict[]>;
    /**
     * Get all categories (for debugging/display)
     */
    getAllCategories(): Promise<Map<string, ConflictCategory>>;
}
/**
 * Get the singleton ConflictService instance
 */
export declare function getConflictService(): ConflictService;
/**
 * Reset the singleton (for testing)
 */
export declare function resetConflictService(): void;
//# sourceMappingURL=conflict-service.d.ts.map