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;