/** * @fileoverview Type-safe addEventListener with automatic cleanup. * @author Saasflareâ„¢ * @module packages/ui/hooks/use-event-listener * @package ui * * @example * // Window event * useEventListener('resize', handleResize); * * // Element event * useEventListener('click', handleClick, buttonRef); * * // Document event * useEventListener('visibilitychange', handleVisibility, { current: document }); */ import { type RefObject } from 'react'; /** * Attaches an event listener to a target element with automatic cleanup. * * @param {string} eventName - The event to listen for * @param {Function} handler - Event handler callback * @param {RefObject | undefined} element - Target element ref (defaults to window) * @param {AddEventListenerOptions} [options] - addEventListener options * * @example * const ref = useRef(null); * useEventListener('scroll', (e) => console.log(e), ref, { passive: true }); */ export declare function useEventListener(eventName: K, handler: (event: WindowEventMap[K]) => void, element?: undefined, options?: boolean | AddEventListenerOptions): void; export declare function useEventListener(eventName: K, handler: (event: HTMLElementEventMap[K]) => void, element: RefObject, options?: boolean | AddEventListenerOptions): void; export declare function useEventListener(eventName: K, handler: (event: DocumentEventMap[K]) => void, element: RefObject, options?: boolean | AddEventListenerOptions): void;