import type { Ref, ComputedRef } from 'vue';
import type { ContactAttribute, ConfirmAttributePayload } from './useCommunicationAttributes';
/**
 * Тип канала панели коммуникаций.
 */
type Channel = {
    channelId: string;
    title?: string;
    [key: string]: unknown;
};
/**
 * Сигнатуры событий, которые эмитит панель.
 */
interface CommunicationActionsEmit {
    (event: 'select-attribute-channel', payload: {
        attributeId: string;
        channelId: string;
    }): void;
    (event: 'confirm-attribute', payload: ConfirmAttributePayload): void;
    (event: 'phone-call', payload: {
        attributeId: string;
        phoneNumber: unknown;
    }): void;
}
interface UseCommunicationActionsOptions {
    activeChannelType: Ref<string | null>;
    channels: ComputedRef<Channel[]>;
    selectedChannel: Ref<Channel | Record<string, unknown>>;
    selectedChannelType: Ref<string | null>;
    hoveredAttribute: Ref<ContactAttribute | null>;
    confirmingAttributeId: Ref<string | null>;
    isAttributeBlocked: (attribute: ContactAttribute | null | undefined) => boolean;
    closeMenu: () => void;
    hasMultipleChannels: (channelType: string) => boolean;
    getSingleChannelForType: (channelType: string) => Channel | null;
    getAvailableChannels: (channelType: string) => Channel[];
    isChannelEmpty: (channelId: string) => boolean;
    isNewDialog: ComputedRef<boolean>;
    showDefaultChannelTooltipWithTimer: () => void;
    clearDefaultChannelTooltip: () => void;
    emit: CommunicationActionsEmit;
}
/**
 * Инкапсулирует действия панели: звонок, выбор каналов, выбор атрибутов.
 */
export declare function useCommunicationActions({ activeChannelType, channels, selectedChannel, selectedChannelType, hoveredAttribute, confirmingAttributeId, isAttributeBlocked, closeMenu, hasMultipleChannels, getSingleChannelForType, getAvailableChannels, isChannelEmpty, isNewDialog, showDefaultChannelTooltipWithTimer, clearDefaultChannelTooltip, emit, }: UseCommunicationActionsOptions): {
    handlePhoneCall: (attribute: ContactAttribute | null | undefined) => void;
    handleAttributeClick: (attribute: ContactAttribute) => void;
    selectSingleChannel: (attribute: ContactAttribute, channelId: string) => void;
    selectChannel: (channelId: string) => void;
    availableChannels: () => Channel[];
};
export {};
