/** Apply el.addEventListener and return el.removeEventListener function; use passive:true by default;
 * @tutorial Troubleshooting
 * * don't change argument `options` after the function call otherwise removineListener can be skipped */
export default function onEvent<T extends keyof E, K extends HTMLElement | Document, E extends (HTMLElementEventMap & Record<keyof E, Event>) | Record<string, Event> = HTMLElementEventMap>(element: K, type: T, listener: (this: K, e: E[T] & {
    target: EventTarget;
    currentTarget: EventTarget;
}) => any, options?: boolean | AddEventListenerOptions): () => void;
export type onEventType<T extends keyof E, K extends HTMLElement | Document, E extends HTMLElementEventMap & Record<keyof E, Event> = HTMLElementEventMap> = (el: K, type: T, listener: (this: K, e: E[T] & {
    target: EventTarget;
    currentTarget: EventTarget;
}) => any, options?: boolean | AddEventListenerOptions) => () => void;
