/**
 * REST API Tool Registry
 *
 * Central registry for all MCP tools exposed via REST API.
 * Manages tool metadata, schema conversion, and tool discovery capabilities.
 */
import { z } from 'zod';
import { Logger } from '../core/error-handling';
/**
 * Tool metadata stored in the registry
 */
export interface ToolMetadata {
    name: string;
    description: string;
    inputSchema: Record<string, z.ZodSchema>;
    handler: (...args: unknown[]) => Promise<unknown>;
    category?: string;
    tags?: string[];
}
/**
 * JSON Schema representation converted from Zod
 */
export interface JsonSchema {
    type?: string;
    properties?: Record<string, unknown>;
    required?: string[];
    description?: string;
    $ref?: string;
    definitions?: Record<string, unknown>;
    [key: string]: unknown;
}
/**
 * Tool information exposed via discovery endpoint
 */
export interface ToolInfo {
    name: string;
    description: string;
    schema: JsonSchema;
    category?: string;
    tags?: string[];
}
/**
 * Registry for managing all tools available via REST API
 */
export declare class RestToolRegistry {
    private tools;
    private logger;
    private schemaCache;
    constructor(logger: Logger);
    /**
     * Register a tool in the registry
     */
    registerTool(metadata: ToolMetadata): void;
    /**
     * Get tool metadata by name
     */
    getTool(name: string): ToolMetadata | undefined;
    /**
     * Get all registered tool names
     */
    getToolNames(): string[];
    /**
     * Get all tools with their discovery information
     */
    getAllTools(): ToolInfo[];
    /**
     * Check if a tool is registered
     */
    hasTool(name: string): boolean;
    /**
     * Get the number of registered tools
     */
    getToolCount(): number;
    /**
     * Clear all registered tools
     */
    clear(): void;
    /**
     * Convert Zod schema to JSON Schema using Zod v4 native toJSONSchema
     */
    private convertZodSchemaToJsonSchema;
    /**
     * Get tool discovery information with filtering
     */
    getToolsFiltered(options?: {
        category?: string;
        tag?: string;
        search?: string;
    }): ToolInfo[];
    /**
     * Get all unique categories
     */
    getCategories(): string[];
    /**
     * Get all unique tags
     */
    getTags(): string[];
    /**
     * Get registry statistics
     */
    getStats(): {
        totalTools: number;
        categories: string[];
        tags: string[];
        cacheSize: number;
    };
}
//# sourceMappingURL=rest-registry.d.ts.map