import type { CustomCommand } from '../types/index.js';
export declare class CustomCommandLoader {
    private commands;
    private aliases;
    private projectCommandsDir;
    private personalCommandsDir;
    constructor(projectRoot?: string);
    /**
     * Load all custom commands from both project and personal directories
     */
    loadCommands(): void;
    /**
     * Recursively scan directory for .md files, supporting directory-as-command
     */
    private scanDirectory;
    /**
     * Load a single command file.
     * If commandDir is provided, also load resources from its resources/ subdirectory.
     */
    private loadCommand;
    /**
     * Load resources from a command's resources/ subdirectory
     */
    private loadResources;
    /**
     * Register a command produced outside this loader (e.g. by the skill
     * registrar). Returns true on success. Returns false if a command with
     * the same name is already registered - the caller is expected to treat
     * the collision as a hard error.
     */
    registerExternal(command: CustomCommand): boolean;
    /**
     * Remove a previously-registered command by fullName. Returns true if
     * found.
     */
    unregisterExternal(fullName: string): boolean;
    /**
     * Get a command by name (checking aliases too)
     */
    getCommand(name: string): CustomCommand | undefined;
    /**
     * Get all available commands
     */
    getAllCommands(): CustomCommand[];
    /**
     * Get only commands that participate in auto-injection
     * (those with triggers or tags defined)
     */
    getAutoInjectableCommands(): CustomCommand[];
    /**
     * Get command suggestions for autocomplete
     */
    getSuggestions(prefix: string): string[];
    /**
     * Find relevant commands for auto-injection based on user request
     */
    findRelevantCommands(request: string, availableTools: string[]): CustomCommand[];
    /**
     * Calculate relevance score for a command against a user request
     */
    private calculateRelevanceScore;
    /**
     * Check if commands directory exists
     */
    hasCustomCommands(): boolean;
    /**
     * Get the project commands directory path
     */
    getCommandsDirectory(): string;
    /**
     * Get the personal commands directory path
     */
    getPersonalCommandsDirectory(): string;
}
//# sourceMappingURL=loader.d.ts.map