import { type VariantProps } from 'class-variance-authority';
import * as React from 'react';
declare const scrollButtonVariants: (props?: ({
    variant?: "ghost" | "primary" | "default" | null | undefined;
    size?: "sm" | "md" | "lg" | null | undefined;
    position?: "bottom-right" | "bottom-left" | "bottom-center" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface UseScrollToBottomOptions {
    /** Threshold in pixels from bottom to consider "at bottom" */
    threshold?: number;
    /** Scroll behavior */
    behavior?: ScrollBehavior;
    /** Enable auto-scroll mode: tracks whether auto-scroll should fire on content changes */
    autoScroll?: boolean;
}
export interface UseScrollToBottomReturn {
    /** Whether the user is at the bottom of the container */
    isAtBottom: boolean;
    /** Scroll to bottom function */
    scrollToBottom: (behavior?: ScrollBehavior) => void;
    /** Ref to attach to the scrollable container */
    containerRef: React.RefObject<HTMLDivElement | null>;
    /** Ref to attach to the scroll anchor element */
    anchorRef: React.RefObject<HTMLDivElement | null>;
    /** Whether auto-scroll should fire (only meaningful when autoScroll option is true) */
    shouldAutoScroll: boolean;
    /** Call when user scrolls manually to disable auto-scroll (re-enables when user scrolls back to bottom) */
    handleUserScroll: () => void;
    /** Trigger an auto-scroll if shouldAutoScroll is true (uses requestAnimationFrame) */
    triggerAutoScroll: () => void;
}
export declare function useScrollToBottom({ threshold, behavior, autoScroll: autoScrollEnabled, }?: UseScrollToBottomOptions): UseScrollToBottomReturn;
export interface AIScrollButtonProps extends VariantProps<typeof scrollButtonVariants> {
    /** Target scroll element ref */
    scrollRef?: React.RefObject<HTMLElement | null>;
    /** Scrollable container ref */
    containerRef?: React.RefObject<HTMLElement | null>;
    /** Threshold in pixels from bottom to show button */
    threshold?: number;
    /** Click handler (defaults to scrolling to bottom) */
    onClick?: () => void;
    /** Whether to show the button (controlled) */
    visible?: boolean;
    /** Label for accessibility */
    label?: string;
    /** Show unread count badge */
    unreadCount?: number;
    /** Additional class name */
    className?: string;
}
declare function AIScrollButton({ scrollRef, containerRef, threshold, onClick, visible: controlledVisible, variant, size, position, label, unreadCount, className, }: AIScrollButtonProps): import("react/jsx-runtime").JSX.Element;
declare namespace AIScrollButton {
    var displayName: string;
}
export interface AIScrollAnchorProps {
    /** Ref to expose for scrolling */
    ref?: React.Ref<HTMLDivElement>;
    /** Additional class name */
    className?: string;
}
declare const AIScrollAnchor: React.ForwardRefExoticComponent<Omit<AIScrollAnchorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
export { AIScrollAnchor, AIScrollButton, scrollButtonVariants };
