/**
 * ═══════════════════════════════════════════════════════════════════════════
 * Audit Trail — Anonymisation technique (art. 23.1)
 * ═══════════════════════════════════════════════════════════════════════════
 *
 * Techniques d'anonymisation pour empêcher la ré-identification :
 *   1. Pseudonymisation — remplace identifiants directs par hash SHA-256 + salt
 *   2. Généralisation — tronque timestamps, géoloc
 *   3. Bruit sur embeddings — réduit la ré-identification par recherche vectorielle
 */
/**
 * Hash un identifiant direct (email, Discord ID, téléphone) en ID pseudonymisé.
 * SHA-256 + salt → impossible de remonter à l'original sans le salt.
 *
 * @param identifier Identifiant direct (email, ID Discord, etc.)
 * @returns Pseudonyme stable (32 chars hex)
 */
export declare function pseudonymize(identifier: string): string;
/**
 * Hash court pour les clés de référence (consent_ref, etc.).
 */
export declare function hashShort(text: string): string;
/**
 * Généralise un timestamp en tronquant à la journée (supprime heures/minutes/secondes).
 * Réduit la précision → moins de risque de ré-identification par corrélation.
 *
 * @param timestampMs Timestamp en millisecondes
 * @returns Timestamp tronqué au jour (00:00:00 UTC)
 */
export declare function generalizeTimestamp(timestampMs: number): number;
export interface PiiDetection {
    found: boolean;
    types: string[];
    /** Le texte contient des RP identifiés */
    sanitized?: string;
}
/**
 * Détecte les renseignements personnels dans un texte.
 *
 * @param text Texte à analyser
 * @param sanitize Si true, remplace les RP détectés par des placeholders
 * @returns Résultat de la détection + texte sanitizé si demandé
 */
export declare function detectPii(text: string, sanitize?: boolean): PiiDetection;
/**
 * Sanitize un texte en remplaçant tous les RP détectés.
 * Utilisé avant l'envoi à un LLM si OVERMIND_PII_FILTER=true.
 */
export declare function sanitizeText(text: string): string;
/**
 * Ajoute un bruit gaussien à un embedding pour réduire la ré-identification
 * par recherche vectorielle (K-anonymité approximative).
 *
 * Le bruit est proportionnel à l'écart-type des composantes → préserve
 * la structure globale tout en empêchant le matching exact.
 *
 * @param embedding Vecteur d'embedding
 * @param noiseLevel Niveau de bruit (0 = aucun, 0.1 = léger, 0.3 = fort)
 * @returns Embedding bruité
 */
export declare function addEmbeddingNoise(embedding: number[], noiseLevel?: number): number[];
//# sourceMappingURL=anonymize.d.ts.map