import { type DOMElement, type DOMNode } from "./dom.js"; import { type Dimension } from "../utils/dimension.js"; /** * Interface for elements returned by the SizeObserver callback. */ export interface SizeObserverEntry { target: DOMElement; dimension: Dimension; } /** * Callback type for resize observers. */ export type SizeObserverCallback = (entries: SizeObserverEntry[], observer: SizeObserver) => void; /** * Global registry mapping DOMElements to their registered SizeObservers. */ export declare const resizeObserverRegistry: Map>; /** * Implements a SizeObserver API similar to the HTML specification. * It allows observing changes to the computed dimensions of Tinky DOM elements. */ export declare class SizeObserver { private callback; /** * Creates a new SizeObserver. * * @param callback - The function to call when observed elements resize. */ constructor(callback: SizeObserverCallback); /** * Starts observing the specified element. * * @param target - The element to observe. */ observe(target: DOMElement): void; /** * Stops observing the specified element. * * @param target - The element to stop observing. */ unobserve(target: DOMElement): void; /** * Stops observing all elements. */ disconnect(): void; /** @internal */ _invokeCallback(entries: SizeObserverEntry[]): void; } /** * Removes all resize observers from a node and its descendants. * Called during mutation cleanup to prevent stale observer entries. * * @param node - Root of the removed subtree. */ export declare const removeSizeObserversInSubtree: (node: DOMNode) => void; /** * Notifies all registered resize observers of their current dimensions. * Called by the Tinky instance after each layout computation pass. */ export declare const notifySizeObservers: () => void;