import type { LogLevel } from '../value-objects/LogLevel'; /** * Main logger interface * Follows Interface Segregation Principle */ export interface ILogger { debug(message: string, context?: Record): void; info(message: string, context?: Record): void; warn(message: string, context?: Record): void; error(message: string, context?: Record): void; fatal(message: string, context?: Record): void; log(level: LogLevel, message: string, context?: Record): void; trackEvent(eventName: string, properties?: Record): void; withContext(context: Record, fn: () => T): T; withContextAsync(context: Record, fn: () => Promise): Promise; flush(): Promise; getMetrics(): LoggerMetrics; getHealth(): HealthStatus; destroy(): Promise; } export interface LoggerMetrics { readonly logsProcessed: number; readonly logsDropped: number; readonly logsSanitized: number; readonly flushCount: number; readonly errorCount: number; readonly bufferSize: number; readonly avgFlushTime: number; readonly lastFlushTime: number; readonly memoryUsage: number; readonly cpuUsage: number; readonly circuitBreakerTrips: number; readonly droppedByBackpressure: number; readonly droppedByDlq: number; readonly pendingFlushBatches: number; readonly inFlightFlushes: number; readonly latency?: { readonly p50: number; readonly p95: number; readonly p99: number; readonly avg: number; }; readonly compression?: { readonly avgRatio: number; readonly avgTime: number; readonly totalSavedBytes: number; }; readonly throughput?: number; } export interface HealthStatus { readonly healthy: boolean; readonly lastSuccessfulFlush: number; readonly consecutiveErrors: number; readonly bufferUtilization: number; uptime: number; memoryUsageMB: number; circuitBreakerState: 'closed' | 'open' | 'half-open'; lastError?: string; } //# sourceMappingURL=ILogger.d.ts.map