/** * @license MIT * @module @whoj/utils-vue@2.4.0 * @copyright (c) 2026 Jonson B. */ import { Arrayable, Func } from '@whoj/utils-types'; import { ComputedRefable } from './refOf.mjs'; interface InferEventTarget { addEventListener: (event: Events, fn?: any, options?: any) => any; removeEventListener: (event: Events, fn?: any, options?: any) => any; } interface BasicEventListener { (evt: E): void; } /** * Register using addEventListener on mounted, and removeEventListener automatically on unmounted. * @param event * @param listener * @param options * * @__NO_SIDE_EFFECTS__ */ declare function listenEvent(event: Arrayable, listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => any>, options?: boolean | AddEventListenerOptions): Func; declare function listenEvent(target: Window, event: Arrayable, listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => any>, options?: boolean | AddEventListenerOptions): Func; declare function listenEvent(target: Document, event: Arrayable, listener: Arrayable<(this: Document, ev: DocumentEventMap[E]) => any>, options?: boolean | AddEventListenerOptions): Func; declare function listenEvent(target: InferEventTarget, event: Arrayable, listener: Arrayable>, options?: boolean | AddEventListenerOptions): Func; declare function listenEvent(target: ComputedRefable, event: Arrayable, listener: Arrayable>, options?: boolean | AddEventListenerOptions): Func; export { listenEvent };