UNPKG

dt-common-device

Version:

A secure and robust device management library for IoT applications

158 lines (157 loc) 7.01 kB
import { IAlertDocument } from "./Alert.model"; import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, IAlertQuery } from "./alert.types"; import { AlertBuilder } from "./AlertBuilder"; import { IDevice } from "../entities/device/local/interfaces"; import { Source } from "../constants"; export declare class AlertService { private readonly alertRepository; constructor(); /** * Create an operations alert using AlertBuilder */ raiseOperationsAlert(data: CreateAlertData): Promise<IAlertDocument | null>; /** * Create a security alert using AlertBuilder */ raiseSecurityAlert(data: CreateAlertData): Promise<IAlertDocument | null>; raiseDeviceAlert(data: CreateAlertData): Promise<IAlertDocument | null>; /** * Create a hub-specific alert using AlertBuilder */ raiseHubAlert(data: CreateAlertData): Promise<IAlertDocument | null>; raiseDeviceTamperAttemptAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseDoorLeftOpenAlert(device: IDevice, zone: any, openThreshold: number, source: Source): Promise<IAlertDocument | null>; raiseIncorrectCodeAlert(device: IDevice, zone: any, source: Source, accessCount: number, timeWindow: { startDate: string; endDate: string; }): Promise<IAlertDocument | null>; raiseNewDeviceAlert(connection: { id: string; provider: string; deviceCount: number; type?: string; }, propertyId: string, source: Source): Promise<IAlertDocument | null>; raiseDoorOpenFrequentAlert(device: IDevice, zone: any, accessTimes: number, openThreshold: number, source: Source): Promise<IAlertDocument | null>; raiseDoorOpenOutsideBusinessHoursAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; /** * Raise alert for device coming online (OPERATIONAL only) */ raiseDeviceOnlineAlert(device: IDevice, source: Source): Promise<IAlertDocument | null>; raiseLockAccessEmergencyCodeAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseLockAccessEmergencyRfidAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseLockAccessMasterRfidAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseLockAccessMasterCodeAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseSpecificDoorAccessAlert(userName: string, device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseGuestLockFirstAccessAlert(userName: string, device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>; raiseZoneNotMappedToAccessGroupAlert(zone: any, source: Source): Promise<IAlertDocument | null>; /** * Create a new alert with business logic validation * Accepts either a CreateAlertData object or an AlertBuilder instance */ createAlert(alertData: CreateAlertData | AlertBuilder): Promise<IAlertDocument | null>; /** * Get alert by ID with business logic */ getAlertById(id: string, includeDeleted?: boolean): Promise<IAlertDocument | null>; /** * Get all alerts with business logic filtering */ queryAlerts(filters?: IAlertQuery): Promise<IAlertDocument[]>; alertCount(filters: IAlertQuery): Promise<number>; /** * Update an alert with business logic validation */ updateAlert(id: string, updateData: UpdateAlertData): Promise<IAlertDocument | null>; deleteAlerts(filters: IAlertQuery, deletedBy: string, softDelete?: boolean): Promise<boolean>; /** * Soft delete an alert with business logic */ deleteAlert(id: string, deletedBy: string): Promise<boolean>; /** * Mark alert as read with business logic */ markAsRead(id: string, updatedBy: string): Promise<IAlertDocument | null>; /** * Mark alert as unread with business logic */ markAsUnread(id: string, updatedBy: string): Promise<IAlertDocument | null>; /** * Activate an alert with business logic */ activateAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>; /** * Deactivate an alert with business logic */ deactivateAlert(query: IAlertQuery, updatedBy: string): Promise<IAlertDocument | null>; /** * Snooze an alert with business logic */ snoozeAlert(id: string, updatedBy: string, until?: Date): Promise<IAlertDocument | null>; /** * Unsnooze an alert with business logic */ unsnoozeAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>; /** * Get alerts by category with business logic */ getAlertsByCategory(category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get snoozed alerts with business logic */ getSnoozedAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get expired snooze alerts with business logic */ getExpiredSnoozeAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get alert statistics with business logic */ getAlertStatistics(propertyId?: string, zoneId?: string): Promise<{ total: number; active: number; unread: number; snoozed: number; bySeverity: Record<AlertSeverity, number>; byCategory: Record<AlertCategory, number>; }>; /** * Get alerts by zone ID */ getAlertsByZoneId(zoneId: string, includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get alerts by zone ID and category */ getAlertsByZoneIdAndCategory(zoneId: string, category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get alerts by zone ID and severity */ getAlertsByZoneIdAndSeverity(zoneId: string, severity: AlertSeverity, includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get alerts by multiple zone IDs */ getAlertsByZoneIds(zoneIds: string[], includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get alert statistics by zone ID and severity */ getAlertStatisticsByZoneAndSeverity(zoneId: string, severity?: AlertSeverity): Promise<{ total: number; active: number; unread: number; snoozed: number; byCategory: Record<AlertCategory, number>; }>; /** * Get alerts by zone ID and active status */ getAlertsByZoneIdAndActiveStatus(zoneId: string, isActive: boolean, includeDeleted?: boolean): Promise<IAlertDocument[]>; /** * Get alerts by zone ID and read status */ getAlertsByZoneIdAndReadStatus(zoneId: string, isRead: boolean, includeDeleted?: boolean): Promise<IAlertDocument[]>; private validateAlertData; private validateFilters; private validateUpdateData; private validateSnoozeDate; private determineDefaultSeverity; private applyBusinessRules; }