/**
 * Efficient lookup structures for tool storage and retrieval
 */
import { DiscoveredTool } from "./types.js";
/**
 * Tool lookup index for fast retrieval
 */
export interface ToolLookupIndex {
    byName: Map<string, DiscoveredTool[]>;
    byServer: Map<string, DiscoveredTool[]>;
    byNamespaced: Map<string, DiscoveredTool>;
    byDescription: Map<string, DiscoveredTool[]>;
    searchableText: Map<string, string[]>;
}
/**
 * Search query options
 */
export interface SearchQuery {
    name?: string;
    server?: string;
    keywords?: string[];
    fuzzy?: boolean;
    limit?: number;
    offset?: number;
}
/**
 * Search result with relevance scoring
 */
export interface SearchResult {
    tool: DiscoveredTool;
    score: number;
    matchType: "exact" | "prefix" | "fuzzy" | "keyword";
    matchedField: "name" | "namespacedName" | "description" | "schema";
}
/**
 * Tool lookup manager with efficient indexing and search
 */
export declare class ToolLookupManager {
    private index;
    private tools;
    constructor();
    /**
     * Add or update a tool in the lookup index
     */
    addTool(tool: DiscoveredTool): void;
    /**
     * Remove a tool from the lookup index
     */
    removeTool(tool: DiscoveredTool): boolean;
    /**
     * Get a tool by exact namespaced name
     */
    getByNamespacedName(namespacedName: string): DiscoveredTool | null;
    /**
     * Get tools by original name
     */
    getByName(name: string): DiscoveredTool[];
    /**
     * Get tools by server name
     */
    getByServer(serverName: string): DiscoveredTool[];
    /**
     * Search tools with relevance scoring
     */
    search(query: SearchQuery): SearchResult[];
    /**
     * Get all tools
     */
    getAllTools(): DiscoveredTool[];
    /**
     * Get tool count by server
     */
    getServerCounts(): Record<string, number>;
    /**
     * Clear all tools
     */
    clear(): void;
    /**
     * Clear tools for a specific server
     */
    clearServer(serverName: string): void;
    /**
     * Get lookup statistics
     */
    getStats(): {
        totalTools: number;
        serverCount: number;
        uniqueNames: number;
        indexSize: {
            byName: number;
            byServer: number;
            byNamespaced: number;
            searchableText: number;
        };
    };
    /**
     * Create empty index structure
     */
    private createEmptyIndex;
    /**
     * Generate unique key for a tool
     */
    private getToolKey;
    /**
     * Update index when adding or removing a tool
     */
    private updateIndex;
    /**
     * Extract keywords from a tool for searching
     */
    private extractKeywords;
    /**
     * Calculate prefix match score
     */
    private calculatePrefixScore;
    /**
     * Calculate keyword match score
     */
    private calculateKeywordScore;
    /**
     * Calculate fuzzy match score using simple string similarity
     */
    private calculateFuzzyScore;
    /**
     * Remove duplicate results based on tool key
     */
    private deduplicateResults;
}
//# sourceMappingURL=lookup.d.ts.map