/**
 * similarity.ts — TS port of the feedback-factory title-similarity primitives.
 *
 * Part of scar (c) of docs/specs/feedback-factory-migration.md. Byte-exact port
 * of `_tokenize` (:1389) and `_jaccard_similarity` (:1394) from the reference
 * `the-portal/.claude/scripts/feedback-processor.py`. These are the FUZZY match
 * layer that sits on top of the exact-match fingerprint (fingerprint.ts): two
 * reports whose titles overlap enough (Jaccard ≥ threshold) are candidates for
 * the same cluster. The threshold-application logic (0.35 vs the 0.55 fixed-
 * cluster false-merge guard) lives in the clustering driver and is a later
 * increment; this module is the pure, parity-testable similarity primitive.
 *
 * Divergence surface (per spec / convergence): the TOKENIZER. Python
 * `re.findall(r'[a-z0-9]+', text.lower())` is ASCII-only — non-ASCII letters and
 * Unicode digits are token separators, NOT token content. JS `/[a-z0-9]+/g`
 * (no `u`, no `i`) matches the identical ASCII class, so the only residual risk
 * is `.lower()` vs `.toLowerCase()` on characters that then survive the ASCII
 * filter. The parity harness verifies equivalence over the adversarial corpus.
 */
/** Port of Python `_tokenize` (:1391): ASCII word tokens of the lowercased text, deduped. */
export declare function tokenize(text: string): Set<string>;
/** Port of Python `_jaccard_similarity` (:1394): |A∩B| / |A∪B|, 0 when either side is empty. */
export declare function jaccardSimilarity(text1: string, text2: string): number;
//# sourceMappingURL=similarity.d.ts.map