/**
 * Agent Registry
 *
 * Central registry for managing specialized agents.
 * Provides auto-detection of appropriate agents based on file types.
 */
import { EventEmitter } from 'events';
import { SpecializedAgent, AgentTask, AgentResult, AgentCapability } from './types.js';
export interface AgentRegistryConfig {
    /** Auto-initialize agents on first use */
    autoInitialize?: boolean;
    /** Enable caching of agent instances */
    cacheAgents?: boolean;
}
export interface AgentMatch {
    agent: SpecializedAgent;
    score: number;
    reason: string;
}
export declare class AgentRegistry extends EventEmitter {
    private agents;
    private config;
    constructor(config?: AgentRegistryConfig);
    /**
     * Register all built-in agents
     */
    registerBuiltInAgents(): Promise<void>;
    /**
     * Register a specialized agent
     */
    register(agent: SpecializedAgent): void;
    /**
     * Unregister an agent
     */
    unregister(agentId: string): boolean;
    /**
     * Get an agent by ID
     */
    get(agentId: string): SpecializedAgent | undefined;
    /**
     * Get all registered agents
     */
    getAll(): SpecializedAgent[];
    /**
     * Find the best agent for a given file
     */
    findAgentForFile(filePath: string): AgentMatch | null;
    /**
     * Find agents with a specific capability
     */
    findAgentsWithCapability(capability: AgentCapability): SpecializedAgent[];
    /**
     * Find the best agent for a task
     */
    findAgentForTask(task: AgentTask): AgentMatch | null;
    /**
     * Execute a task using the appropriate agent
     */
    execute(task: AgentTask): Promise<AgentResult>;
    /**
     * Execute a task on a specific agent
     */
    executeOn(agentId: string, task: AgentTask): Promise<AgentResult>;
    /**
     * Initialize all registered agents
     */
    initializeAll(): Promise<Map<string, boolean>>;
    /**
     * Get a summary of all agents
     */
    getSummary(): string;
    /**
     * Get help for a specific agent
     */
    getAgentHelp(agentId: string): string | null;
    /**
     * Cleanup all agents
     */
    cleanup(): Promise<void>;
    /**
     * Dispose and cleanup
     */
    dispose(): Promise<void>;
}
/**
 * Get the global agent registry
 */
export declare function getAgentRegistry(): AgentRegistry;
/**
 * Initialize the agent registry with all built-in agents
 */
export declare function initializeAgentRegistry(): Promise<AgentRegistry>;
/**
 * Reset the agent registry (for testing)
 */
export declare function resetAgentRegistry(): Promise<void>;
/**
 * Execute a task using the appropriate specialized agent
 */
export declare function executeSpecializedTask(task: AgentTask): Promise<AgentResult>;
/**
 * Find the best agent for a file
 */
export declare function findAgentForFile(filePath: string): SpecializedAgent | null;
/**
 * Get all available specialized agents
 */
export declare function getAvailableAgents(): Array<{
    id: string;
    name: string;
    description: string;
    extensions: string[];
    capabilities: AgentCapability[];
}>;
