/**
 * AgentRegistry - Central registry for managing available agents
 *
 * @module agents/registry
 */
import type { AgentDefinition, AgentInfo } from "./types.js";
/**
 * Registry for managing agent definitions and queries.
 * Maintains a catalog of available agents and supports capability-based lookups.
 */
export declare class AgentRegistry {
    private agents;
    /**
     * Registers a new agent in the registry.
     *
     * @param agent - The agent definition to register
     * @throws {McpToolError} If an agent with the same name is already registered
     */
    registerAgent(agent: AgentDefinition): void;
    /**
     * Retrieves an agent by name.
     *
     * @param name - The name of the agent to retrieve
     * @returns The agent definition, or undefined if not found
     */
    getAgent(name: string): AgentDefinition | undefined;
    /**
     * Queries for agents that have at least one of the specified capabilities.
     *
     * @param capabilities - Array of capabilities to search for
     * @returns Array of agent definitions that match at least one capability
     */
    queryByCapability(capabilities: string[]): AgentDefinition[];
    /**
     * Lists all registered agents as AgentInfo objects.
     *
     * @returns Array of agent information for all registered agents
     */
    listAgents(): AgentInfo[];
    /**
     * Unregisters an agent by name.
     *
     * @param name - The name of the agent to unregister
     * @returns true if the agent was unregistered, false if it was not found
     */
    unregisterAgent(name: string): boolean;
    /**
     * Clears all registered agents from the registry.
     * Useful for testing or resetting the registry state.
     */
    clear(): void;
}
/**
 * Singleton instance of the AgentRegistry.
 * Use this export for global agent management.
 */
export declare const agentRegistry: AgentRegistry;
//# sourceMappingURL=registry.d.ts.map