import type { UIMessage } from "ai"; export declare function useMessageWindow(messages: UIMessage[], listRef: React.RefObject, threadKey?: string): { windowed: UIMessage[]; hasOlder: boolean; olderCount: number; loadOlder: () => void; onNearTop: () => void; }; /** Scroll management for the message list. Stick-to-bottom: while the reader is at the end, every content change (history load, streamed deltas, tool chips, approvals) keeps the latest content in view. The moment the reader scrolls up, the stick releases — streaming must never yank them — and it re-arms when they return to the bottom on their own. Jump-to-latest: when new content lands while the reader is scrolled up, the .fl-newbar pill appears; activating it scrolls smoothly to the latest turn and re-sticks. */ export declare function useStickToBottom(messages: UIMessage[], threadKey?: string, contentRevision?: unknown): { listRef: import("react").RefObject; onScroll: () => void; endJump: () => void; jumpToLatest: () => void; showJump: boolean; unseenCount: number; snippet: string; };