/**
 * Полезная нагрузка для событий действия сообщения
 * @typedef ActionPayload
 * @property {string} messageId - Идентификатор сообщения
 * @property {string} type - Тип действия (например, 'menu' | 'views')
 */
type ActionPayload = {
    messageId: string;
    type: string;
} & Record<string, unknown>;
/**
 * Тип эмиттера событий компонентов сообщений
 * @typedef EmitFn
 * @param {'action' | 'reply'} event - Имя события
 * @param {ActionPayload | string} payload - Данные события
 */
type EmitFn = (event: 'action' | 'reply', payload: ActionPayload | string) => void;
/**
 * Минимально необходимая структура сообщения для работы composable
 * @interface MessageWithMeta
 * @property {string} messageId - Идентификатор сообщения
 * @property {unknown} [actions] - Описание доступных действий (передается в `ContextMenu`)
 */
export interface MessageWithMeta {
    messageId: string;
    actions?: unknown;
}
/**
 * Composable для унификации поведения контекстного меню и связанных действий у сообщений ленты
 *
 * Предоставляет реактивные флаги и обработчики действий: показать/скрыть меню, клик по пункту меню,
 * клик по просмотрам, эмит события ответа.
 *
 * @template T Расширяет {@link MessageWithMeta}
 * @param {T} message - Сообщение с `messageId` (и опционально `actions`)
 * @param {EmitFn} emit - Эмиттер событий из компонента сообщения
 *
 * @returns {object} Объект с состояниями и методами
 * @returns {import('vue').Ref<boolean>} returns.isOpenMenu - Открыт ли контекстное меню
 * @returns {import('vue').Ref<boolean>} returns.buttonMenuVisible - Видна ли кнопка вызова меню
 * @returns {Function} returns.showMenu - Показать кнопку меню
 * @returns {Function} returns.hideMenu - Скрыть кнопку и закрыть меню
 * @returns {Function} returns.clickAction - Обработчик клика по пункту контекстного меню
 * @returns {Function} returns.viewsAction - Обработчик клика по просмотрам
 * @returns {Function} returns.handleClickReplied - Эмит события ответа по `replyMessageId`
 */
export declare const useMessageActions: <T extends MessageWithMeta>(message: T, emit: EmitFn) => {
    isOpenMenu: import("vue").Ref<boolean, boolean>;
    buttonMenuVisible: import("vue").Ref<boolean, boolean>;
    showMenu: () => void;
    hideMenu: () => void;
    clickAction: (action: Record<string, unknown>) => void;
    viewsAction: () => void;
    handleClickReplied: (replyMessageId: string) => void;
};
export {};
