import type { SessionData } from '../../types/session.js'; export interface SessionMetrics { operations: { create: OperationMetrics; get: GetOperationMetrics; update: OperationMetrics; delete: OperationMetrics; touch: OperationMetrics; }; store: StoreMetrics; redis?: RedisMetrics; fallback: FallbackMetrics; } export interface OperationMetrics { count: number; avgLatency: number; errors: number; } export interface GetOperationMetrics extends OperationMetrics { cacheMisses: number; } export interface StoreMetrics { type: string; available: boolean; totalSessions: number; activeSessions: number; expiredSessions: number; } export interface RedisMetrics { available: boolean; latency?: number; memoryUsage?: number; keyCount?: number; connections?: number; } export interface FallbackMetrics { activations: number; lastActivation?: Date; totalFallbackTime: number; } export interface HealthCheckResult { status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: Date; checks: HealthChecks; metrics: SessionMetrics; alerts: Alert[]; } export interface HealthChecks { redis: ComponentHealth; sessionStore: ComponentHealth; fallback: ComponentHealth; } export interface ComponentHealth { available: boolean; latency?: number; error?: string; } export interface Alert { level: 'warning' | 'critical'; message: string; timestamp: Date; } export interface MonitoringConfig { healthCheckInterval: number; metricsRetentionPeriod: number; alertThresholds: AlertThresholds; enableDetailedMetrics: boolean; enableAlerting: boolean; } export interface AlertThresholds { maxLatency: number; maxErrorRate: number; maxFallbackTime: number; minAvailability: number; } export interface MetricsHistoryEntry { timestamp: Date; metrics: SessionMetrics; } export interface AlertHistoryEntry { timestamp: Date; level: string; message: string; } export interface OperationRecord { operation: keyof SessionMetrics['operations']; latency: number; success: boolean; cacheMiss?: boolean; } export interface UptimeStats { startTime: Date; uptime: number; availability: number; } export interface MonitoringStatus { isRunning: boolean; config: MonitoringConfig; uptime: number; metricsCount: number; alertCount: number; } export interface ExportedMetrics { prometheus?: string; json: SessionMetrics; } export interface TestSessionData extends SessionData { userId: string; username: string; roles: string[]; createdAt: string; expiresAt: string; } //# sourceMappingURL=types.d.ts.map