import { Reply } from '@/types';
/**
 * Структура загруженного файла
 * @interface UploadedFile
 * @property {string} url - URL файла
 * @property {string} [name] - Имя файла
 * @property {number} [size] - Размер файла в байтах
 * @property {string} [type] - MIME-тип файла
 */
interface UploadedFile {
    url: string;
    name?: string;
    size?: number;
    type?: string;
}
/**
 * Composable для управления состоянием черновика сообщения в конкретном чате
 *
 * для ChatInput компонента
 *
 * Предоставляет методы для работы с текстом, файлами, ответами и флагами сообщения.
 * Автоматически создает новый черновик, если сообщение с указанным ID не существует.
 * Поддерживает множественные экземпляры для разных чатов одновременно.
 *
 * @param {string} outId - Уникальный идентификатор чата (chatAppId)
 *
 * @returns {Object} Методы для управления сообщением
 * @returns {Function} returns.getMessage - Получить текущее состояние сообщения
 * @returns {Function} returns.resetMessage - Сбросить сообщение (очистить текст, файл, ответ)
 * @returns {Function} returns.setMessageText - Установить текст сообщения
 * @returns {Function} returns.setMessageFile - Установить прикрепленный файл
 * @returns {Function} returns.resetMessageFile - Удалить прикрепленный файл
 * @returns {Function} returns.setReply - Установить ответ на сообщение
 * @returns {Function} returns.resetReply - Удалить ответ на сообщение
 * @returns {Function} returns.setForceSendMessage - Установить флаг принудительной отправки
 * @returns {Function} returns.setRecordingMessage - Установить флаг записи
 *
 * @example
 * // Базовое использование в компоненте
 * import { useMessageDraft } from '@/hooks';
 *
 * const chatAppId = 'chat-123';
 * const { getMessage, setMessageText, setMessageFile, resetMessage } = useMessageDraft(chatAppId);
 *
 * // Установить текст
 * setMessageText('Привет!');
 *
 * // Добавить файл
 * setMessageFile({
 *   url: 'https://example.com/file.pdf',
 *   name: 'document.pdf',
 *   size: 1024,
 *   type: 'application/pdf'
 * });
 *
 * // Получить текущее состояние
 * const currentMessage = getMessage();
 * console.log(currentMessage.text, currentMessage.file);
 *
 * // Очистить сообщение после отправки
 * resetMessage();
 *
 * @example
 * // Работа с ответами
 * const { setReply, resetReply } = useMessageDraft(chatAppId);
 *
 * setReply({
 *   id: 'msg-456',
 *   text: 'Исходное сообщение',
 *   authorName: 'Иван'
 * });
 *
 * // Удалить ответ
 * resetReply();
 */
export declare const useMessageDraft: (outId: string) => {
    getMessage: () => {
        id: string;
        text: string;
        file?: {
            url: string;
            name?: string | undefined;
            size?: number | undefined;
            type?: string | undefined;
        } | undefined;
        reply?: {
            messageId: string;
            type: string;
            text?: string | undefined;
            url?: string | undefined;
            filename?: string | undefined;
            header?: string | undefined;
            callDuration?: string | undefined;
            isMissedCall?: boolean | undefined;
        } | undefined;
        forceSend: boolean;
        isRecording: boolean;
    };
    resetMessage: () => void;
    setMessageFile: (file: UploadedFile) => void;
    resetMessageFile: () => void;
    setMessageText: (text: string) => void;
    setReply: (reply: Reply) => void;
    resetReply: () => void;
    setForceSendMessage: (val: boolean) => void;
    setRecordingMessage: (val: boolean) => void;
};
export {};
