declare type EventTargetOrMore = EventTarget | NodeList | [Node];
export interface OnEvent<T = any | undefined> extends Event {
    selectTarget: HTMLElement;
    detail: T;
}
export declare type OnEventListener = (evt: Event & OnEvent) => void;
export declare type OnListenerBySelector = {
    [selector: string]: OnEventListener;
};
export interface OnEventOptions {
    ctx?: object;
    ns?: string;
    capture?: boolean;
    passive?: boolean;
}
interface OffOptions {
    ns?: string;
}
export declare function addOnEvents(target: OnListenerBySelector | undefined, source: OnListenerBySelector): OnListenerBySelector;
export declare function on<K extends keyof HTMLElementEventMap>(els: EventTargetOrMore | null, type: K, listener: (this: HTMLElement, ev: {
    selectTarget: HTMLElement;
} & HTMLElementEventMap[K]) => void, opts?: OnEventOptions): void;
export declare function on(els: EventTargetOrMore | null, types: string, listener: OnEventListener, opts?: OnEventOptions): void;
export declare function on<K extends keyof HTMLElementEventMap>(els: EventTargetOrMore | null, type: K, selector: string | null, listener: (this: HTMLElement, ev: {
    selectTarget: HTMLElement;
} & HTMLElementEventMap[K]) => void, opts?: OnEventOptions): void;
export declare function on(els: EventTargetOrMore | null, types: string, selector: string | null, listener: OnEventListener, opts?: OnEventOptions): void;
export declare function off(els: EventTargetOrMore | null): void;
export declare function off(els: EventTargetOrMore | null, type: string): void;
export declare function off(els: EventTargetOrMore | null, type: string, selector: string): void;
export declare function off(els: EventTargetOrMore | null, type: string, listener?: OnEventListener): void;
export declare function off(els: EventTargetOrMore | null, type: string, selector: string, listener?: OnEventListener): void;
export declare function off(els: EventTargetOrMore | null, opts?: OffOptions): void;
export declare function trigger(els: EventTargetOrMore | null | undefined, type: string, evtInit?: CustomEventInit): void;
export declare function bindOnEvents(el: EventTarget, eventDics: OnListenerBySelector | OnListenerBySelector[], opts: OnEventOptions): void;
export declare function bindOnEvent(el: EventTarget, typeAndSelector: string, fn: OnEventListener, opts: OnEventOptions): void;
export {};
