import type { Notification, NotificationAction, NotificationSeverity } from 'stream-chat'; import { type NotificationTargetPanel } from '../notificationTarget'; /** Tag used for full-width system banners (e.g. connection status). Excluded from `NotificationList` by default. */ export declare const SYSTEM_NOTIFICATION_TAG: "system"; export declare const hasSystemNotificationTag: (notification: Notification) => boolean; export type NotificationIncidentDescriptor = { /** Where the incident happened (e.g. api, browser, validation, permission). */ domain: string; /** Entity being operated on (e.g. message, poll, location, attachment). */ entity: string; /** Attempted operation (e.g. send, end, share, upload). */ operation: string; /** Status of the operation (e.g. failed, success, blocked). */ status?: string; }; export type AddNotificationParams = { /** Optional interactive actions rendered by the notification component. */ actions?: NotificationAction[]; /** Arbitrary context metadata stored in `origin.context`. */ context?: Record; /** Duration in milliseconds after which the notification auto-dismisses. */ duration?: number; /** Logical source emitting the notification (e.g. component or feature name). */ emitter: string; /** Underlying error object attached as `options.originalError`. */ error?: Error; /** Human-readable notification message. */ message: string; /** Notification severity visualized by the UI. */ severity?: NotificationSeverity; /** Additional tags appended to target panel tags. */ tags?: string[]; /** Explicit target panels; when provided, inferred panel is ignored. */ targetPanels?: NotificationTargetPanel[]; /** Structured descriptor of the incident this notification reports on. */ incident?: NotificationIncidentDescriptor; /** * Optional machine-readable notification type identifier (domain:entity:operation:status). * Used by notification consumers to route behavior, including translation lookup * via notification-type registries. * When omitted, `type` is generated from `incident` if `incident` is provided. */ type?: string; }; /** * Same shape as {@link AddNotificationParams} except `targetPanels` is omitted — system * banners are global and do not receive `target:*` panel tags (they are filtered by the * `system` tag for `NotificationList` vs banner UIs). */ export type AddSystemNotificationParams = Omit; export type AddNotification = (params: AddNotificationParams) => void; /** Returns the notification id (for removal / timeouts). */ export type AddSystemNotification = (params: AddSystemNotificationParams) => string; export type RemoveNotification = (id: string) => void; export type StartNotificationTimeout = (id: string) => void; export type NotificationApi = { addNotification: AddNotification; addSystemNotification: AddSystemNotification; removeNotification: RemoveNotification; startNotificationTimeout: StartNotificationTimeout; }; export declare const useNotificationApi: () => NotificationApi; //# sourceMappingURL=useNotificationApi.d.ts.map