/**
 * Command Conflict Analyzer
 *
 * Deep analysis of command conflicts including extraction from plugin.yml files,
 * alias detection, and argument pattern analysis.
 *
 * @since v1.67.0
 */
import type { PluginCompatInfo } from '../../health/compatibility-matrix.js';
import type { PluginConflict } from '../../health/compatibility-types.js';
/**
 * Detailed command registration info
 */
export interface CommandRegistration {
    /** The main command name (without slash) */
    command: string;
    /** All aliases for this command */
    aliases: string[];
    /** Required permission to use */
    permission?: string;
    /** Usage string showing arguments */
    usage?: string;
    /** Description of the command */
    description?: string;
    /** Plugin that registers this command */
    pluginName: string;
    /** Whether this is a primary or fallback registration */
    priority: 'primary' | 'fallback';
}
/**
 * Extended plugin info with detailed command data
 */
export interface PluginCommandInfo extends PluginCompatInfo {
    /** Detailed command registrations */
    commandRegistrations?: CommandRegistration[];
}
/**
 * Result of deep command conflict analysis
 */
export interface CommandConflictResult {
    /** The conflicting command/alias */
    command: string;
    /** All aliases that conflict */
    conflictingAliases: string[];
    /** Plugins involved */
    plugins: CommandRegistration[];
    /** Severity based on conflict type */
    severity: 'critical' | 'warning' | 'info';
    /** Whether both plugins try to be primary */
    bothPrimary: boolean;
    /** Suggested resolution */
    resolution: CommandResolutionSuggestion;
}
/**
 * Command resolution suggestion
 */
export interface CommandResolutionSuggestion {
    /** Type of resolution */
    type: 'alias' | 'disable' | 'config' | 'remove';
    /** Plugin to modify (if applicable) */
    targetPlugin?: string;
    /** Suggested alias to use */
    suggestedAlias?: string;
    /** Config change to make */
    configChange?: string;
    /** Step-by-step instructions */
    steps: string[];
}
/**
 * Parse commands from plugin.yml content
 */
export declare function parseCommandsFromPluginYml(yamlContent: string, pluginName: string): CommandRegistration[];
/**
 * Build a map of all commands and their registrations
 */
export declare function buildCommandMap(plugins: PluginCommandInfo[]): Map<string, CommandRegistration[]>;
/**
 * Find all command conflicts from a command map
 */
export declare function findCommandConflicts(commandMap: Map<string, CommandRegistration[]>): CommandConflictResult[];
/**
 * Detect deep command conflicts between plugins
 */
export declare function detectDeepCommandConflicts(pluginA: PluginCommandInfo, pluginB: PluginCommandInfo): PluginConflict[];
/**
 * Analyze argument pattern conflicts
 * Two commands might have the same name but different argument patterns
 */
export declare function analyzeArgumentPatterns(registrations: CommandRegistration[]): {
    conflicting: boolean;
    patterns: string[];
    recommendation: string;
};
/**
 * Get common Minecraft command prefixes that often conflict
 */
export declare const COMMON_CONFLICTING_COMMANDS: string[];
/**
 * Check if a command is commonly conflicting
 */
export declare function isCommonlyConflicting(command: string): boolean;
//# sourceMappingURL=command.d.ts.map