import { type HookErrorHandler } from '../utils/errors.js'; /** A ref-like object whose current value is an element. @public */ export type ResizeObserverRefTarget = { readonly current: Element | null; }; /** A direct element, ref-like target, or an empty target. @public */ export type ResizeObserverTarget = Element | ResizeObserverRefTarget | null | undefined; /** Options for {@link useResizeObserver}. @public */ export interface UseResizeObserverOptions { /** Optional target when using the object-form overload. */ readonly target?: ResizeObserverTarget; /** Alias for `target`, useful when passing a React ref. */ readonly ref?: ResizeObserverTarget; /** Which box the native observer measures. */ readonly box?: ResizeObserverOptions['box']; /** Disables observation and restores the empty snapshot. */ readonly enabled?: boolean; /** Called with the latest native resize entry. */ readonly onChange?: (entry: ResizeObserverEntry) => void; /** Observes setup and callback failures before the original error escapes. */ readonly onError?: HookErrorHandler; } /** State returned by {@link useResizeObserver}. @public */ export interface ResizeObserverState { /** The latest content rectangle, or `null` before the first notification. */ readonly rect: DOMRectReadOnly | null; /** Width of the latest rectangle in CSS pixels. */ readonly width: number; /** Height of the latest rectangle in CSS pixels. */ readonly height: number; /** The most recent setup or callback error, if any. */ readonly error: unknown; } /** * Observes one element with the browser ResizeObserver API. The hook follows * ref targets across committed renders, keeps the latest callback, and * returns a deterministic empty snapshot during SSR or when the API is * unavailable. * * @public */ export declare function useResizeObserver(options?: UseResizeObserverOptions): ResizeObserverState; /** @public */ export declare function useResizeObserver(target: ResizeObserverTarget, options?: Omit): ResizeObserverState;