import { Ref } from 'vue'; export interface StickToBottomOptions { /** How close to the bottom still counts as "at the bottom". */ threshold?: number; } /** * Follow-the-stream policy: keep the user pinned to the bottom while they are * already there, and never yank them back once they scroll away. * * Programmatic scrolls are disambiguated from user scrolls by *position*, not * by bottom-ness: the guard remembers where the programmatic scroll was going * and releases when an event arrives at (or past) that position. Arrival must * not be judged by `atBottom` — content routinely grows between issuing the * scroll and its async event, so the event can land "not at the bottom * anymore" while being exactly the scroll we asked for; reading that as the * user walking away would silently disarm following. Any upward wheel input * still cancels everything immediately — the user always wins. */ export declare function useStickToBottom(element: Ref, options?: StickToBottomOptions): { atBottom: Ref; following: Ref; handleScroll: () => void; handleWheel: (event: WheelEvent) => void; scrollToBottom: (behavior?: ScrollBehavior) => void; tweenToBottom: (duration?: number) => Promise; followIfSticking: (glideMs?: number) => void; };