import { ToolResult } from "../types/index.js";
export interface SearchResult {
    file: string;
    line: number;
    column: number;
    text: string;
    match: string;
}
export interface FileSearchResult {
    path: string;
    name: string;
    score: number;
}
export interface UnifiedSearchResult {
    type: "text" | "file";
    file: string;
    line?: number;
    column?: number;
    text?: string;
    match?: string;
    score?: number;
}
export declare class SearchTool {
    private _confirmationService;
    private currentDirectory;
    private searchCache;
    private vfs;
    /**
     * Unified search method that can search for text content or find files
     */
    search(query: string, options?: {
        searchType?: "text" | "files" | "both";
        includePattern?: string;
        excludePattern?: string;
        caseSensitive?: boolean;
        wholeWord?: boolean;
        regex?: boolean;
        maxResults?: number;
        fileTypes?: string[];
        excludeFiles?: string[];
        includeHidden?: boolean;
    }): Promise<ToolResult>;
    /**
     * Execute ripgrep command with specified options
     */
    private executeRipgrep;
    /**
     * Parse ripgrep JSON output into SearchResult objects
     */
    private parseRipgrepOutput;
    /**
     * Find files by pattern using a simple file walking approach
     */
    private findFilesByPattern;
    /**
     * Calculate fuzzy match score for file names
     */
    private calculateFileScore;
    /**
     * Format unified search results for display
     */
    private formatUnifiedResults;
    /**
     * Update current working directory
     */
    setCurrentDirectory(directory: string): void;
    /**
     * Get current working directory
     */
    getCurrentDirectory(): string;
    /**
     * Find symbols (functions, classes, interfaces, etc.)
     */
    findSymbols(name: string, options?: {
        types?: ('function' | 'class' | 'interface' | 'type' | 'const' | 'variable' | 'method')[];
        exportedOnly?: boolean;
    }): Promise<ToolResult>;
    /**
     * Find all references to a symbol
     */
    findReferences(symbolName: string, contextLines?: number): Promise<ToolResult>;
    /**
     * Find definition of a symbol
     */
    findDefinition(symbolName: string): Promise<ToolResult>;
    /**
     * Search for multiple patterns (OR or AND)
     */
    searchMultiple(patterns: string[], operator?: 'OR' | 'AND'): Promise<ToolResult>;
    /**
     * Get search cache statistics
     */
    getCacheStats(): {
        searchCache: number;
        symbolCache: number;
    };
    /**
     * Clear search caches
     */
    clearCaches(): void;
    private formatSymbolResults;
    private formatReferenceResults;
}
