/**
 * Regex-паттерны и маскировщики для PII redaction.
 *
 * Контракт: все функции — pure (без side effects), принимают строку и
 * возвращают строку с применённой маской. Поведение детерминировано;
 * порядок применения — IP → email → JWT → credit card → phone, чтобы более
 * специфичные совпадения (например IP внутри текста) не были разрушены
 * последующими более «жадными» regex'ами.
 */
/** IPv4: четыре октета 0–255, разделены `.`. */
export declare const IPV4_RE: RegExp;
/**
 * IPv6 (упрощённо): 2–8 групп hex, разделённых `:`, с поддержкой `::`-сжатия.
 * Не идеально, но покрывает типичные случаи в логах. False-positives на адресах
 * вида `aaaa:bbbb` принимаемы — мы перестрахуемся.
 */
export declare const IPV6_RE: RegExp;
/** Email: local-part + @ + domain. */
export declare const EMAIL_RE: RegExp;
/**
 * JWT: три base64url-сегмента, разделённые точкой. Начало `eyJ` (header `{"`)
 * добавлено как anchor для снижения false-positives.
 */
export declare const JWT_RE: RegExp;
/** Bearer/Authorization header value. */
export declare const BEARER_RE: RegExp;
/**
 * Phone: loose — от 8 цифр, **обязательно** с `+` префиксом или хотя бы
 * одним разделителем (пробел / скобка / дефис). Это исключает совпадения
 * с длинными числовыми ID и неаутентичными номерами карт.
 */
export declare const PHONE_RE: RegExp;
/**
 * Credit card: 13–19 цифр с опциональными разделителями. После regex применяем
 * Luhn-check, чтобы не маскировать обычные числовые ID.
 */
export declare const CARD_RE: RegExp;
/**
 * Заменить IPv4 на «анонимизированный»: 192.168.1.42 → 192.168.1.0.
 * IPv6 → /64 prefix (первые 4 группы + ::).
 */
export declare function maskIpv4(ip: string): string;
export declare function maskIpv6(ip: string): string;
/** Luhn algorithm для credit card validation. */
export declare function luhnValid(digits: string): boolean;
export declare const REDACTION_TOKENS: {
    readonly ip: "[IP_REDACTED]";
    readonly email: "[EMAIL_REDACTED]";
    readonly jwt: "[JWT_REDACTED]";
    readonly bearer: "[BEARER_REDACTED]";
    readonly phone: "[PHONE_REDACTED]";
    readonly card: "[CARD_REDACTED]";
};
/**
 * Применить все базовые правки к строке. Порядок важен (см. §1).
 *
 * Возвращает { value, fieldsHit } — массив имён полей, которые сработали
 * (для метрик / `_meta.redactionFields`).
 */
export declare function redactString(input: string): {
    value: string;
    fieldsHit: string[];
};
//# sourceMappingURL=fields.d.ts.map