import { ThreadModel, MessageUserContent, MessageModel, InternalMessageType } from '../../models';
import { ChatUsersProps } from '../core/useChatProps';
import { Threads } from '../../models/Threads';
import { ApiManager } from '../core/useApiManager';
type BeforeUserMessageSendFnParams = {
    text: string;
    content: MessageUserContent;
    history: InternalMessageType[];
    reason: 'editMessage' | 'newMessage';
    parentMessage?: InternalMessageType;
};
export type BeforeUserMessageSendFnType = (params: BeforeUserMessageSendFnParams) => {
    userMessage?: InternalMessageType;
    assistantMessage?: InternalMessageType;
} | Promise<{
    userMessage?: InternalMessageType;
    assistantMessage?: InternalMessageType;
}>;
export declare const useThreadSendMessage: (thread: ThreadModel | undefined, model: Threads<any, any>, onFirstMessageSent: ChatUsersProps<any, any>['onFirstMessageSent'], beforeUserMessageSend: BeforeUserMessageSendFnType | undefined, onAssistantMessageTypingFinish: ChatUsersProps<any, any>['onAssistantMessageTypingFinish'], scroller: {
    handleBottomScroll?: () => void;
} | undefined, apiManager: ApiManager) => {
    onSendNewsMessage: (content: MessageUserContent) => Promise<boolean>;
    onEditMessage: (content: MessageUserContent, messageEdit: MessageModel) => Promise<MessageModel<import("../../models").Message> | undefined>;
};
export {};
