import type { Ref, ShallowRef } from 'vue';
import type { ChatBusinessManager } from '../../manager/business/chat-business-manager';
import type { IChatHelper } from '../../types';
import type { ChatBotEmitFn } from './use-chatbot-init';
import type { IUserMessage } from '@blueking/chat-helper';
import type { IAiSlashMenuItem, TagSchema, UserMessage } from '@blueking/chat-x';
export interface UseMessageSenderParams {
    chatBusinessManager: Ref<ChatBusinessManager | null>;
    chatHelper: Ref<IChatHelper | null>;
    emit: ChatBotEmitFn;
    selectedResources: ShallowRef<IAiSlashMenuItem[]>;
    selectedShortcut: Ref<null | {
        id?: string;
    }>;
}
export interface UseMessageSenderReturn {
    cite: Ref<string>;
    userInput: ShallowRef<string | TagSchema>;
    doSendMessage: (message: IUserMessage['content'], options?: {
        property?: Record<string, unknown>;
    }) => Promise<void>;
    handleSendMessage: (content: UserMessage['content'], docSchema: TagSchema) => Promise<void>;
    handleStopSending: () => Promise<void>;
    handleUpdateModelValue: (value: string | TagSchema, resourceList: IAiSlashMenuItem[]) => void;
    handleUpload: (file: File) => Promise<{
        download_url?: string;
    }>;
    stopGeneration: () => Promise<void>;
}
export declare function useMessageSender(params: UseMessageSenderParams): UseMessageSenderReturn;
//# sourceMappingURL=use-message-sender.d.ts.map