/**
 * Skill Registry
 *
 * Three-tier skill loading system (workspace > managed > bundled).
 * Supports lazy loading, caching, and file watching.
 */
import { EventEmitter } from 'events';
import type { Skill, SkillTier, SkillRegistryConfig, SkillMatch, SkillSearchOptions, UnifiedSkill } from './types.js';
import { type LegacySkill } from './adapters/index.js';
export declare class SkillRegistry extends EventEmitter {
    private config;
    private skills;
    private skillsByTier;
    private watchers;
    private loaded;
    constructor(config?: Partial<SkillRegistryConfig>);
    /**
     * Load all skills from all tiers
     */
    load(): Promise<void>;
    /**
     * Load skills from a specific tier
     */
    private loadTier;
    /**
     * Find all SKILL.md files in a directory
     */
    private findSkillFiles;
    /**
     * Load a single skill file
     */
    private loadSkillFile;
    /**
     * Register a skill
     */
    private registerSkill;
    /**
     * Get a skill by name
     */
    get(name: string): Skill | undefined;
    /**
     * List all skills
     */
    list(options?: {
        tier?: SkillTier;
        tags?: string[];
        enabled?: boolean;
    }): Skill[];
    /**
     * Get skill count
     */
    get count(): number;
    /**
     * Get all tags
     */
    getTags(): string[];
    /**
     * Find skills matching a query
     */
    search(options: SkillSearchOptions): SkillMatch[];
    /**
     * Score a skill against a query
     */
    private scoreSkill;
    /**
     * Find the best matching skill for a request
     */
    findBestMatch(request: string): SkillMatch | null;
    /**
     * Register a legacy JSON-based skill by converting it to SKILL.md format.
     * The skill is stored internally as a SKILL.md Skill after conversion
     * from the legacy adapter.
     *
     * @param legacySkill - A legacy skill object (from SkillManager or SkillLoader)
     * @param tier - The tier to register under (defaults to 'workspace')
     */
    registerLegacySkill(legacySkill: LegacySkill, tier?: SkillTier): void;
    /**
     * Get all skills as UnifiedSkill format.
     * Converts all registered SKILL.md skills to the unified format.
     *
     * @returns An array of UnifiedSkill objects
     */
    getAllUnified(): UnifiedSkill[];
    /**
     * Enable a skill
     */
    enable(name: string): boolean;
    /**
     * Disable a skill
     */
    disable(name: string): boolean;
    /**
     * Reload a specific skill
     */
    reload(name: string): Promise<boolean>;
    /**
     * Reload all skills
     */
    reloadAll(): Promise<void>;
    /**
     * Unload a skill
     */
    unload(name: string): boolean;
    /**
     * Start watching skill directories
     */
    private startWatching;
    /**
     * Handle file change event
     */
    private handleFileChange;
    /**
     * Stop watching
     */
    stopWatching(): void;
    /**
     * Resolve path with home directory expansion
     */
    private resolvePath;
    /**
     * Format skills as a list for display
     */
    formatList(): string;
    /**
     * Shutdown registry
     */
    shutdown(): void;
}
export declare function getSkillRegistry(config?: Partial<SkillRegistryConfig>): SkillRegistry;
export declare function resetSkillRegistry(): void;
export default SkillRegistry;
