/**
 * Symbol Search Tool
 *
 * Fuzzy and exact symbol search across codebase using Fuse.js.
 * Supports cross-referencing and usage analysis.
 *
 * Inspired by hurry-mode's symbol search capabilities.
 */
import { CodeSymbol, SymbolType, SymbolSearchOptions, SymbolSearchResult, SymbolUsage } from "./types.js";
import { ASTParser } from "./ast-parser.js";
/**
 * Symbol Search Tool
 */
export declare class SymbolSearch {
    private parser;
    private index;
    private indexedPaths;
    private cacheTimeout;
    private vfs;
    private excludePatterns;
    private includeExtensions;
    constructor(parser?: ASTParser);
    /**
     * Build or rebuild the symbol index
     */
    buildIndex(rootPath: string, forceRebuild?: boolean): Promise<{
        symbolCount: number;
        fileCount: number;
        buildTime: number;
    }>;
    /**
     * Search for symbols
     */
    search(options: SymbolSearchOptions): Promise<SymbolSearchResult[]>;
    /**
     * Find usages of a symbol
     */
    findUsages(symbol: CodeSymbol): Promise<SymbolUsage[]>;
    /**
     * Find cross-references
     */
    findCrossReferences(symbolId: string): Promise<Map<string, SymbolUsage[]>>;
    /**
     * Find similar symbols
     */
    findSimilarSymbols(symbolId: string, threshold?: number): SymbolSearchResult[];
    /**
     * Get symbols by type
     */
    getSymbolsByType(type: SymbolType): CodeSymbol[];
    /**
     * Get symbols by file
     */
    getSymbolsByFile(filePath: string): CodeSymbol[];
    /**
     * Get index statistics
     */
    getIndexStats(): {
        totalSymbols: number;
        totalFiles: number;
        symbolsByType: Record<string, number>;
        symbolsByLanguage: Record<string, number>;
        indexAge: number;
    };
    /**
     * Discover files to index
     */
    private discoverFiles;
    /**
     * Escape regex special characters
     */
    private escapeRegex;
    /**
     * Clear the index
     */
    clearIndex(): void;
}
/**
 * Create a symbol search instance
 */
export declare function createSymbolSearch(parser?: ASTParser): SymbolSearch;
export declare function getSymbolSearch(): SymbolSearch;
export declare function resetSymbolSearch(): void;
