/** * Geometry snapshot for a scrollable chat viewport. */ export type ScrollGeometry = { scrollTop: number; scrollHeight: number; clientHeight: number; }; /** * The decision a scroll event implies for follow-bottom state. */ export type FollowBottomScrollDecision = { nextFollowingBottom: boolean; shouldEndLayoutPreservation: boolean; shouldScheduleSnapToBottom: boolean; }; export type DecideFollowBottomAfterScrollArgs = { atBottom: boolean; wasFollowingBottom: boolean; preservingLayout: boolean; userScrolling: boolean; previousScrollTop: number; scrollTop: number; followBottomThresholdPx: number; }; export declare const getMaxScroll: (geometry: Pick) => number; export declare const isViewportAtBottom: (geometry: ScrollGeometry, followBottomThresholdPx: number) => boolean; export declare const didMoveAwayFromBottom: ({ previousScrollTop, scrollTop, followBottomThresholdPx }: Pick) => boolean; export declare const decideFollowBottomAfterScroll: (args: DecideFollowBottomAfterScrollArgs) => FollowBottomScrollDecision;