/**
 * ═══════════════════════════════════════════════════════════════════════════
 * Audit Trail — Types partagés
 * ═══════════════════════════════════════════════════════════════════════════
 *
 * Conformité Audit Trail (Loi 25 QC / AI Act / AI PIA) pour Overmind-MCP.
 * Voir docs/PLAN_AUDIT_INTEGRATION.md pour le plan complet.
 */
/** Bases légales au sens de la Loi 25 / AI Act */
export type LegalBasis = 'consent' | 'contract' | 'legitimate_interest' | 'legal_obligation';
/** Catégories de données personnelles */
export type DataCategory = 'agent_runs' | 'knowledge_chunks' | 'discord_messages' | 'api_requests' | 'credentials';
/** Régions de transfert pour les providers LLM */
export type TransferRegion = 'QC' | 'CA' | 'US' | 'EU' | 'CN' | 'OTHER';
/** Mécanismes légaux pour les transferts hors Québec */
export type TransferMechanism = 'standard_contractual_clauses' | 'adequacy' | 'explicit_consent' | 'binding_corporate_rules' | 'unspecified';
/** Niveaux de gravité d'incident (art. 12.1) */
export type IncidentSeverity = 'low' | 'moderate' | 'high';
/** Catégories d'incident */
export type IncidentCategory = 'data_leak' | 'unauthorized_access' | 'breach' | 'retention_violation' | 'transfer_violation' | 'consent_violation';
/**
 * Contexte audit propagé à travers chaque outil et runner.
 * Obligatoire quand OVERMIND_AUDIT_ENABLED=true.
 */
export interface AuditContext {
    /** Identifiant pseudonymisé de la personne (hash SHA-256, jamais l'identité brute) */
    dataSubjectId?: string;
    /** Base légale du traitement */
    legalBasis: LegalBasis;
    /** Référence au consentement si legalBasis = 'consent' */
    consentRef?: string;
    /** Finalité du traitement (art. 4 — doit être légitime et pertinente) */
    purpose: string;
    /** Anonymiser les RP avant stockage (art. 23.1) */
    anonymize?: boolean;
}
/** Enregistrement de consentement (table consent_records) */
export interface ConsentRecord {
    id: string;
    data_subject_id: string;
    purpose: string;
    legal_basis: LegalBasis;
    granted_at: number;
    expires_at: number | null;
    withdrawn_at: number | null;
    evidence: string | null;
}
/** Sujet de données (table data_subjects) */
export interface DataSubject {
    id: string;
    display_name: string | null;
    source: 'discord' | 'api' | 'manual' | 'bridge';
    created_at: number;
    metadata: Record<string, unknown> | null;
}
/** Entrée du registre des traitements (table processing_registry) */
export interface ProcessingEntry {
    id: string;
    name: string;
    purpose: string;
    legal_basis: LegalBasis;
    data_categories: string;
    recipients: string;
    retention_days: number;
    created_at: number;
    updated_at: number;
}
/** Journal d'incident (table incident_log) */
export interface IncidentLogEntry {
    id: string;
    detected_at: number;
    severity: IncidentSeverity;
    category: IncidentCategory;
    description: string | null;
    data_subjects_affected: number;
    cai_notified: number;
    subjects_notified: number;
    resolved_at: number | null;
}
/** Journal d'accès (table access_log) */
export interface AccessLogEntry {
    id: string;
    data_subject_id: string | null;
    accessed_by: string;
    action: 'read' | 'write' | 'delete' | 'transfer';
    resource_type: string;
    resource_id: string;
    purpose: string | null;
    timestamp: number;
}
/** Journal de transfert hors QC (table transfer_log) */
export interface TransferLogEntry {
    id: string;
    data_subject_id: string | null;
    destination: string;
    destination_region: TransferRegion;
    legal_mechanism: TransferMechanism;
    data_type: string;
    timestamp: number;
}
/** Politique de rétention (table retention_policies) */
export interface RetentionPolicy {
    id: string;
    category: string;
    retention_days: number;
    legal_basis: LegalBasis;
    anonymize_after_days: number | null;
    active: boolean;
}
/**
 * Vérifie si la l'audit trail est activé (master feature flag).
 * Si false, tous les guards sont passifs (comportement v3.8).
 */
export declare function isAuditEnabled(): boolean;
/** Lit la rétention par défaut depuis .env (défaut: 30 jours) */
export declare function getDefaultRetentionDays(): number;
/** Lit la durée d'archivage cold storage depuis .env (défaut: 5 ans) */
export declare function getDefaultArchiveYears(): number;
/** Lit la base légale par défaut depuis .env */
export declare function getDefaultLegalBasis(): LegalBasis;
/**
 * Allowlist des sujets internes (intérêt légitime suffisant, pas de consentement requis).
 * Format .env : OVERMIND_AUDIT_INTERNAL_SUBJECTS=hash1,hash2,hash3
 */
export declare function getInternalSubjects(): Set<string>;
/**
 * Détermine si un sujet est interne (intérêt légitime) ou tiers (consentement requis).
 */
export declare function isInternalSubject(dataSubjectId: string): boolean;
//# sourceMappingURL=types.d.ts.map