/**
 * ═══════════════════════════════════════════════════════════════════════════
 * Audit Trail — Moteur de rétention (art. 35.2-35.3)
 * ═══════════════════════════════════════════════════════════════════════════
 *
 * Calcule les dates d'expiration de rétention et gère le workflow :
 *   hot (table active) → anonymisation → cold archive (5 ans) → purge définitive
 */
import type { LegalBasis } from './types.js';
/**
 * Calcule le timestamp d'expiration de rétention active (hot).
 *
 * @param createdAt Timestamp de création (ms)
 * @param retentionDaysOverride Override du nombre de jours (défaut: .env)
 * @returns Timestamp d'expiration
 */
export declare function calculateRetentionExpiry(createdAt: number, retentionDaysOverride?: number): number;
/**
 * Calcule le timestamp d'expiration de l'archivage cold storage.
 *
 * @param archivedAt Timestamp d'archivage (ms)
 * @param archiveYearsOverride Override du nombre d'années (défaut: .env)
 * @returns Timestamp d'expiration de l'archive
 */
export declare function calculateArchiveExpiry(archivedAt: number, archiveYearsOverride?: number): number;
/**
 * Vérifie si un enregistrement est expiré.
 */
export declare function isExpired(expiresAt: number, now?: number): boolean;
export interface RetentionPolicyConfig {
    category: string;
    retentionDays: number;
    archiveYears: number;
    legalBasis: LegalBasis;
    anonymizeAfterDays: number;
}
/**
 * Politiques de rétention par défaut au moment de la migration.
 * Définition validée : 30 jours actif + 5 ans archive pour tout.
 */
export declare function getDefaultPolicies(): RetentionPolicyConfig[];
/**
 * Politiques par défaut — format JSON pour la migration SQL.
 */
export declare function getDefaultPoliciesJson(): string;
/**
 * Détermine si un enregistrement doit être anonymisé (mi-rétention)
 * vs supprimé (fin de rétention active).
 *
 * @param createdAt Timestamp de création
 * @param policy Politique de rétention
 * @returns 'active' | 'anonymize' | 'archive' | 'purge'
 */
export declare function getRetentionStage(createdAt: number, policy: RetentionPolicyConfig, now?: number): 'active' | 'anonymize' | 'archive' | 'purge';
//# sourceMappingURL=retention.d.ts.map