export declare const SCROLL_BOTTOM_THRESHOLD = 48; export declare const SCROLL_SETTLE_MS = 160; export type ScrollableElement = { scrollTop: number; readonly scrollHeight: number; readonly clientHeight: number; addEventListener?: (type: string, listener: () => void, options?: { passive?: boolean; }) => void; removeEventListener?: (type: string, listener: () => void) => void; }; export type ScrollControllerDeps = { container: () => ScrollableElement | undefined | null; raf?: (callback: () => void) => void; setTimer?: (callback: () => void, ms: number) => unknown; clearTimer?: (handle: unknown) => void; }; export type ScrollController = { scrollToBottom: (force?: boolean) => void; observe: (element: ScrollableElement) => () => void; sync: () => void; hasUserScrolledUp: () => boolean; dispose: () => void; }; export declare function isNearBottom(container: ScrollableElement | undefined | null): boolean; export declare function createScrollController(deps: ScrollControllerDeps): ScrollController;