/**
 * @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<string, unknown>, 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<T extends Record<string, unknown>>(obj: T, options?: PiiRedactOptions): T;
//# sourceMappingURL=pii.d.ts.map