/** * @module @arcis/node/sanitizers/pii * PII (Personally Identifiable Information) detection and redaction * * Detects: email addresses, phone numbers, credit card numbers, SSNs, IP addresses */ export type PiiType = 'email' | 'phone' | 'credit_card' | 'ssn' | 'ip_address'; export interface PiiMatch { type: PiiType; value: string; start: number; end: number; } export interface PiiScanOptions { /** PII types to scan for. Default: all types */ types?: PiiType[]; } export interface PiiRedactOptions extends PiiScanOptions { /** Replacement for redacted values. Default: '[REDACTED]' */ replacement?: string; /** Use type-specific replacements like '[EMAIL]', '[SSN]'. Default: false */ typeLabels?: boolean; } /** * Scan a string for PII and return all matches. * * @param input - String to scan * @param options - Optional scan configuration * @returns Array of PII matches with type, value, and position * * @example * scanPii('Call me at 555-123-4567 or email john@example.com') * // [ * // { type: 'phone', value: '555-123-4567', start: 11, end: 23 }, * // { type: 'email', value: 'john@example.com', start: 33, end: 49 } * // ] */ export declare function scanPii(input: string, options?: PiiScanOptions): PiiMatch[]; /** * Check if a string contains any PII. * * @param input - String to check * @param options - Optional scan configuration * @returns true if PII is detected */ export declare function detectPii(input: string, options?: PiiScanOptions): boolean; /** * Redact PII from a string, replacing matches with a placeholder. * * @param input - String to redact * @param options - Redaction options * @returns String with PII replaced * * @example * redactPii('Email: john@example.com, SSN: 123-45-6789') * // 'Email: [REDACTED], SSN: [REDACTED]' * * redactPii('Email: john@example.com', { typeLabels: true }) * // 'Email: [EMAIL]' */ export declare function redactPii(input: string, options?: PiiRedactOptions): string; /** * Scan an object's string values for PII recursively. * * @param obj - Object to scan * @param options - Optional scan configuration * @returns Array of PII matches with the field path prepended */ export declare function scanObjectPii(obj: Record, options?: PiiScanOptions, path?: string): (PiiMatch & { field: string; })[]; /** * Redact PII from all string values in an object recursively. * * @param obj - Object to redact * @param options - Redaction options * @returns New object with PII redacted */ export declare function redactObjectPii>(obj: T, options?: PiiRedactOptions): T; //# sourceMappingURL=pii.d.ts.map