export type NotificationPermissionStatus = NotificationPermission | "unsupported"; export interface UseNotificationsOptions { /** * If true, automatically prompts for notification permission on mount if current permission is "default". * Note: Some modern browsers may block automatic requests without a user gesture. * @default true */ autoRequest?: boolean; } export interface UseNotificationsReturn { permission: NotificationPermissionStatus; isSupported: boolean; error: string | null; requestPermission: () => Promise; sendNotification: (title: string, options?: NotificationOptions) => Notification | null; closeAllNotifications: () => void; recheckPermission: () => NotificationPermissionStatus; } /** * Requests browser notification permission and sends local OS notifications. * Notifications work only on localhost or a secure HTTPS origin. * * @param options - Configuration object, supports `autoRequest` (defaults to true). * @returns Object containing permission state and methods to trigger or manage notifications. * * @example * ```tsx * const { sendNotification, requestPermission, permission } = useNotifications({ autoRequest: false }); * * const handleNotify = () => { * if (permission === "granted") { * sendNotification("Hello World!", { body: "This is a local notification" }); * } else { * requestPermission(); * } * }; * ``` */ export declare function useNotifications(options?: UseNotificationsOptions): UseNotificationsReturn; export default useNotifications;