/** An in-app inbox item. */ declare interface InboxItem { readonly id: string; readonly subjectId: string; readonly category: string; readonly title: string; readonly body: string; readonly data: Record; readonly readAt: string | null; /** When the user cleared it out of the inbox. A different state from read. */ readonly archivedAt: string | null; readonly createdAt: string; readonly tenantId: string | null; } /** The caller's in-app inbox. (Plugin query route — re-reads on reconnect; for * a fully live feed, mirror the inbox into a `source`-backed app query.) */ export declare const useInbox: (opts?: { unreadOnly?: boolean; limit?: number; }, apiName?: string) => ReadonlyArray; /** Mark-read action. */ export declare const useMarkRead: (apiName?: string) => (id: string) => Promise; /** Set / clear the caller's quiet-hours (DND) window. Minutes are minutes past * local midnight in `tz` (default UTC); `policy` is `hold` (default) or `drop`. */ export declare const useQuietHours: (apiName?: string) => { set: (startMinute: number, endMinute: number, opts?: { tz?: string; policy?: "hold" | "drop"; }) => Promise; clear: () => Promise; }; /** Toggle a channel preference for a category. */ export declare const useSetNotificationPreference: (apiName?: string) => (category: string, channel: string, enabled: boolean) => Promise; /** Subscribe / unsubscribe the caller to a broadcast topic. */ export declare const useTopicSubscription: (apiName?: string) => { subscribe: (topic: string) => Promise; unsubscribe: (topic: string) => Promise; }; /** The caller's unread count. */ export declare const useUnreadCount: (apiName?: string) => number; /** * Permission flow + service-worker registration + subscribe/unsubscribe for * the web-push channel. The service worker file is the app's to serve — * copy `@voltro/plugin-notifications/sw.js` into `public/` (its scope decides * which pages the worker controls; serving it from the root covers the app). * Requires HTTPS (or localhost) — a push subscription is refused elsewhere. */ export declare const useWebPush: (opts?: { swUrl?: string; apiName?: string; }) => WebPushState; export declare interface WebPushState { /** `unsupported` — no service worker / PushManager (or iOS Safari outside an * installed PWA). `denied` — the user refused notification permission. * `subscribed` reflects THIS browser's registration. */ readonly status: 'unsupported' | 'denied' | 'idle' | 'working' | 'subscribed' | 'error'; readonly error?: string; readonly subscribe: () => Promise; readonly unsubscribe: () => Promise; } export { }