export type InfrastructureMonitoringRange = '1h' | '24h' | '7d'; export type InfrastructureMetricPoint = { timestamp: string; value: number; }; export type InfrastructureServiceStatus = { key: string; name: string; unit: string; status: 'healthy' | 'unhealthy' | 'unknown'; }; export type InfrastructureServiceMetricGroup = { key: string; name: string; available: boolean; metrics: Array<{ key: string; label: string; value: number | null; unit: 'percent' | 'seconds' | 'count' | 'per_second' | 'bytes'; }>; }; export type InfrastructureAlert = { fingerprint: string; name: string; severity: 'info' | 'warning' | 'critical'; status: string; startedAt: string; summary: string; description?: string; currentValue?: string; threshold?: string; service?: string; instance?: string; acknowledged: boolean; acknowledgedAt?: string; }; export type InfrastructureMonitoringOverview = { disks: Array<{ id: string; instance: string; device: string; mountpoint: string; mountpoints: string[]; filesystem: string; usagePercent: number | null; totalBytes: number | null; availableBytes: number | null; trend: InfrastructureMetricPoint[]; }>; available: boolean; range: InfrastructureMonitoringRange; collectedAt: string; lastSampleAt: string | null; error?: string; summary: { overallStatus: 'healthy' | 'warning' | 'critical' | 'unknown'; serviceTotal: number; serviceHealthy: number; warningAlerts: number; criticalAlerts: number; activeAlerts: number; }; metrics: { cpuUsagePercent: number | null; memoryUsagePercent: number | null; memoryTotalBytes: number | null; memoryAvailableBytes: number | null; diskUsagePercent: number | null; diskTotalBytes: number | null; diskAvailableBytes: number | null; networkReceiveBytesPerSecond: number | null; networkTransmitBytesPerSecond: number | null; load1: number | null; uptimeSeconds: number | null; }; trends: { cpuUsagePercent: InfrastructureMetricPoint[]; memoryUsagePercent: InfrastructureMetricPoint[]; diskUsagePercent: InfrastructureMetricPoint[]; networkReceiveBytesPerSecond: InfrastructureMetricPoint[]; networkTransmitBytesPerSecond: InfrastructureMetricPoint[]; }; services: InfrastructureServiceStatus[]; serviceMetrics: InfrastructureServiceMetricGroup[]; alerts: InfrastructureAlert[]; }; export type InfrastructureAlertThresholds = Record; export type InfrastructureAlertSettings = { configVersion: number; effectiveVersion: number; applyStatus: 'effective' | 'applying' | 'failed'; lastError: string | null; appliedAt: string | null; thresholds: InfrastructureAlertThresholds; effectiveThresholds: InfrastructureAlertThresholds; definitions: Array<{ key: string; label: string; unit: string; min: number; max: number; step: number }>; };