import type { AnyFunction, EventListenerId } from '../ts-types';
import type { EventTarget as CustomEventTarget } from './EventTarget';
type EventHandlerTarget = EventTarget | CustomEventTarget;
type Listener = AnyFunction;
export type ResizeObserverCallBack = ({ width, height, windowSizeNotChange }: {
    width: number;
    height: number;
    windowSizeNotChange: boolean;
}) => void;
export declare class ResizeObserver {
    resizeTime: number;
    element: HTMLElement;
    cb: ResizeObserverCallBack;
    observer?: MutationObserver;
    lastSize: {
        width: number;
        height: number;
    };
    callBackDebounce: () => void;
    constructor(element: HTMLElement, cb: ResizeObserverCallBack, resizeTime?: number);
    mutationResize: () => void;
    disConnect(): void;
    callBack: () => void;
    setSize(size: {
        width: number;
        height: number;
    }): void;
    private onResize;
    private checkSize;
    getSize(): {
        width: number;
        height: number;
    };
}
export declare class EventHandler {
    resizeTime?: number;
    private listeners;
    private reseizeListeners;
    on(target: HTMLElement | Window | EventHandlerTarget, type: string, listener: Listener, ...options: any[]): EventListenerId;
    once(target: EventHandlerTarget, type: string, listener: Listener, ...options: (boolean | AddEventListenerOptions)[]): EventListenerId;
    off(id: EventListenerId | null | undefined): void;
    fire(target: EventTarget, type: string, ...args: any[]): void;
    hasListener(target: EventTarget, type: string): boolean;
    clear(): void;
    release(): void;
}
export {};
