/** @public */ export type NotificationSeverity = 'critical' | 'high' | 'normal' | 'low'; /** @public */ export type NotificationPayload = { /** * Notification title */ title: string; /** * Optional longer description for the notification */ description?: string; /** * Optional link where the notification is pointing to */ link?: string; /** * Notification severity, defaults to 'normal' */ severity?: NotificationSeverity; /** * Optional notification topic */ topic?: string; /** * Notification scope, can be used to re-send same notifications in case * the scope and origin matches. */ scope?: string; /** * Optional notification icon */ icon?: string; }; /** @public */ export type Notification = { /** * Unique identifier for the notification */ id: string; /** * The user entity reference that the notification is targeted to or null * for broadcast notifications */ user: string | null; /** * Notification creation date */ created: Date; /** * If user has saved the notification, the date when it was saved */ saved?: Date; /** * If user has read the notification, the date when it was read */ read?: Date; /** * If the notification has been updated due to it being in the same scope * and from same origin as previous notification, the date when it was updated */ updated?: Date; /** * Origin of the notification as in the reference to sender */ origin: string; /** * Actual notification payload */ payload: NotificationPayload; }; /** @public */ export type NotificationStatus = { /** * Total number of unread notifications for the user */ unread: number; /** * Total number of read notifications for the user */ read: number; }; /** @public */ export type NewNotificationSignal = { action: 'new_notification'; notification_id: string; }; /** @public */ export type NotificationReadSignal = { action: 'notification_read' | 'notification_unread'; notification_ids: string[]; }; /** @public */ export type NotificationSignal = NewNotificationSignal | NotificationReadSignal; /** * @public */ export type NotificationProcessorFilters = { minSeverity?: NotificationSeverity; maxSeverity?: NotificationSeverity; excludedTopics?: string[]; }; /** * @public */ export type NotificationSettings = { channels: { id: string; origins: { id: string; enabled: boolean; }[]; }[]; };