@openade/fe
Version:
Fatturazione Elettronica - Electronic Invoicing for Sistema di Interscambio (SDI)
78 lines • 2.78 kB
TypeScript
export interface AuditConfig {
logDir: string;
maxLogSize?: number;
retentionDays?: number;
detailedLogging?: boolean;
includeSensitiveData?: boolean;
format?: 'json' | 'text';
compression?: boolean;
}
export interface AuditEvent {
id: string;
type: AuditEventType;
timestamp: string;
userId?: string;
sessionId?: string;
ipAddress?: string;
userAgent?: string;
description: string;
details: Record<string, any>;
success: boolean;
error?: string;
duration?: number;
invoiceId?: string;
archiveId?: string;
batchId?: string;
}
export type AuditEventType = 'INVOICE_CREATED' | 'INVOICE_UPDATED' | 'INVOICE_DELETED' | 'INVOICE_SIGNED' | 'INVOICE_TIMESTAMPED' | 'INVOICE_TRANSMITTED' | 'INVOICE_RECEIVED' | 'INVOICE_ARCHIVED' | 'INVOICE_EXTRACTED' | 'BATCH_STARTED' | 'BATCH_COMPLETED' | 'BATCH_FAILED' | 'ARCHIVE_CREATED' | 'ARCHIVE_DELETED' | 'ARCHIVE_EXTRACTED' | 'USER_LOGIN' | 'USER_LOGOUT' | 'CONFIGURATION_CHANGED' | 'ERROR_OCCURRED' | 'SYSTEM_STARTUP' | 'SYSTEM_SHUTDOWN';
export interface AuditQuery {
types?: AuditEventType[];
startDate?: string;
endDate?: string;
userId?: string;
success?: boolean;
invoiceId?: string;
limit?: number;
offset?: number;
}
export interface AuditStats {
totalEvents: number;
eventsByType: Record<AuditEventType, number>;
eventsByUser: Record<string, number>;
successRate: number;
averageDuration: number;
commonErrors: Array<{
error: string;
count: number;
}>;
timeRange: {
start: string;
end: string;
};
}
export declare class AuditTrailManager {
private config;
private currentLogFile;
constructor(config: AuditConfig);
logEvent(event: Omit<AuditEvent, 'id' | 'timestamp'>): Promise<void>;
queryEvents(query?: AuditQuery): Promise<AuditEvent[]>;
getAuditStats(query?: AuditQuery): Promise<AuditStats>;
exportEvents(query?: AuditQuery, format?: 'json' | 'csv'): Promise<string>;
cleanupOldLogs(): Promise<number>;
private generateEventId;
private ensureLogDirectory;
private getCurrentLogFile;
private writeToLog;
private formatLogEntry;
private rotateLogIfNeeded;
private getLogFiles;
private readLogFile;
private filterEvents;
private calculateStats;
private exportToCSV;
private sanitizeSensitiveData;
}
export declare function createAuditTrailManager(config: AuditConfig): AuditTrailManager;
export declare function logAuditEvent(event: Omit<AuditEvent, 'id' | 'timestamp'>, config: AuditConfig): Promise<void>;
export declare function queryAuditEvents(query: AuditQuery | undefined, config: AuditConfig): Promise<AuditEvent[]>;
//# sourceMappingURL=audit.manager.d.ts.map