import { Point } from '../geometry/Point.js';
export type DomEventOf<K extends string> = K extends `${infer A} ${infer B}` ? DomEventOf<A> | DomEventOf<B> : K extends keyof HTMLElementEventMap ? HTMLElementEventMap[K] : Event;
export type DomEventListener<K extends string> = (e: DomEventOf<K>) => void;
export type DomEventListenerMap = {
    [K in keyof HTMLElementEventMap]?: (e: HTMLElementEventMap[K]) => void;
} & {
    [type: string]: (e: any) => void;
};
export declare function on<K extends string>(el: EventTarget, types: K, fn: DomEventListener<K>, context?: unknown): void;
export declare function on(el: EventTarget, eventMap: DomEventListenerMap, context?: unknown): void;
export declare function off<K extends string>(el: EventTarget, types: K, fn: DomEventListener<K>, context?: unknown): void;
export declare function off(el: EventTarget, eventMap: DomEventListenerMap, context?: unknown): void;
export declare function off(el: EventTarget, types: string): void;
export declare function off(el: EventTarget): void;
/**
 * Stop the given event from propagation to parent elements. Used inside the listener functions:
 * ```js
 * DomEvent.on(div, 'click', DomEvent.stopPropagation);
 * ```
 * Given a Leaflet event, it stops the map from handling the original DOM event.
 * @param {Event | {originalEvent: Event}} e
 */
export declare function stopPropagation(e: Event | {
    originalEvent: Event;
}): void;
/**
 * Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).
 * @param {HTMLElement} el
 */
export declare function disableScrollPropagation(el: HTMLElement): void;
/**
 * Adds `stopPropagation` to the element's `'dblclick'`, `'contextmenu'` and `'pointerdown'`
 * events (plus browser variants). For `'click'` events, prevents the map from handling the
 * click while still allowing the native DOM click event to propagate normally.
 * @param {HTMLElement} el
 */
export declare function disableClickPropagation(el: HTMLElement): void;
/**
 * Prevents the default action of the DOM Event `e` from happening (such as following
 * a link in the href of the a element, or doing a POST request with page reload
 * when a `<form>` is submitted). Use it inside listener functions.
 * @param {Event} e
 */
export declare function preventDefault(e: Event): void;
/**
 * Does `stopPropagation` and `preventDefault` at the same time. Given a Leaflet event, it only stops propagation:
 * the default action of the original DOM event still happens.
 * @param {Event | {originalEvent: Event}} e
 */
export declare function stop(e: Event | {
    originalEvent: Event;
}): void;
/**
 * Gets normalized pointer position from a DOM event relative to the `container`
 * (border excluded) or to the whole page if not specified.
 * @param {MouseEvent} e
 * @param {HTMLElement} [container]
 */
export declare function getPointerPosition(e: MouseEvent, container?: HTMLElement): Point;
/**
 * Gets normalized wheel delta from a wheel DOM event, in vertical pixels scrolled (negative if scrolling down).
 * Events from pointing devices without precise scrolling are mapped to a best guess of 60 pixels.
 * @param {WheelEvent} e
 */
export declare function getWheelDelta(e: WheelEvent): number;
