/**
 * Walk the DOM tree starting from `node`'s parent and return the first
 * ancestor whose computed `overflow*` allows scrolling. Falls back to the
 * document's scrolling element (typically `<html>`) when no ancestor scrolls.
 *
 * @param node - The element whose scroll parent should be resolved.
 * @returns The first scrollable ancestor, or the document scrolling element.
 */
export declare function getScrollParent(node: Node): Element | undefined;
/**
 * Resolve the scroll-parent target used by the scroller's pageMode paths.
 *
 * Combines the auto-detection of `getScrollParent` with an optional explicit
 * override and normalizes html/body to `window`, so callers get a single
 * "target" they can listen on AND measure against (geometry math reads the
 * returned target's rect; for `window` it uses `innerHeight/innerWidth`).
 *
 * @param node - The scroller's root element. Used as the start of the DOM
 *   walk when no override is provided.
 * @param override - Optional explicit scroll-parent. Accepts either an
 *   `HTMLElement` or `Window`. When `undefined`, falls back to auto-detection.
 * @returns A `Window` or `HTMLElement` to listen on and measure against.
 *   Returns `undefined` only when `node` is not a host element AND no
 *   override was supplied — callers should fall back to `window` in that
 *   case (matches the legacy behavior in `useRecycleScroller`).
 */
export declare function resolveScrollParent(node: Node | undefined, override?: HTMLElement | Window): Window | HTMLElement | undefined;
