import type { Ref } from 'vue'; interface ScrollMetrics { scrollTop: number; scrollHeight: number; clientHeight: number; } interface ScrollSnapshot { scrollTop: number; scrollHeight: number; } /** * Only the user changes the pinned state: moving up detaches, moving down into * the bottom zone reattaches. Layout changes that shift the bottom under a * stationary viewport leave the state untouched. A position drop that comes * with a shorter document is the browser clamping after content shrank, not the * user reading upwards, so it keeps whatever state was in place. */ export declare function resolvePinnedAfterScroll(pinned: boolean, previous: ScrollSnapshot, { scrollTop, scrollHeight, clientHeight }: ScrollMetrics, threshold: number): boolean; export declare function useStickToBottom(scrollRoot: Ref, contentRoot: Ref): { bottomPinned: Ref; hasRoomBelow: Ref; detach: () => void; scheduleScrollToBottom: () => void; scrollToBottom: (options?: { smooth?: boolean; }) => void; }; export {};