/** * Confusable / homoglyph normalization primitives * @module @skillsmith/core/security/scanner/confusables * * SMI-595: extracted from `SecurityScanner.exec.ts` (originally built there * under SMI-5359 Wave 4.2 for *content* obfuscation detection) so the * name-agnostic folding primitives can be reused for *skill-name* typosquat * comparison (`typosquat.ts`) without coupling it to the code-execution / * obfuscated-directive detectors. Pure extraction — no behavior change: * `SecurityScanner.exec.ts` re-imports these symbols and its own test suite * (`SecurityScanner.exec.test.ts`) passes unchanged. */ /** * Conservative homoglyph map (a curated subset of UTS-#39 confusables): only the * unambiguous Cyrillic / Greek look-alikes that real homoglyph attacks use to * disguise Latin letters. Fullwidth Latin (offset 0xFEE0) and the Mathematical * Alphanumeric Symbols block (U+1D400-1D7FF, e.g. bold/italic/script 𝐢𝐠𝐧𝐨𝐫𝐞) * are handled programmatically below — never via a blanket NFKC pass, which would * also fold fullwidth CJK to ASCII and false-positive. (NFKC is applied per-char * ONLY to the math-alphanumeric range, which contains no CJK.) */ export declare const CONFUSABLES: Record; export declare function isFullwidthLatin(cp: number): boolean; /** Mathematical Alphanumeric Symbols (bold/italic/script/fraktur/double-struck/sans/mono). */ export declare function isMathAlphanumeric(cp: number): boolean; /** Map homoglyphs + fullwidth Latin + math-alphanumeric to their ASCII skeleton. */ export declare function confusableSkeleton(s: string): string; //# sourceMappingURL=confusables.d.ts.map