import { PropType, DefineComponent, ExtractPropTypes, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
export interface Attachment {
    name: string;
    size: number;
    type?: string;
    dataUrl?: string;
}
export interface GeneratedItem {
    type: 'ppt' | 'image' | 'document';
    title: string;
    url: string;
}
export interface Message {
    id: string;
    role: 'user' | 'ai';
    content: string;
    timestamp: number;
    attachments?: Attachment[];
    generated?: GeneratedItem;
}
export interface ModelConfig {
    id: string;
    name: string;
    icon?: string;
    apiUrl: string;
    apiKey?: string;
    headers?: Record<string, string>;
}
export interface ChatRequest {
    model: ModelConfig;
    messages: Message[];
    prompt: string;
    attachments?: Attachment[];
    generationType?: 'ppt' | 'image' | 'document';
}
export interface ChatResponse {
    content: string;
    generated?: GeneratedItem;
    error?: string;
}
declare const _default: DefineComponent<ExtractPropTypes<{
    modelOptions: {
        type: PropType<ModelConfig[]>;
        default: () => {
            id: string;
            name: string;
            icon: string;
            apiUrl: string;
        }[];
    };
    defaultModel: {
        type: StringConstructor;
        default: string;
    };
    userAvatar: {
        type: StringConstructor;
        default: string;
    };
    botAvatar: {
        type: StringConstructor;
        default: string;
    };
    chatHandler: {
        type: PropType<(request: ChatRequest) => Promise<ChatResponse>>;
        default: null;
    };
    dark: {
        type: BooleanConstructor;
        default: boolean;
    };
}>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    error: (error: string) => any;
    "message-sent": (message: Message) => any;
    "message-received": (message: Message) => any;
    generated: (item: GeneratedItem) => any;
    "update:dark": (value: boolean) => any;
}, string, PublicProps, Readonly< ExtractPropTypes<{
    modelOptions: {
        type: PropType<ModelConfig[]>;
        default: () => {
            id: string;
            name: string;
            icon: string;
            apiUrl: string;
        }[];
    };
    defaultModel: {
        type: StringConstructor;
        default: string;
    };
    userAvatar: {
        type: StringConstructor;
        default: string;
    };
    botAvatar: {
        type: StringConstructor;
        default: string;
    };
    chatHandler: {
        type: PropType<(request: ChatRequest) => Promise<ChatResponse>>;
        default: null;
    };
    dark: {
        type: BooleanConstructor;
        default: boolean;
    };
}>> & Readonly<{
    onError?: ((error: string) => any) | undefined;
    "onMessage-sent"?: ((message: Message) => any) | undefined;
    "onMessage-received"?: ((message: Message) => any) | undefined;
    onGenerated?: ((item: GeneratedItem) => any) | undefined;
    "onUpdate:dark"?: ((value: boolean) => any) | undefined;
}>, {
    dark: boolean;
    modelOptions: ModelConfig[];
    defaultModel: string;
    userAvatar: string;
    botAvatar: string;
    chatHandler: (request: ChatRequest) => Promise<ChatResponse>;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;
