import { EventEmitter } from "events";
import type { SkillManagerOptions, SkillMetadata, Skill, SkillToolArgs, SkillInvocationContext } from "../types/index.js";
import { Container } from "../utils/container.js";
/**
 * Manages skill discovery and loading
 */
export declare class SkillManager extends EventEmitter {
    private container;
    private personalSkillsPath;
    private scanTimeout;
    private workdir;
    private skillMetadata;
    private skillContent;
    private initialized;
    private fileWatcher;
    private watchEnabled;
    constructor(container: Container, options?: SkillManagerOptions);
    /**
     * Initialize the skill manager by discovering available skills
     */
    initialize(): Promise<void>;
    /**
     * Refresh skills by re-discovering them
     */
    private refreshSkills;
    /**
     * Setup file watcher for skill directories
     */
    private setupWatcher;
    /**
     * Cleanup resources
     */
    destroy(): Promise<void>;
    /**
     * Check if the skill manager is initialized
     */
    isInitialized(): boolean;
    /**
     * Get all available skills metadata
     */
    getAvailableSkills(): SkillMetadata[];
    /**
     * Get metadata for a specific skill by name
     */
    getSkillMetadata(name: string): SkillMetadata | undefined;
    /**
     * Load a specific skill by name
     * Returns the skill content that was loaded during initialization
     */
    loadSkill(skillName: string): Promise<Skill | null>;
    /**
     * Discover skills in builtin, personal and project directories
     */
    private discoverSkills;
    /**
     * Discover skills in a specific directory
     */
    private discoverSkillCollection;
    /**
     * Find all directories that could contain skills
     */
    private findSkillDirectories;
    /**
     * Execute a skill by name
     */
    executeSkill(args: SkillToolArgs): Promise<{
        content: string;
        context?: SkillInvocationContext;
        allowedTools?: string[];
    }>;
    /**
     * Prepare a skill by name without executing bash commands
     */
    prepareSkill(args: SkillToolArgs): Promise<{
        content: string;
        skill: Skill;
    } | {
        content: string;
        skill?: undefined;
    }>;
    /**
     * Prepare skill content with arguments but without bash execution
     */
    private prepareSkillContent;
    /**
     * Execute bash commands in prepared skill content
     */
    private executeBashInSkillContent;
    /**
     * Format available skills list for error messages
     */
    private formatAvailableSkills;
    /**
     * Register skills provided by a plugin
     */
    registerPluginSkills(pluginName: string, skills: Skill[]): void;
}
//# sourceMappingURL=skillManager.d.ts.map