import { BaseView, Deferred, ViewManager } from '@difizen/mana-app';
import type { RefObject } from 'react';
import rehypeRaw from 'rehype-raw';
import breaks from 'remark-breaks';
import remarkGfm from 'remark-gfm';
import { ConversationManager } from '../chat-base/conversation-manager.js';
import type { BaseConversationModel, IChatMessage } from '../chat-base/protocol.js';
import { ImageModal } from './components/markdown/index.js';
import './index.less';
export interface ChatProps {
    className?: string;
}
export declare const DefaultGreeting: () => import("react/jsx-runtime").JSX.Element;
export declare const ChatComponent: import("react").ForwardRefExoticComponent<ChatProps & import("react").RefAttributes<HTMLDivElement>>;
export interface ChatViewOption extends IChatMessage {
    id: string;
}
export declare class ChatView extends BaseView {
    viewManager: ViewManager;
    conversationManager: ConversationManager;
    view: import("react").ForwardRefExoticComponent<ChatProps & import("react").RefAttributes<HTMLDivElement>>;
    AvatarRender: (props: {
        item: import("../index.js").DefaultChatMessageItemModel;
        className?: string | undefined;
    }) => import("react/jsx-runtime").JSX.Element;
    Messages: () => import("react/jsx-runtime").JSX.Element;
    Greeting: () => import("react/jsx-runtime").JSX.Element;
    Input: () => import("react/jsx-runtime").JSX.Element;
    Footer: () => import("react/jsx-runtime").JSX.Element;
    ChatMessage: (props: {
        message: import("../index.js").DefaultChatMessageModel;
    }) => import("react/jsx-runtime").JSX.Element;
    ChatMessageItem: (props: {
        message: import("../index.js").DefaultChatMessageModel;
        item: import("../index.js").DefaultChatMessageItemModel;
    }) => import("react/jsx-runtime").JSX.Element;
    Markdown: (props: import("./components/markdown/index.js").MarkdownProps) => import("react/jsx-runtime").JSX.Element;
    getMarkdownProps(): {
        components: {
            code: (props: any) => import("react/jsx-runtime").JSX.Element;
            img: typeof ImageModal;
        };
        remarkPlugins: (typeof remarkGfm | typeof breaks)[];
        rehypePlugins: (typeof rehypeRaw)[];
    };
    option: ChatViewOption;
    allowUploadingImage: boolean;
    handleUploadImage: (e: any, calback: (params: any) => void) => {
        new (executor: (resolve: (value: void | PromiseLike<void>) => void, reject: (reason?: any) => void) => void): Promise<void>;
        all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
        all<T_1 extends [] | readonly unknown[]>(values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited<T_1[P]>; }>;
        race<T_2>(values: Iterable<T_2 | PromiseLike<T_2>>): Promise<Awaited<T_2>>;
        race<T_3 extends [] | readonly unknown[]>(values: T_3): Promise<Awaited<T_3[number]>>;
        readonly prototype: Promise<any>;
        reject<T_4 = never>(reason?: any): Promise<T_4>;
        resolve(): Promise<void>;
        resolve<T_5>(value: T_5): Promise<Awaited<T_5>>;
        resolve<T_6>(value: T_6 | PromiseLike<T_6>): Promise<Awaited<T_6>>;
        allSettled<T_7 extends [] | readonly unknown[]>(values: T_7): Promise<{ -readonly [P_1 in keyof T_7]: PromiseSettledResult<Awaited<T_7[P_1]>>; }>;
        allSettled<T_8>(values: Iterable<T_8 | PromiseLike<T_8>>): Promise<PromiseSettledResult<Awaited<T_8>>[]>;
        any<T_9 extends [] | readonly unknown[]>(values: T_9): Promise<Awaited<T_9[number]>>;
        any<T_10>(values: Iterable<T_10 | PromiseLike<T_10>>): Promise<Awaited<T_10>>;
        readonly [Symbol.species]: PromiseConstructor;
    };
    showToBottomBtn: boolean;
    conversation?: BaseConversationModel;
    conversationReady: Promise<BaseConversationModel>;
    protected conversationDeferred: Deferred<BaseConversationModel>;
    /**
     * A container DOM node for messages,
     * making it convenient for scroll control and other functions.
     */
    protected messageListRef?: RefObject<HTMLDivElement>;
    constructor(option: ChatViewOption);
    get sendable(): boolean;
    protected toMessageOption(msgContent: string, image?: string): {
        image?: string | undefined;
        sender: {
            type: string;
        };
        input: string;
        id: string;
        created?: string | undefined;
        messages?: import("../chat-base/protocol.js").IChatMessageItem[] | undefined;
        modified?: string | undefined;
        stream: boolean;
        token?: any;
    };
    sendMessage: (msgContent: string, image?: string) => Promise<void>;
    onViewMount(): void;
    protected toConversationOption(): {
        messages: never[];
        id: string;
        created?: string | undefined;
        input?: string | undefined;
        modified?: string | undefined;
        stream?: boolean | undefined;
        token?: any;
    };
    protected initConversation: () => Promise<void>;
    clear: () => Promise<void>;
    scrollToBottom: (immediately?: boolean, smoothly?: boolean) => void;
    onScroll: () => void;
    setMessageListContainer: (domRef: RefObject<HTMLDivElement>) => void;
}
//# sourceMappingURL=view.d.ts.map