export interface MonitoringMetric {
  name: string;
  value: number;
  timestamp: Date;
  tags?: Record<string, string>;
}

export interface MonitoringConfig {
  id: string;
  name: string;
  type: string;
  threshold: number;
  interval: number;
  enabled: boolean;
}

export interface MonitoringStatus {
  id: string;
  configId: string;
  status: 'healthy' | 'warning' | 'critical';
  lastCheck: Date;
  value: number;
}

export interface Alert {
  id: string;
  type: string;
  severity: 'low' | 'medium' | 'high' | 'critical';
  message: string;
  status: AlertStatusType;
  createdAt: Date;
  resolvedAt?: Date;
}

export type AlertStatusType = 'active' | 'resolved' | 'ignored';

export type AlertStatus = AlertStatusType;

export interface HealthCheckResult {
  status: 'healthy' | 'degraded' | 'unhealthy';
  timestamp: Date;
  checks: Record<string, HealthStatus>;
}

export interface HealthStatus {
  status: 'pass' | 'fail' | 'warn';
  message?: string;
  duration?: number;
}

export interface ServiceMetrics {
  requestsTotal: number;
  requestsFailed: number;
  responseTimeAvg: number;
  responseTimeP95: number;
  responseTimeP99: number;
}
