import { type ComputedRef, type Ref } from 'vue';
/**
 * Композабл для управления выбором чатов и диалогов в списке.
 * Инкапсулирует логику установки состояния выбранного чата/диалога,
 * сброса предыдущих выборов и эмита событий выбора.
 */
/**
 * Тип элемента чата.
 */
type ChatItem = {
    chatId: string;
    isSelected?: boolean;
    dialogs?: Array<{
        dialogId: string;
        isSelected?: boolean;
    }>;
    [key: string]: unknown;
};
/**
 * Тип элемента диалога.
 */
type Dialog = {
    dialogId: string;
    [key: string]: unknown;
};
/**
 * Аргументы для выбора чата.
 */
type SelectChatArgs = {
    /** Выбранный чат */
    chat: ChatItem;
    /** Опциональный выбранный диалог */
    dialog?: Dialog;
    [key: string]: unknown;
};
/**
 * Тип эмиттера событий для выбора.
 */
type ChatListSelectionEmit = {
    /** Событие выбора чата/диалога */
    (event: 'select', args: SelectChatArgs): void;
};
/**
 * Параметры и зависимости композабла.
 */
interface UseChatListSelectionOptions {
    /** Реактивный список чатов */
    chats: ComputedRef<ChatItem[]> | Ref<ChatItem[]>;
    /** Функция эмита событий */
    emit: ChatListSelectionEmit;
}
export declare function useChatListSelection({ chats, emit }: UseChatListSelectionOptions): {
    selectChat: (args: SelectChatArgs) => void;
    selectDialog: (dialog: Dialog) => void;
};
export {};
