import { SizeRect } from "./types";
export interface ResizeWatherOptions {
    resizeDebounce?: number;
    maxResizeDebounce?: number;
    useResizeObserver?: boolean;
    useWindowResize?: boolean;
    watchDirection?: "width" | "height" | "box" | false;
    rectBox?: "border-box" | "content-box";
    childrenRectBox?: "border-box" | "content-box";
}
export interface ResizeWatcherResizeEvent {
    isResizeContainer: boolean;
    childEntries: ResizeWatcherEntry[];
}
export interface ResizeWatcherEntry {
    target: Element;
    size?: {
        inlineSize: number;
        blockSize: number;
    };
}
export declare class ResizeWatcher {
    private _resizeTimer;
    private _maxResizeDebounceTimer;
    private _emitter;
    private _observer;
    protected container: HTMLElement;
    protected rect: SizeRect;
    private _options;
    private _updatedEntries;
    constructor(container: HTMLElement | string, options?: ResizeWatherOptions);
    getRect(): SizeRect;
    setRect(rect: SizeRect): void;
    isObserverEnabled(): boolean;
    resize(): void;
    observeChildren(children: Element[]): void;
    unobserveChildren(children: Element[]): void;
    listen(callback: (e: ResizeWatcherResizeEvent) => void): this;
    destroy(): void;
    private _init;
    private _onWindowResize;
    private _onObserve;
    private _scheduleResize;
    private _onResize;
}
