/** * Notification payload structure */ export interface NotificationPayload { subject: string; message: string; monitorId: string; monitorName: string; monitorStatus: "up" | "down" | "unknown"; consecutiveFailures: number; url?: string; pingMs?: number | null; httpStatus?: number | null; sslExpiresAt?: Date | null; extra?: Record; } /** * Generic notification channel interface */ export interface NotificationChannel { name: string; send(config: any, recipient: any, payload: NotificationPayload): Promise<{ success: boolean; error?: string; }>; } /** * Provider configuration from database */ export interface ProviderConfig { id: string; providerName: string; displayName: string; isEnabled: boolean; config: Record; description?: string; icon?: string; } /** * Notification rule from database */ export interface NotificationRule { id: string; monitorId: string | null; name: string; isEnabled: boolean; triggerOnDown: boolean; triggerOnUp: boolean; consecutiveFailures: number; providers: string[]; recipients: Record; cooldownMinutes: number; } /** * Monitor alert state */ export interface MonitorAlertState { id: string; monitorId: string; currentStatus: "up" | "down" | "unknown"; consecutiveFailures: number; consecutiveSuccesses: number; lastNotifiedAt: Date | null; lastNotifiedStatus: string | null; lastStatusChange: Date; updatedAt: Date; } /** * Notification history entry */ export interface NotificationHistoryEntry { id: string; monitorId: string; ruleId: string | null; provider: string; recipient: string; subject: string | null; message: string; status: "pending" | "sent" | "failed"; errorMessage: string | null; monitorStatus: "up" | "down" | "unknown"; consecutiveFailures: number; sentAt: Date | null; createdAt: Date; } //# sourceMappingURL=types.d.ts.map