/** * Core monitoring interfaces for production observability */ export interface MetricValue { value: number; timestamp: Date; labels?: Record; } export interface Counter extends MetricValue { type: 'counter'; } export interface Gauge extends MetricValue { type: 'gauge'; } export interface Histogram extends MetricValue { type: 'histogram'; buckets: number[]; } export type Metric = Counter | Gauge | Histogram; export interface PerformanceMetrics { workflowStarted: number; workflowCompleted: number; workflowFailed: number; expertConsultationTime: number; documentGenerationTime: number; averageResponseTime: number; errorRate: number; activeConnections: number; memoryUsage: number; cpuUsage: number; } export interface HealthCheckResult { service: string; status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: Date; responseTime: number; details?: Record; error?: string; } export interface SystemHealth { overall: 'healthy' | 'degraded' | 'unhealthy'; services: HealthCheckResult[]; uptime: number; timestamp: Date; } export interface AlertRule { id: string; name: string; metric: string; condition: 'greater_than' | 'less_than' | 'equals' | 'not_equals'; threshold: number; severity: 'low' | 'medium' | 'high' | 'critical'; description: string; enabled: boolean; } export interface Alert { id: string; ruleId: string; metric: string; currentValue: number; threshold: number; severity: 'low' | 'medium' | 'high' | 'critical'; message: string; firedAt: Date; resolvedAt?: Date; status: 'firing' | 'resolved'; } export interface LogEntry { timestamp: Date; level: 'debug' | 'info' | 'warn' | 'error' | 'fatal'; message: string; service: string; correlationId?: string; userId?: string; sessionId?: string; workflowId?: string; expertType?: string; metadata?: Record; error?: { name: string; message: string; stack: string; }; } export interface IMetricsCollector { recordCounter(name: string, value: number, labels?: Record): void; recordGauge(name: string, value: number, labels?: Record): void; recordHistogram(name: string, value: number, labels?: Record): void; startTimer(name: string, labels?: Record): () => void; getMetrics(): Promise; getMetricByName(name: string): Promise; clearMetrics(): void; } export interface IHealthChecker { registerCheck(name: string, checkFn: () => Promise): void; runCheck(name: string): Promise; runAllChecks(): Promise; removeCheck(name: string): void; } export interface IAlertManager { addRule(rule: AlertRule): void; removeRule(ruleId: string): void; updateRule(ruleId: string, updates: Partial): void; evaluateRules(metrics: Metric[]): Alert[]; getActiveAlerts(): Alert[]; getAlertHistory(limit?: number): Alert[]; resolveAlert(alertId: string): void; } export interface MonitoringConfig { enableMetrics: boolean; enableHealthChecks: boolean; enableAlerting: boolean; metricsRetentionHours: number; healthCheckIntervalMs: number; alertEvaluationIntervalMs: number; logLevel: 'debug' | 'info' | 'warn' | 'error' | 'fatal'; structuredLogging: boolean; correlationTracking: boolean; } //# sourceMappingURL=interfaces.d.ts.map