import * as React from 'react'; import type { AddNotificationInput, Notification, RenderNotificationTile } from './types'; interface NotificationsContextValue { notifications: Notification[]; unreadCount: number; isOpen: boolean; showPopups: boolean; addNotification: (input: AddNotificationInput) => string; upsertNotification: (input: AddNotificationInput & { id: string; }) => string; setNotifications: (list: Notification[]) => void; markRead: (id: string) => void; markAllRead: () => void; markSettled: (id: string) => void; remove: (id: string) => void; clear: () => void; open: () => void; close: () => void; toggle: () => void; setShowPopups: (value: boolean) => void; /** OS-level notification preference; only meaningful when `desktopPopupsConfigured`. */ showDesktopPopups: boolean; setShowDesktopPopups: (value: boolean) => void; /** True when the host app wired desktop notifications (passed `onShowDesktopPopupsChange`). */ desktopPopupsConfigured: boolean; onHistoryClick?: () => void; /** Destination for the history button's "open in a new tab" split action. */ historyHref?: string; hasMore: boolean; isLoadingMore: boolean; loadMore?: () => void; renderTile?: RenderNotificationTile; } export interface NotificationsActions { /** Called after the local reducer marks an item read; persist server-side. */ onMarkRead?: (id: string) => void | Promise; /** Called after the local reducer marks all read; persist server-side. */ onMarkAllRead?: () => void | Promise; /** Called after the local reducer removes an item; persist server-side. */ onRemove?: (id: string) => void | Promise; /** Called after the local reducer marks an item settled; optional persistence. */ onMarkSettled?: (id: string) => void | Promise; } export interface NotificationsProviderProps { children: React.ReactNode; initialNotifications?: Notification[]; maxNotifications?: number; defaultShowPopups?: boolean; onShowPopupsChange?: (value: boolean) => void; /** Desktop (OS-level) notification preference; providing `onShowDesktopPopupsChange` opts into the drawer toggle. */ defaultShowDesktopPopups?: boolean; onShowDesktopPopupsChange?: (value: boolean) => void; onHistoryClick?: () => void; /** Destination for the history button's "open in a new tab" split action. */ historyHref?: string; actions?: NotificationsActions; /** Pagination — when omitted, the drawer hides its load-more sentinel. */ hasMore?: boolean; isLoadingMore?: boolean; onLoadMore?: () => void; /** Override how individual tiles render (drawer + popups); falls back to `NotificationTile`. */ renderTile?: RenderNotificationTile; } export declare function NotificationsProvider({ children, initialNotifications, maxNotifications, defaultShowPopups, onShowPopupsChange, defaultShowDesktopPopups, onShowDesktopPopupsChange, onHistoryClick, historyHref, actions, hasMore, isLoadingMore, onLoadMore, renderTile, }: NotificationsProviderProps): React.JSX.Element; export declare function useNotifications(): NotificationsContextValue; export declare function useOptionalNotifications(): NotificationsContextValue | null; export {}; //# sourceMappingURL=notifications-context.d.ts.map