import type { ToolMetadata, TrustLevel } from './types.js';
/**
 * Central registry for tool discovery and management.
 * Stores tool metadata indexed by name with in-memory Map storage.
 * Future: File-based persistence for cross-session registry state.
 */
export declare class ToolRegistry {
    private readonly tools;
    constructor();
    /**
     * Register a new tool in the registry.
     * @param tool - Complete tool metadata
     * @throws {DuplicateToolError} If tool name already exists
     * @example
     * registry.register({
     *   name: 'stripe:createCharge',
     *   description: 'Create a payment charge',
     *   schema: { type: 'object', properties: { amount: { type: 'number' } } },
     *   trustLevel: 'verified',
     *   endpoint: 'https://api.stripe.com/v1/charges',
     *   capabilities: ['payment', 'charge']
     * });
     */
    register(tool: ToolMetadata): void;
    /**
     * Remove a tool from the registry.
     * @param toolName - Unique tool identifier
     * @throws {ToolNotFoundError} If tool does not exist
     * @example
     * registry.unregister('stripe:createCharge');
     */
    unregister(toolName: string): void;
    /**
     * Search for tools by capability keywords.
     * Performs case-insensitive partial match on capabilities array.
     * @param query - Search query (e.g., "payment", "github", "charge")
     * @returns Array of matching tool metadata
     * @example
     * const paymentTools = registry.search('payment');
     * // Returns all tools with "payment" in capabilities
     */
    search(query: string): readonly ToolMetadata[];
    /**
     * Get tool metadata by name.
     * @param toolName - Unique tool identifier
     * @returns Tool metadata if found, undefined otherwise
     * @example
     * const tool = registry.get('stripe:createCharge');
     * if (tool) {
     *   console.log(tool.description);
     * }
     */
    get(toolName: string): ToolMetadata | undefined;
    /**
     * Filter tools by trust level.
     * @param level - Trust level to filter by
     * @returns Array of tools matching the trust level
     * @example
     * const verifiedTools = registry.listByTrustLevel('verified');
     * const experimentalTools = registry.listByTrustLevel('experimental');
     */
    listByTrustLevel(level: TrustLevel): readonly ToolMetadata[];
    /**
     * Get total number of registered tools.
     * @returns Count of tools in registry
     * @example
     * console.log(`Registry contains ${registry.size()} tools`);
     */
    size(): number;
    /**
     * Clear all tools from the registry.
     * Useful for testing or resetting state.
     * @example
     * registry.clear();
     */
    clear(): void;
    /**
     * Get all registered tools.
     * @returns Array of all tool metadata
     * @example
     * const allTools = registry.listAll();
     */
    listAll(): readonly ToolMetadata[];
}
//# sourceMappingURL=registry.d.ts.map