import { type Attachment } from "~/types";
interface UseMessageSendingOptions {
    beforeOnSendMessage?: () => Promise<boolean>;
    onCreateNewChat?: () => string;
    onFileUploadError?: (error: string) => void;
    onSendMessage?: (content: string, chatId: string, attachments?: Attachment[], modelId?: string, messageId?: string) => Promise<void>;
}
export declare function useMessageSending(options: UseMessageSendingOptions): {
    readonly canSendMessage: boolean;
    readonly canSendNewMessage: boolean;
    readonly streamingStatus: {
        isStreaming: boolean;
        currentMessageId: string | null;
        currentChatId: string | null;
    };
    readonly isSending: boolean;
    readonly hasPendingMessages: boolean;
    readonly handleSendMessage: (content: string, attachments: Attachment[], clearInput: () => void, focusInput: () => void, modelId?: string | undefined) => Promise<void>;
    readonly handleStopStreaming: () => {
        combinedAttachments: Attachment[];
        combinedContent: string;
    };
    readonly getSendButtonState: (text: string, attachmentsCount: number) => {
        isStreaming: boolean;
        disabled: boolean;
        icon: string;
        addQueue: boolean;
        hasContent: boolean;
    };
    readonly checkUnuploadedFiles: (attachments: Attachment[]) => boolean;
    readonly sendNextQueuedMessage: () => Promise<void>;
    readonly sendJumpQueueMessage: (messageId: string) => Promise<void>;
    readonly addMessageToQueue: (content: string, attachments: Attachment[], clearInput: () => void, focusInput: () => void, modelId?: string | undefined) => void;
};
export {};
