import { Observable } from '@legendapp/state'; import { DeepMaybeObservable } from '@usels/core'; import { MaybeEventTarget } from '../../types.mjs'; import { ConfigurableWindow } from '../../shared/configurable.mjs'; interface UseScrollOptions extends ConfigurableWindow { throttle?: number; idle?: number; onScroll?: (e: Event) => void; onStop?: () => void; onError?: (error: unknown) => void; offset?: { left?: number; right?: number; top?: number; bottom?: number; }; behavior?: ScrollBehavior; eventListenerOptions?: AddEventListenerOptions; } interface ArrivedState { left: boolean; right: boolean; top: boolean; bottom: boolean; } interface ScrollDirections { left: boolean; right: boolean; top: boolean; bottom: boolean; } interface UseScrollReturn { x$: Observable; y$: Observable; isScrolling$: Observable; arrivedState$: Observable; directions$: Observable; measure: () => void; } /** * Framework-agnostic reactive scroll tracker. Monitors `scroll` events on the * target (Element, Document, Window, Ref$, or Observable) and * exposes reactive position, direction, arrived-state, and scrolling status. */ declare function createScroll(element: MaybeEventTarget, options?: DeepMaybeObservable): UseScrollReturn; export { type ArrivedState, type ScrollDirections, type UseScrollOptions, type UseScrollReturn, createScroll };