import { Tool } from '@modelcontextprotocol/sdk/types.js'; import { MCPTool, ToolCategory, ToolResult, ToolRegistryEntry } from './types.js'; import { UniFiClient } from '../unifi/client.js'; import { VersionDetector } from '../unifi/versionDetector.js'; /** * Tool Registry System * * Manages registration, discovery, and execution of MCP tools. * Handles tool categorization, dependency management, and feature availability. */ export declare class ToolRegistry { private tools; private categories; private dependencies; private logger; private unifiClient; private versionDetector; constructor(unifiClient: UniFiClient, versionDetector: VersionDetector); /** * Register a new tool */ register(tool: MCPTool): void; /** * Register multiple tools at once */ registerBatch(tools: MCPTool[]): void; /** * Unregister a tool */ unregister(toolName: string): boolean; /** * Get all registered tools */ getAllTools(): MCPTool[]; /** * Get all registered tools (including disabled ones) for documentation */ getAllToolsForDocumentation(): MCPTool[]; /** * Get tools by category */ getToolsByCategory(category: ToolCategory): MCPTool[]; /** * Get tool by name */ getTool(name: string): MCPTool | undefined; /** * Get available tools based on current UniFi capabilities */ getAvailableTools(): Promise; /** * Get tools for MCP server (filtered and formatted) */ getToolsForMCP(): Promise; /** * Execute a tool by name */ executeTool(toolName: string, params: Record): Promise; /** * Enable/disable a tool */ setToolEnabled(toolName: string, enabled: boolean): boolean; /** * Get tool statistics */ getToolStats(toolName: string): ToolRegistryEntry | undefined; /** * Get registry statistics */ getRegistryStats(): { totalTools: number; enabledTools: number; disabledTools: number; categoryCounts: Record; totalUsage: number; averageExecutionTime: number; }; /** * Filter tools based on feature availability */ filterToolsByFeatures(): Promise<{ available: string[]; unavailable: string[]; deprecated: string[]; }>; /** * Initialize tool categories */ private initializeCategories; /** * Add tool to category */ private addToCategory; /** * Remove tool from category */ private removeFromCategory; /** * Extract dependencies from tool definition */ private extractDependencies; /** * Update tool dependencies */ private updateDependencies; /** * Validate tool dependencies */ private validateDependencies; /** * Update usage statistics */ private updateUsageStats; /** * Get feature name for category */ private getCategoryFeature; /** * Clean up registry */ cleanup(): void; } //# sourceMappingURL=toolRegistry.d.ts.map