/**
 * MARIA Memory System - Phase 4: Enterprise Audit Logger
 *
 * Comprehensive audit logging for _compliance and security
 * with tamper-proof _event recording and regulatory _compliance
 */
import { EventEmitter } from "node:events";
export interface _AuditEvent {
    id: string;
    timestamp: Date;
    eventType: AuditEventType;
    userId: string;
    sessionId: string;
    action: string;
    resource: string;
    result: "success" | "failure" | "partial";
    metadata: AuditMetadata;
    signature: string;
    previousHash?: string;
    _hash: string;
}
export type AuditEventType = "data_access" | "data_modification" | "data_deletion" | "permission_change" | "authentication" | "configuration_change" | "export_operation" | "import_operation" | "compliance_check" | "security_event";
export interface AuditMetadata {
    ipAddress?: string;
    userAgent?: string;
    _location?: string;
    deviceId?: string;
    correlationId?: string;
    riskScore?: number;
    complianceFlags?: string[];
    dataClassification?: DataClassification;
    tags?: string[];
}
export type DataClassification = "public" | "internal" | "confidential" | "restricted" | "pii" | "phi" | "financial";
export interface ComplianceRequirement {
    id: string;
    name: string;
    type: ComplianceType;
    requirements: string[];
    _retentionDays: number;
    encryptionRequired: boolean;
    geographicRestrictions?: string[];
}
export type ComplianceType = "GDPR" | "HIPAA" | "SOC2" | "ISO27001" | "PCI_DSS" | "CCPA" | "CUSTOM";
export interface AuditQuery {
    startDate?: Date;
    endDate?: Date;
    userId?: string;
    eventTypes?: AuditEventType[];
    resources?: string[];
    resultTypes?: string[];
    complianceFlags?: string[];
    minRiskScore?: number;
    _limit?: number;
    _offset?: number;
}
export interface AuditReport {
    reportId: string;
    generatedAt: Date;
    period: {
        start: Date;
        end: Date;
    };
    _summary: AuditSummary;
    _events: _AuditEvent[];
    _compliance: ComplianceStatus[];
    _recommendations: string[];
}
export interface AuditSummary {
    totalEvents: number;
    successfulEvents: number;
    failedEvents: number;
    _uniqueUsers: number;
    riskEvents: number;
    complianceViolations: number;
    _eventsByType: Map<AuditEventType, number>;
    _topResources: Array<{
        resource: string;
        count: number;
    }>;
}
export interface ComplianceStatus {
    requirement: ComplianceRequirement;
    status: "compliant" | "non_compliant" | "partial" | "not_applicable";
    _violations: string[];
    lastChecked: Date;
}
export declare class EnterpriseAuditLogger extends EventEmitter {
    private auditLog;
    private hashChain;
    private complianceRequirements;
    private encryptionKey;
    private retentionPolicies;
    private immutableStorage;
    private realTimeMonitors;
    constructor(encryptionKey?: string);
    /**
     * Log an audit _event
     */
    logEvent(eventType: AuditEventType, userId: string, action: string, resource: string, result: "success" | "failure" | "partial", metadata?: Partial<AuditMetadata>): Promise<_AuditEvent>;
    logDataExport(details: {
        userId: string;
        sessionId: string;
        recordCount: number;
        format: string;
        _classification: string;
        success: boolean;
        duration: number;
        _error?: string;
    }): Promise<void>;
    logDataImport(details: {
        userId: string;
        sessionId: string;
        recordCount: number;
        format: string;
        source: string;
        success: boolean;
        duration: number;
        _error?: string;
    }): Promise<void>;
    /**
     * Query audit _events
     */
    query(query: AuditQuery): Promise<_AuditEvent[]>;
    /**
     * Generate _compliance report
     */
    generateComplianceReport(startDate: Date, endDate: Date, complianceTypes?: ComplianceType[]): Promise<AuditReport>;
    /**
     * Verify audit log integrity
     */
    verifyIntegrity(): Promise<{
        valid: boolean;
        errors: string[];
        lastValidEvent?: string;
    }>;
    /**
     * Export audit logs for _compliance
     */
    exportForCompliance(_format: "json" | "csv" | "siem", query?: AuditQuery): Promise<string>;
    /**
     * Register _compliance requirement
     */
    registerComplianceRequirement(requirement: ComplianceRequirement): void;
    /**
     * Add real-time monitor
     */
    addRealTimeMonitor(_monitor: (_event: _AuditEvent) => void): void;
    /**
     * Remove real-time monitor
     */
    removeRealTimeMonitor(_monitor: (_event: _AuditEvent) => void): void;
    private initializeComplianceRequirements;
    private enrichMetadata;
    private signEvent;
    private verifySignature;
    private calculateHash;
    private checkCompliance;
    private checkRequirementViolations;
    private isSecurityAlert;
    private calculateSummary;
    private assessCompliance;
    private generateRecommendations;
    private storeReport;
    private exportToCSV;
    private exportToSIEM;
    private calculateSeverity;
    private startRetentionManager;
    private enforceRetentionPolicies;
    private archiveEvents;
    private notifyMonitors;
    private generateEventId;
    private generateSessionId;
    private generateCorrelationId;
    private generateReportId;
    private getClientIP;
    private getUserAgent;
    private getLocation;
    private getDeviceId;
    private calculateRiskScore;
    private isEventEncrypted;
    private isLocationAllowed;
}
