type ScrollerVirtualizer = { setScrollOffset: (offset: number) => void; getOffsetForIndex: (index: number) => number; getSizeForIndex: (index: number) => number; }; export type JsScrollerConfig = { /** The shared virtualizer to drive. */ virtualizer: ScrollerVirtualizer; /** Full scrollable content height (px). */ totalSize: () => number; /** Visible viewport height (px). */ viewport: () => number; /** Row height used to convert line-mode wheel deltas to px. */ lineStep: () => number; }; export declare function createJsScroller(cfg: JsScrollerConfig): { readonly scrollOffset: number; readonly maxOffset: number; readonly thumbH: number; readonly thumbTop: number; readonly dragging: boolean; scrollTo: (offset: number) => void; scrollByPx: (delta: number) => void; ensureVisible: (top: number, h: number) => void; ensureIndexVisible: (index: number) => void; onWheel: (e: WheelEvent) => void; onThumbDown: (e: PointerEvent) => void; onThumbMove: (e: PointerEvent) => void; onThumbUp: (e: PointerEvent) => void; onTrackDown: (e: PointerEvent) => void; onContentDown: (e: PointerEvent) => void; onContentMove: (e: PointerEvent) => void; onContentUp: (e: PointerEvent) => void; }; export {};