export interface ChatScrollToBottomOptions {
    /**
     * `'instant'` jumps to the bottom in a single frame instead of running
     * the spring animation. Use for programmatic positioning (opening a
     * conversation, restoring a session) — keep the default `'spring'` for
     * user-initiated scrolls like the scroll-to-bottom button. Mirrors the
     * DOM's `scrollTo({behavior})`. When the user prefers reduced motion,
     * `'spring'` also jumps instantly.
     * @default 'spring'
     */
    behavior?: 'instant' | 'spring';
}
export interface UseChatStreamScrollOptions {
    /**
     * Ref to the scrollable container element.
     */
    scrollRef: React.RefObject<HTMLElement | null>;
    /**
     * Whether scroll behavior is enabled.
     * @default true
     */
    enabled?: boolean;
    /**
     * Distance from bottom (in px) within which scrollend re-locks.
     * Keep small so users aren't yanked back from a slight scroll.
     * @default 10
     */
    lockThreshold?: number;
    /**
     * Distance from bottom (in px) beyond which the scroll-to-bottom
     * button becomes visible.
     * @default 100
     */
    buttonThreshold?: number;
    /**
     * Spring damping — how quickly the animation settles.
     * @default 0.7
     */
    damping?: number;
    /**
     * Spring stiffness — how fast the animation accelerates.
     * @default 0.05
     */
    stiffness?: number;
    /**
     * Spring mass — higher = slower animation.
     * @default 1.25
     */
    mass?: number;
}
export interface UseChatStreamScrollReturn {
    /** Whether the user has scrolled up past buttonThreshold. */
    isScrolledUp: boolean;
    /** Whether auto-scroll is locked (following content). */
    isLocked: boolean;
    /** Scroll to the bottom of the container and re-lock. */
    scrollToBottom: (options?: ChatScrollToBottomOptions) => void;
    /** Scroll so a specific element is at the top of the visible area. No lock change. */
    scrollToMessage: (el: HTMLElement) => void;
    /** Lock auto-scroll and scroll to bottom. */
    lock: () => void;
    /** Unlock auto-scroll. */
    unlock: () => void;
    /** Scroll to bottom if currently locked. Call on content resize. */
    scrollIfLocked: () => void;
    /** Scroll to the last message in the container. */
    scrollToLastMessage: () => void;
}
export declare function useChatStreamScroll({ scrollRef, enabled, lockThreshold, buttonThreshold, damping, stiffness, mass, }: UseChatStreamScrollOptions): UseChatStreamScrollReturn;
//# sourceMappingURL=useChatStreamScroll.d.ts.map