declare type ResizeObserverCallback = (entries: any[], observer: ResizeObserver) => void;
declare class ResizeObserver {
    constructor(callback: ResizeObserverCallback);
    observe(target: Element, options?: any): void;
    unobserve(target: Element): void;
    disconnect(): void;
    static toString(): string;
}
export interface RectReadOnly {
    readonly x: number;
    readonly y: number;
    readonly width: number;
    readonly height: number;
    readonly top: number;
    readonly right: number;
    readonly bottom: number;
    readonly left: number;
    [key: string]: number;
}
type HTMLOrSVGElement = HTMLElement | SVGElement;
type Result = [
    (element: HTMLOrSVGElement | null) => void,
    RectReadOnly,
    () => void
];
export interface Options {
    debounce?: number | {
        scroll: number;
        resize: number;
    };
    scroll?: boolean;
    polyfill?: new (cb: ResizeObserverCallback) => ResizeObserver;
    offsetSize?: boolean;
}
declare function useMeasure({ debounce, scroll, polyfill, offsetSize }?: Options): Result;
export default useMeasure;
