/**
 * Compliance Manager
 * GDPR, HIPAA, and SOC2 compliance enforcement
 * Sealed namespace for immutability
 */
import { type RedisConfig } from '../../../src/index.js';
export type ComplianceStandard = 'gdpr' | 'hipaa' | 'soc2';
export type DataClassification = 'public' | 'internal' | 'confidential' | 'restricted';
export type ComplianceConfig = {
    gdpr: {
        enabled: boolean;
        dataRetentionDays: number;
        requireConsent: boolean;
        enableRightToForgotten: boolean;
        enableDataPortability: boolean;
        enableAccessRequest: boolean;
    };
    hipaa: {
        enabled: boolean;
        requireEncryptionAtRest: boolean;
        requireEncryptionInTransit: boolean;
        auditRetentionYears: number;
        requireAccessControls: boolean;
        enableBreachNotification: boolean;
    };
    soc2: {
        enabled: boolean;
        requireChangeLogging: boolean;
        requireAccessReviews: boolean;
        accessReviewIntervalDays: number;
        requireIncidentResponse: boolean;
        requireDisasterRecovery: boolean;
    };
};
export type DataSubject = {
    id: string;
    email?: string;
    consentGiven: boolean;
    consentDate?: Date;
    consentWithdrawnDate?: Date;
    dataClassification: DataClassification;
    retentionPeriod?: number;
    deletionScheduled?: Date;
};
export type ComplianceAuditLog = {
    id: string;
    timestamp: Date;
    standard: ComplianceStandard;
    action: string;
    userId: string;
    userRole?: string;
    dataSubjectId?: string;
    resourceId: string;
    resourceType: string;
    ipAddress?: string;
    userAgent?: string;
    changes?: Record<string, {
        before: unknown;
        after: unknown;
    }>;
    result: 'success' | 'failure' | 'blocked';
    reason?: string;
    severity: 'info' | 'warning' | 'critical';
};
export type AccessRequest = {
    id: string;
    dataSubjectId: string;
    requestType: 'access' | 'deletion' | 'portability' | 'rectification';
    requestDate: Date;
    status: 'pending' | 'approved' | 'rejected' | 'completed';
    requestedBy: string;
    approvedBy?: string;
    completedBy?: string;
    completedDate?: Date;
    reason?: string;
    dataExport?: string;
};
export type EncryptionMetadata = {
    algorithm: string;
    keyId: string;
    encryptedAt: Date;
    encryptedBy: string;
};
export type ComplianceViolation = {
    id: string;
    timestamp: Date;
    standard: ComplianceStandard;
    violationType: string;
    severity: 'low' | 'medium' | 'high' | 'critical';
    description: string;
    affectedResources: string[];
    remediation: string;
    status: 'open' | 'in-progress' | 'resolved' | 'accepted-risk';
};
/**
 * Compliance Manager - Sealed namespace
 */
export declare const ComplianceManager: Readonly<{
    /**
     * Initialize compliance manager
     */
    initialize(redisConfig: RedisConfig, config?: Partial<ComplianceConfig>): void;
    /**
     * Register data subject
     */
    registerDataSubject(subject: DataSubject): Promise<void>;
    /**
     * Record consent
     */
    recordConsent(dataSubjectId: string, consentGiven: boolean, userId: string): Promise<void>;
    /**
     * Check if action is compliant
     */
    checkCompliance(action: string, userId: string, dataSubjectId?: string, resourceId?: string): Promise<{
        compliant: boolean;
        violations: string[];
    }>;
    /**
     * Create access request (GDPR Right to Access, Deletion, etc.)
     */
    createAccessRequest(request: Omit<AccessRequest, "id" | "requestDate" | "status">): Promise<string>;
    /**
     * Process access request
     */
    processAccessRequest(requestId: string, status: AccessRequest["status"], processedBy: string): Promise<void>;
    /**
     * Encrypt sensitive data (HIPAA compliance)
     */
    encryptSensitiveData(data: string, userId: string, keyId?: string): {
        encrypted: string;
        metadata: EncryptionMetadata;
    };
    /**
     * Decrypt sensitive data
     */
    decryptSensitiveData(encryptedPackage: string, userId: string): string;
    /**
     * Record compliance violation
     */
    recordViolation(violation: Omit<ComplianceViolation, "id" | "timestamp">): Promise<string>;
    /**
     * Get audit logs
     */
    getAuditLogs(standard: ComplianceStandard, startDate?: Date, endDate?: Date, limit?: number): Promise<ReadonlyArray<ComplianceAuditLog>>;
    /**
     * Get compliance summary
     */
    getComplianceSummary(): Promise<{
        gdpr: {
            enabled: boolean;
            dataSubjects: number;
            pendingRequests: number;
        };
        hipaa: {
            enabled: boolean;
            encryptedResources: number;
            auditLogRetention: string;
        };
        soc2: {
            enabled: boolean;
            violations: number;
            lastAccessReview?: Date;
        };
    }>;
    /**
     * Get configuration
     */
    getConfig(): ComplianceConfig | null;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<ComplianceConfig>): void;
    /**
     * Shutdown
     */
    shutdown(): Promise<void>;
}>;
//# sourceMappingURL=ComplianceManager.d.ts.map