/**
 * Fuzzy string matching for user-provided identifiers.
 * Auto-corrects typos like "cladue" -> "claude" based on Levenshtein distance.
 */
/** Levenshtein edit distance between two strings. */
export declare function levenshtein(a: string, b: string): number;
/**
 * Damerau-Levenshtein (optimal string alignment) distance.
 * Counts a transposition of two adjacent characters as a single edit,
 * so `cladue` -> `claude` is distance 1, matching the user's notion of
 * "one misspelling."
 */
export declare function damerauLevenshtein(a: string, b: string): number;
export interface FuzzyOptions {
    /** Absolute max edit distance allowed. */
    maxDistance?: number;
    /** Max ratio of distance to input length. If set, effective threshold = min(maxDistance, floor(len * maxRatio)). */
    maxRatio?: number;
    /** Use Damerau-Levenshtein (transposition = 1 edit) instead of plain Levenshtein. */
    damerau?: boolean;
}
/**
 * Fuzzy match an input string against a list of candidates.
 * Returns the single best match within tolerance, or null if no match or ambiguous.
 */
export declare function fuzzyMatch<T extends string>(input: string, candidates: readonly T[], options?: FuzzyOptions): T | null;
/**
 * Preset configurations for different identifier types.
 * Based on pairwise distance analysis of candidate pools.
 */
export declare const FUZZY_PRESETS: {
    /** Agents: 1 mistype (insertion/deletion/substitution/transposition). Damerau so `cladue`->`claude` is 1. */
    readonly agents: {
        readonly maxDistance: 1;
        readonly damerau: true;
    };
    /** Modes: plan/edit/full all at dist=4, lenient */
    readonly modes: {
        readonly maxDistance: 2;
    };
    /** Efforts: high/xhigh at dist=1, must be strict */
    readonly efforts: {
        readonly maxDistance: 1;
    };
    /** Strategies: pinned/available/rotate all far apart */
    readonly strategies: {
        readonly maxDistance: 2;
    };
    /** Beta features: drive/factory at dist=7, lenient */
    readonly beta: {
        readonly maxDistance: 2;
    };
    /** Dynamic/user-defined: profiles, commands, hooks, etc. */
    readonly dynamic: {
        readonly maxDistance: 2;
        readonly maxRatio: 0.3;
    };
    /** Skills: often longer names, slightly more lenient */
    readonly skills: {
        readonly maxDistance: 3;
        readonly maxRatio: 0.3;
    };
};
