import { RevocationAuditEntry } from './cascading-revocation-manager';
import { ActivityLogger } from '../activity/activity-logger';
export interface AuditQuery {
    agentDID?: string;
    revokedBy?: string;
    serviceDID?: string;
    reason?: string;
    status?: 'pending' | 'completed' | 'failed' | 'partial';
    dateRange?: {
        start: Date;
        end: Date;
    };
    cascading?: boolean;
    limit?: number;
    offset?: number;
    sortBy?: 'timestamp' | 'agentDID' | 'status';
    sortOrder?: 'asc' | 'desc';
}
export interface AuditAnalytics {
    totalRevocations: number;
    revocationsByReason: Map<string, number>;
    revocationsByService: Map<string, number>;
    revocationsByUser: Map<string, number>;
    revocationsByStatus: Map<string, number>;
    cascadingPercentage: number;
    averageChildRevocations: number;
    peakRevocationHours: number[];
    revocationTrends: {
        daily: Map<string, number>;
        weekly: Map<string, number>;
        monthly: Map<string, number>;
    };
    complianceMetrics: {
        auditCompleteness: number;
        notificationSuccessRate: number;
        avgProcessingTime: number;
    };
}
export interface AuditAlert {
    id: string;
    type: 'high_volume' | 'cascade_failure' | 'notification_failure' | 'suspicious_pattern';
    severity: 'low' | 'medium' | 'high' | 'critical';
    message: string;
    timestamp: Date;
    affectedAgents: string[];
    metadata: Record<string, any>;
    acknowledged: boolean;
    acknowledgedBy?: string;
    acknowledgedAt?: Date;
}
/**
 * Enhanced audit trail system for delegation revocations
 * Provides advanced querying, analytics, and monitoring capabilities
 */
export declare class EnhancedAuditTrail {
    private activityLogger;
    private config;
    private auditEntries;
    private alertSubscribers;
    private alerts;
    private lastAnalyticsUpdate;
    private cachedAnalytics;
    constructor(activityLogger: ActivityLogger, config?: {
        maxEntries: number;
        alertThresholds: {
            highVolumeMinutes: number;
            highVolumeCount: number;
            cascadeFailureThreshold: number;
            notificationFailureThreshold: number;
        };
        retentionDays: number;
    });
    /**
     * Adds a revocation audit entry to the trail
     */
    addAuditEntry(entry: RevocationAuditEntry): Promise<void>;
    /**
     * Updates an existing audit entry
     */
    updateAuditEntry(id: string, updates: Partial<RevocationAuditEntry>): Promise<boolean>;
    /**
     * Queries audit entries with advanced filtering
     */
    queryAuditEntries(query?: AuditQuery): RevocationAuditEntry[];
    /**
     * Generates comprehensive analytics from audit data
     */
    generateAnalytics(forceRefresh?: boolean): AuditAnalytics;
    /**
     * Subscribes to audit alerts
     */
    subscribeToAlerts(subscriberId: string, callback: (alert: AuditAlert) => void): void;
    /**
     * Unsubscribes from audit alerts
     */
    unsubscribeFromAlerts(subscriberId: string): void;
    /**
     * Gets all active alerts
     */
    getActiveAlerts(): AuditAlert[];
    /**
     * Acknowledges an alert
     */
    acknowledgeAlert(alertId: string, acknowledgedBy: string): Promise<boolean>;
    /**
     * Exports audit data in various formats
     */
    exportAuditData(format: 'json' | 'csv' | 'xml', query?: AuditQuery): string;
    /**
     * Generates compliance report
     */
    generateComplianceReport(period: {
        start: Date;
        end: Date;
    }): {
        summary: {
            totalRevocations: number;
            successfulRevocations: number;
            failedRevocations: number;
            partialRevocations: number;
            complianceScore: number;
        };
        details: {
            auditCompleteness: number;
            notificationDelivery: number;
            processingTime: number;
            errorRate: number;
        };
        recommendations: string[];
        violations: Array<{
            type: string;
            severity: 'low' | 'medium' | 'high';
            description: string;
            affectedEntries: string[];
        }>;
    };
    private checkAlerts;
    private createAlert;
    private cleanupOldEntries;
    private exportToCsv;
    private exportToXml;
    private escapeXml;
    private getWeekKey;
    private getWeekNumber;
}
//# sourceMappingURL=audit-trail.d.ts.map