/**
 * Reactive notification controller
 */
export declare function useNotification(): NotificationRef;
/**
 * Simple notification helper
 */
export declare function notify(title: string, options?: NotificationOptions): Promise<Notification | null>;
/**
 * Check if notifications are supported and permitted
 */
export declare function canNotify(): boolean;
/**
 * Request notification permission
 */
export declare function requestNotificationPermission(): Promise<NotificationPermission>;
/**
 * Show notification with common patterns
 * @defaultValue
 * ```ts
 * {
 *   success: (message: string, options?: NotificationOptions) => unknown,
 *   error: (message: string, options?: NotificationOptions) => unknown,
 *   warning: (message: string, options?: NotificationOptions) => unknown,
 *   info: (message: string, options?: NotificationOptions) => unknown
 * }
 * ```
 */
export declare const notifications: {
  /** Success notification */
  success: (message: string, options?: NotificationOptions) => unknown;
  /** Error notification */
  error: (message: string, options?: NotificationOptions) => unknown;
  /** Warning notification */
  warning: (message: string, options?: NotificationOptions) => unknown;
  /** Info notification */
  info: (message: string, options?: NotificationOptions) => unknown
};
export declare interface NotificationState {
  permission: NotificationPermission
  isSupported: boolean
}
export declare interface NotificationOptions {
  body?: string
  icon?: string
  badge?: string
  image?: string
  tag?: string
  requireInteraction?: boolean
  renotify?: boolean
  silent?: boolean
  vibrate?: number | number[]
  data?: unknown
  autoClose?: number
  dir?: 'auto' | 'ltr' | 'rtl'
  lang?: string
  actions?: NotificationAction[]
  timestamp?: number
}
export declare interface NotificationAction {
  action: string
  title: string
  icon?: string
}
export declare interface NotificationRef {
  get: () => NotificationState
  subscribe: (fn: (state: NotificationState) => void) => () => void
  isSupported: () => boolean
  permission: () => NotificationPermission
  requestPermission: () => Promise<NotificationPermission>
  show: (title: string, options?: NotificationOptions) => Notification | null
  close: (tag: string) => void
}
/**
 * useNotification - Web Notifications API wrapper
 *
 * Display native browser notifications with reactive permission state.
 *
 * @example
 * ```ts
 * const { permission, isSupported, show, requestPermission } = useNotification()
 *
 * // Request permission
 * await requestPermission()
 *
 * // Show notification
 * const notification = show('Hello!', {
 *   body: 'This is a notification',
 *   icon: '/icon.png',
 * })
 *
 * // Handle click
 * notification?.addEventListener('click', () => {
 *   window.focus()
 * })
 * ```
 */
export type NotificationPermission = 'default' | 'granted' | 'denied';
