/** * IBAN content detector — deterministic, checksummed, not overridable. * * Column policy (`maskColumns: ['*.iban']`) only fires when the column is * named. A free-text note, or a column the operator forgot to list, used to * send the IBAN to the model — sometimes half-masked by the digit detector * (`TR00000000000[MASKED_PII]`), which looks like protection and is worse * than leaving it alone. * * A profile may empty `maskColumns`. It must not switch this off: identity * fields are not a privilege the controller can grant the model. * * Checksum (ISO 7064 mod-97-10) is the false-positive brake. Shape alone * would mask any 15–34 character alphanumeric run that starts with two * letters; the remainder-1 test is what refuses a random 26-digit string. * Tests that disable the checksum MUST go red if this brake is removed. * * The candidate regex is greedy and will eat the next word (`havale IBAN * tamam`). After a match we shrink from the end until the remainder is a * real IBAN (or an IBAN-shaped lookalike). Lookalikes that fail checksum * are not masked — they are shielded so the phone/card regexes cannot * nibble the tail. */ export declare const IBAN_MASK: '[MASKED_PII]'; /** Strip grouping spaces/hyphens; IBAN letters are case-insensitive. */ export declare function normalizeIban(raw: string): string; /** * ISO 13616 electronic form: 2-letter country, 2 check digits, 11–30 BBAN. * Country-specific lengths are not a dictionary we maintain — checksum is * the acceptance test. */ export declare function looksLikeIban(normalized: string): boolean; /** * ISO 7064 MOD-97-10 over the rearranged IBAN. * Remainder must be 1. A candidate that fails this is not an IBAN. */ export declare function ibanMod97Ok(normalized: string): boolean; export interface MaskIbanOpts { /** Production default true. Tests flip this to prove the brake exists. */ checksum?: boolean; } export interface IbanPass { text: string; count: number; restore: (s: string) => string; } /** * Mask checksum-valid IBANs; shield remaining IBAN-shaped spans so later * digit detectors cannot half-mask them. Call `restore` after those detectors. */ export declare function prepareIbanPass(text: string, opts?: MaskIbanOpts): IbanPass; export declare function maskIbansInText(text: string, opts?: MaskIbanOpts): { text: string; count: number; }; //# sourceMappingURL=iban.d.ts.map