/**
 * Fuzzy string matching utilities
 *
 * Inspired by mistral-vibe's search_replace tool that uses difflib.SequenceMatcher
 * to find similar strings when exact matches fail.
 */
export interface FuzzyMatchResult {
    /** The matched string from the content */
    match: string;
    /** Similarity score between 0 and 1 */
    similarity: number;
    /** Line number where match starts (1-indexed) */
    startLine: number;
    /** Line number where match ends (1-indexed) */
    endLine: number;
    /** Human-readable similarity percentage */
    similarityPercent: string;
}
export interface FuzzyMatchOptions {
    /** Minimum similarity threshold (0-1), default 0.9 (90%) */
    threshold?: number;
    /** Maximum number of results to return */
    maxResults?: number;
    /** Whether to normalize whitespace before comparison */
    normalizeWhitespace?: boolean;
}
/**
 * Calculate similarity ratio between two strings
 * Returns a value between 0 and 1, similar to difflib.SequenceMatcher.ratio()
 */
export declare function calculateSimilarity(a: string, b: string): number;
/**
 * Find fuzzy matches for a search string in content
 *
 * @param content - The content to search in
 * @param searchStr - The string to search for
 * @param options - Fuzzy match options
 * @returns Array of fuzzy match results sorted by similarity (highest first)
 */
export declare function findFuzzyMatches(content: string, searchStr: string, options?: FuzzyMatchOptions): FuzzyMatchResult[];
/**
 * Find the best fuzzy match above threshold
 *
 * @param content - The content to search in
 * @param searchStr - The string to search for
 * @param threshold - Minimum similarity threshold (default 0.9)
 * @returns The best match or null if none found above threshold
 */
export declare function findBestFuzzyMatch(content: string, searchStr: string, threshold?: number): FuzzyMatchResult | null;
/**
 * Generate a unified diff-style output showing the difference between search and match
 */
export declare function generateFuzzyDiff(searchStr: string, matchStr: string, filePath: string, matchResult: FuzzyMatchResult): string;
/**
 * Suggest fixes for common whitespace issues
 */
export declare function suggestWhitespaceFixes(searchStr: string, content: string): string[];
