/** * @param {IntersectionObserverInit["threshold"]} left * @param {IntersectionObserverInit["threshold"]} right */ export function thresholdsMatch(left: IntersectionObserverInit["threshold"], right: IntersectionObserverInit["threshold"]): boolean; /** * @typedef {{ observer: IntersectionObserver, isConnected: boolean, release: () => void }} ManagedObserver */ /** * Observe a target with a shared observer. * * @param {HTMLElement} target * @param {IntersectionObserverCallback} callback * @param {IntersectionObserverInit} options * @returns {ManagedObserver} */ export function createManagedObserver(target: HTMLElement, callback: IntersectionObserverCallback, options: IntersectionObserverInit): ManagedObserver; /** * Disconnect a standalone observer or release one action subscription. * * @param {IntersectionObserver | ManagedObserver | null | undefined} observer * @param {{ isConnected: boolean }} state */ export function disconnectObserver(observer: IntersectionObserver | ManagedObserver | null | undefined, state: { isConnected: boolean; }): void; export type ManagedObserver = { observer: IntersectionObserver; isConnected: boolean; release: () => void; };