import { MutableRefObject } from 'react';
import type { BubbleImperativeHandle, BubbleMetaData, BubbleProps, MessageBubbleData } from '../type';
import React from 'react';
export interface PureBubbleListProps {
    bubbleList: MessageBubbleData[];
    readonly?: boolean;
    bubbleListRef?: MutableRefObject<HTMLDivElement | null>;
    bubbleRef?: MutableRefObject<BubbleImperativeHandle | null | undefined>;
    isLoading?: boolean;
    className?: string;
    bubbleRenderConfig?: BubbleProps['bubbleRenderConfig'];
    style?: React.CSSProperties;
    userMeta?: BubbleMetaData;
    assistantMeta?: BubbleMetaData;
    styles?: BubbleProps['styles'];
    classNames?: BubbleProps['classNames'];
    markdownRenderConfig?: BubbleProps['markdownRenderConfig'];
    docListProps?: BubbleProps['docListProps'];
    /**
     * @deprecated @since 2.29.0 请使用 onDislike 替代（符合命名规范）
     */
    onDisLike?: BubbleProps['onDisLike'];
    /** 不喜欢回调 */
    onDislike?: BubbleProps['onDislike'];
    onLike?: BubbleProps['onLike'];
    /**
     * @deprecated @since 2.29.0 请使用 onLikeCancel 替代（符合命名规范）
     */
    onCancelLike?: BubbleProps['onCancelLike'];
    /** Like 子组件取消事件 */
    onLikeCancel?: BubbleProps['onLikeCancel'];
    onReply?: BubbleProps['onReply'];
    onAvatarClick?: BubbleProps['onAvatarClick'];
    onDoubleClick?: BubbleProps['onDoubleClick'];
    shouldShowCopy?: BubbleProps['shouldShowCopy'];
    shouldShowVoice?: BubbleProps['shouldShowVoice'];
    onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
    onWheel?: (event: React.WheelEvent<HTMLDivElement>, bubbleListRef: HTMLDivElement | null) => void;
    onTouchMove?: (event: React.TouchEvent<HTMLDivElement>, bubbleListRef: HTMLDivElement | null) => void;
    /**
     * 懒加载配置
     * @description 启用后，只有进入视口的气泡才会被渲染，提升长列表性能
     */
    lazy?: {
        /**
         * 是否启用懒加载
         */
        enable: boolean;
        /**
         * 占位符高度（单位：px），默认 100px
         */
        placeholderHeight?: number;
        /**
         * 提前加载距离，默认 '200px'
         * @description 元素距离视口多远时开始加载
         */
        rootMargin?: string;
        /**
         * 自定义占位符渲染函数
         */
        renderPlaceholder?: (props: {
            height: number;
            style: React.CSSProperties;
            isIntersecting: boolean;
            elementInfo?: {
                type: string;
                index: number;
                total: number;
                role?: 'user' | 'assistant';
            };
        }) => React.ReactNode;
        /**
         * 判断是否应该对指定索引的消息启用懒加载
         * @description 返回 false 时，该消息将不启用懒加载，优先渲染
         * @param index 消息索引
         * @param total 消息总数
         * @returns 是否启用懒加载
         */
        shouldLazyLoad?: (index: number, total: number) => boolean;
    };
}
export declare const PureBubbleList: React.NamedExoticComponent<PureBubbleListProps>;
export default PureBubbleList;
