import { CSSProperties, PropType, StyleValue } from 'vue';
import { BubbleAnimationOption, BubbleContentType, BubbleProps, BubbleSlot, EditableBubbleOption, Info, SemanticType } from './interface';
export declare const XBubble: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    rootClass: {
        type: StringConstructor;
        default: string;
    };
    style: {
        type: PropType<StyleValue>;
        default: undefined;
    };
    class: {
        type: PropType<BubbleProps["class"]>;
        default: undefined;
    };
    styles: {
        type: PropType<Partial<Record<SemanticType, CSSProperties>>>;
        default: () => {};
    };
    classes: {
        type: PropType<Partial<Record<SemanticType, string>>>;
        default: () => {};
    };
    placement: {
        type: PropType<"start" | "end">;
        default: string;
    };
    content: {
        type: PropType<BubbleContentType>;
        required: true;
    };
    contentRender: {
        type: PropType<BubbleProps["contentRender"]>;
        default: undefined;
    };
    editable: {
        type: PropType<boolean | EditableBubbleOption>;
        default: boolean;
    };
    typing: {
        type: PropType<BubbleProps["typing"]>;
        default: boolean;
    };
    streaming: {
        type: BooleanConstructor;
        default: boolean;
    };
    variant: {
        type: PropType<"filled" | "outlined" | "shadow" | "borderless">;
        default: string;
    };
    shape: {
        type: PropType<"default" | "round" | "corner">;
        default: string;
    };
    header: {
        type: PropType<BubbleProps["header"]>;
        default: undefined;
    };
    footer: {
        type: PropType<BubbleProps["footer"]>;
        default: undefined;
    };
    avatar: {
        type: PropType<BubbleProps["avatar"]>;
        default: undefined;
    };
    extra: {
        type: PropType<BubbleProps["extra"]>;
        default: undefined;
    };
    footerPlacement: {
        type: PropType<BubbleProps["footerPlacement"]>;
        default: undefined;
    };
    loading: {
        type: BooleanConstructor;
        default: boolean;
    };
    loadingRender: {
        type: PropType<BubbleProps["loadingRender"]>;
        default: undefined;
    };
    onTyping: {
        type: PropType<BubbleProps["onTyping"]>;
        default: undefined;
    };
    onTypingComplete: {
        type: PropType<BubbleProps["onTypingComplete"]>;
        default: undefined;
    };
    onEditConfirm: {
        type: PropType<BubbleProps["onEditConfirm"]>;
        default: undefined;
    };
    onEditCancel: {
        type: PropType<BubbleProps["onEditCancel"]>;
        default: undefined;
    };
    info: {
        type: PropType<Info>;
        default: () => {};
    };
}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    rootClass: {
        type: StringConstructor;
        default: string;
    };
    style: {
        type: PropType<StyleValue>;
        default: undefined;
    };
    class: {
        type: PropType<BubbleProps["class"]>;
        default: undefined;
    };
    styles: {
        type: PropType<Partial<Record<SemanticType, CSSProperties>>>;
        default: () => {};
    };
    classes: {
        type: PropType<Partial<Record<SemanticType, string>>>;
        default: () => {};
    };
    placement: {
        type: PropType<"start" | "end">;
        default: string;
    };
    content: {
        type: PropType<BubbleContentType>;
        required: true;
    };
    contentRender: {
        type: PropType<BubbleProps["contentRender"]>;
        default: undefined;
    };
    editable: {
        type: PropType<boolean | EditableBubbleOption>;
        default: boolean;
    };
    typing: {
        type: PropType<BubbleProps["typing"]>;
        default: boolean;
    };
    streaming: {
        type: BooleanConstructor;
        default: boolean;
    };
    variant: {
        type: PropType<"filled" | "outlined" | "shadow" | "borderless">;
        default: string;
    };
    shape: {
        type: PropType<"default" | "round" | "corner">;
        default: string;
    };
    header: {
        type: PropType<BubbleProps["header"]>;
        default: undefined;
    };
    footer: {
        type: PropType<BubbleProps["footer"]>;
        default: undefined;
    };
    avatar: {
        type: PropType<BubbleProps["avatar"]>;
        default: undefined;
    };
    extra: {
        type: PropType<BubbleProps["extra"]>;
        default: undefined;
    };
    footerPlacement: {
        type: PropType<BubbleProps["footerPlacement"]>;
        default: undefined;
    };
    loading: {
        type: BooleanConstructor;
        default: boolean;
    };
    loadingRender: {
        type: PropType<BubbleProps["loadingRender"]>;
        default: undefined;
    };
    onTyping: {
        type: PropType<BubbleProps["onTyping"]>;
        default: undefined;
    };
    onTypingComplete: {
        type: PropType<BubbleProps["onTypingComplete"]>;
        default: undefined;
    };
    onEditConfirm: {
        type: PropType<BubbleProps["onEditConfirm"]>;
        default: undefined;
    };
    onEditCancel: {
        type: PropType<BubbleProps["onEditCancel"]>;
        default: undefined;
    };
    info: {
        type: PropType<Info>;
        default: () => {};
    };
}>> & Readonly<{}>, {
    prefixCls: string;
    style: StyleValue;
    loading: boolean;
    rootClass: string;
    class: import('vue').ClassValue;
    classes: Partial<Record<SemanticType, string>>;
    styles: Partial<Record<SemanticType, CSSProperties>>;
    placement: "end" | "start";
    footer: BubbleSlot<string>;
    header: BubbleSlot<string>;
    variant: "filled" | "borderless" | "outlined" | "shadow";
    editable: boolean | EditableBubbleOption;
    extra: BubbleSlot<string>;
    avatar: BubbleSlot<string>;
    shape: "round" | "default" | "corner";
    typing: boolean | BubbleAnimationOption | ((content: string, info: Info) => boolean | BubbleAnimationOption) | undefined;
    loadingRender: (() => import('vue').VNodeChild) | ((content: string, info: Info) => import('vue').VNodeChild) | undefined;
    contentRender: ((content: string, info: Info) => import('vue').VNodeChild) | undefined;
    streaming: boolean;
    footerPlacement: "outer-start" | "outer-end" | "inner-start" | "inner-end" | undefined;
    onTyping: ((rendererContent: string, currentContent: string) => void) | undefined;
    onTypingComplete: ((content: string) => void) | undefined;
    onEditConfirm: ((content: string) => void) | undefined;
    onEditCancel: (() => void) | undefined;
    info: Info;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
export default XBubble;
