import { type Component, type ComputedRef, type Ref } from 'vue';
/**
 * Все поддерживаемые типы каналов в панели коммуникаций.
 */
export declare const CHANNEL_TYPES: readonly ["whatsapp", "telegram", "max", "sms", "phone"];
export type ChannelType = (typeof CHANNEL_TYPES)[number];
/** Порядок кнопок каналов по умолчанию. */
export declare const DEFAULT_CHANNEL_ORDER: readonly ChannelType[];
export declare function isChannelType(value: string): value is ChannelType;
/**
 * Собирает итоговый список типов для панели: порядок из channelOrder, видимость из visibleChannelTypes.
 * Типы из visibleChannelTypes, отсутствующие в channelOrder, добавляются в конце.
 */
export declare function resolvePanelChannelTypes(channelOrder: readonly string[] | undefined, visibleChannelTypes: readonly string[] | undefined): ChannelType[];
/**
 * Базовое описание канала.
 */
export type Channel = {
    channelId: string;
    title?: string;
    [key: string]: unknown;
};
type MaybeRef<T> = T | Ref<T> | ComputedRef<T>;
type ChannelTooltips = Record<string, string>;
type ChannelsRef = MaybeRef<Channel[]>;
type ChannelTooltipsRef = MaybeRef<ChannelTooltips | undefined>;
type ChannelTypesRef = MaybeRef<readonly string[] | undefined>;
interface UseCommunicationChannelsOptions {
    /** Реактивный список каналов */
    channels: ChannelsRef;
    /** Реактивная карта пользовательских подсказок */
    channelTooltips?: ChannelTooltipsRef;
    /** Порядок кнопок каналов в панели */
    channelOrder?: ChannelTypesRef;
    /** Типы каналов, которые нужно отображать (с бэка — доступные пользователю) */
    visibleChannelTypes?: ChannelTypesRef;
    /** Текущий выбранный тип канала */
    selectedChannelType: Ref<string | null>;
}
export declare function useCommunicationChannels({ channels, channelTooltips, channelOrder, visibleChannelTypes, selectedChannelType, }: UseCommunicationChannelsOptions): {
    panelChannelTypes: ComputedRef<("phone" | "whatsapp" | "telegram" | "sms" | "max")[]>;
    channelsTypes: ComputedRef<{
        type: "phone" | "whatsapp" | "telegram" | "sms" | "max";
        component: Component;
    }[]>;
    getTooltipText: (channelType: string) => string;
    getChannelTypeFromId: (channelId: string | null | undefined) => string | null;
    hasMultipleChannels: (channelType: string) => boolean;
    isChannelActive: (channelType: string) => boolean;
    getSingleChannelForType: (channelType: string) => Channel | null;
    getMenuChannelIconComponent: (channelType: string) => Component | null;
    getMenuChannelIconComponentForChannelId: (channelId: string) => Component | null;
    getSingleMenuChannelIconComponent: (channelType: string) => Component | null;
    getAvailableChannels: (channelType: string) => Channel[];
};
export {};
