import { EventEmitter } from "events";
import type { UnifiedSkill } from './types.js';
export interface Skill {
    name: string;
    description: string;
    triggers: string[];
    systemPrompt: string;
    tools?: string[];
    model?: string;
    priority?: number;
    autoActivate?: boolean;
    scripts?: SkillScript[];
}
export interface SkillScript {
    name: string;
    command: string;
    runOn: "activate" | "complete" | "both";
    timeout?: number;
}
export interface SkillMatch {
    skill: Skill;
    score: number;
    matchedTriggers: string[];
}
/**
 * Skill Manager - Auto-activating specialized abilities
 * Inspired by Claude Code's Skills system
 *
 * @deprecated Use the SKILL.md system instead (SkillRegistry from './registry.js').
 * See src/skills/MIGRATION.md for migration guide.
 */
export declare class SkillManager extends EventEmitter {
    private skills;
    private skillsDir;
    private activeSkill;
    constructor(projectRoot?: string);
    /**
     * Initialize and load custom skills from filesystem
     */
    initialize(): Promise<void>;
    /**
     * Load custom skills from .codebuddy/skills/ directory
     */
    private loadCustomSkills;
    /**
     * Parse a SKILL.md file
     */
    private parseSkillFile;
    /**
     * Register a skill programmatically
     */
    registerSkill(skill: Skill): void;
    /**
     * Get all available skills
     */
    getAvailableSkills(): string[];
    /**
     * Get a skill by name
     */
    getSkill(name: string): Skill | null;
    /**
     * Get all skills as UnifiedSkill format.
     * Converts all legacy skills to the unified format and optionally
     * includes skills from the SKILL.md registry.
     *
     * @returns An array of UnifiedSkill objects from the legacy system
     */
    getAllSkills(): UnifiedSkill[];
    /**
     * Match skills based on input text
     */
    matchSkills(input: string, topN?: number): SkillMatch[];
    /**
     * Auto-select the best skill for an input
     */
    autoSelectSkill(input: string): Skill | null;
    /**
     * Manually activate a skill
     */
    activateSkill(name: string): Skill | null;
    /**
     * Deactivate the current skill
     */
    deactivateSkill(): void;
    /**
     * Get the currently active skill
     */
    getActiveSkill(): Skill | null;
    /**
     * Get system prompt enhancement from active skill
     */
    getSkillPromptEnhancement(): string;
    /**
     * Get tool restrictions from active skill
     */
    getSkillToolRestrictions(): string[] | null;
    /**
     * Format skills for display
     */
    formatAvailableSkills(): string;
    /**
     * Create a new skill template
     */
    createSkillTemplate(name: string): Promise<string>;
    /**
     * Dispose resources and cleanup
     */
    dispose(): void;
}
export declare function getSkillManager(projectRoot?: string): SkillManager;
export declare function resetSkillManager(): void;
export declare function initializeSkills(projectRoot?: string): Promise<SkillManager>;
