import * as React from 'react';
import BaseComponent from '../_base/baseComponent';
import PropTypes from 'prop-types';
import type { ChatProps, ChatState } from './interface';
import '@douyinfe/semi-foundation/lib/cjs/chat/chat.css';
import ChatFoundation, { ChatAdapter } from '@douyinfe/semi-foundation/lib/cjs/chat/foundation';
import type { FileItem } from '../upload';
import { Upload } from '../index';
declare class Chat extends BaseComponent<ChatProps, ChatState> {
    static __SemiComponentName__: string;
    dragStatus: boolean;
    containerRef: React.RefObject<HTMLDivElement>;
    animation: any;
    wheelEventHandler: any;
    foundation: ChatFoundation;
    uploadRef: React.RefObject<Upload>;
    dropAreaRef: React.RefObject<HTMLDivElement>;
    scrollTargetRef: React.RefObject<HTMLElement>;
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        roleConfig: PropTypes.Requireable<object>;
        chats: PropTypes.Requireable<any[]>;
        hints: PropTypes.Requireable<any[]>;
        renderHintBox: PropTypes.Requireable<(...args: any[]) => any>;
        onChatsChange: PropTypes.Requireable<(...args: any[]) => any>;
        align: PropTypes.Requireable<string>;
        chatBoxRenderConfig: PropTypes.Requireable<object>;
        customMarkDownComponents: PropTypes.Requireable<object>;
        onClear: PropTypes.Requireable<(...args: any[]) => any>;
        onMessageDelete: PropTypes.Requireable<(...args: any[]) => any>;
        onMessageReset: PropTypes.Requireable<(...args: any[]) => any>;
        onMessageCopy: PropTypes.Requireable<(...args: any[]) => any>;
        onMessageGoodFeedback: PropTypes.Requireable<(...args: any[]) => any>;
        onMessageBadFeedback: PropTypes.Requireable<(...args: any[]) => any>;
        inputContentConvert: PropTypes.Requireable<(...args: any[]) => any>;
        onMessageSend: PropTypes.Requireable<(...args: any[]) => any>;
        InputBoxStyle: PropTypes.Requireable<object>;
        inputBoxCls: PropTypes.Requireable<string>;
        renderFullInputBox: PropTypes.Requireable<(...args: any[]) => any>;
        placeholder: PropTypes.Requireable<string>;
        topSlot: PropTypes.Requireable<PropTypes.ReactNodeLike> | PropTypes.Requireable<any[]>;
        bottomSlot: PropTypes.Requireable<PropTypes.ReactNodeLike> | PropTypes.Requireable<any[]>;
        showStopGenerate: PropTypes.Requireable<boolean>;
        showClearContext: PropTypes.Requireable<boolean>;
        hintStyle: PropTypes.Requireable<object>;
        hintCls: PropTypes.Requireable<string>;
        uploadProps: PropTypes.Requireable<object>;
        uploadTipProps: PropTypes.Requireable<object>;
        mode: PropTypes.Requireable<string>;
        markdownRenderProps: PropTypes.Requireable<object>;
        escapeHtml: PropTypes.Requireable<boolean>;
    };
    static defaultProps: any;
    constructor(props: ChatProps);
    get adapter(): ChatAdapter;
    static getDerivedStateFromProps(nextProps: ChatProps, prevState: ChatState): any;
    componentDidMount(): void;
    componentDidUpdate(prevProps: Readonly<ChatProps>, prevState: Readonly<ChatState>, snapshot?: any): void;
    componentWillUnmount(): void;
    resetMessage: () => void;
    clearContext: () => void;
    scrollToBottom: (animation: boolean) => void;
    sendMessage: (content: string, attachment: FileItem[]) => void;
    containerScroll: (e: React.UIEvent<HTMLDivElement>) => void;
    render(): React.JSX.Element;
}
export default Chat;
