import { BuddyDetails, ContactServiceQueue, ILogger } from '@webex/cc-store';
import { ButtonConfig, ControlVisibility } from '../../task.types';
/**
 * Interface for list item data
 */
export interface ListItemData {
    id: string;
    name: string;
}
/**
 * Creates the consult button configuration array
 */
export declare const createConsultButtons: (isMuted: boolean, controlVisibility: ControlVisibility, consultTransfer: () => void, toggleConsultMute: () => void, endConsultCall: () => void, consultConference: () => void, switchToMainCall: () => void, logger?: any) => ButtonConfig[];
/**
 * Filters buttons that should be visible
 */
export declare const getVisibleButtons: (buttons: ButtonConfig[], logger?: any) => ButtonConfig[];
/**
 * Creates initials from a name string
 */
export declare const createInitials: (name: string, logger?: any) => string;
/**
 * Gets the consult status text based on completion state
 */
export declare const getConsultStatusText: (consultInitiated: boolean, logger?: any) => string;
/**
 * Handles list item button press with logging
 */
export declare const handleListItemPress: (title: string, onButtonPress: () => void, logger: ILogger) => void;
/**
 * Determines if tabs should be shown based on available data
 */
export declare const shouldShowTabs: (buddyAgents: BuddyDetails[], queues: ContactServiceQueue[], logger?: any) => boolean;
/**
 * Checks if agents list is empty
 */
export declare const isAgentsEmpty: (buddyAgents: BuddyDetails[], logger?: any) => boolean;
/**
 * Checks if queues list is empty
 */
export declare const isQueuesEmpty: (queues: ContactServiceQueue[], logger?: any) => boolean;
/**
 * Handles tab selection with logging
 */
export declare const handleTabSelection: (key: string, setSelectedTab: (tab: string) => void, logger: ILogger) => void;
/**
 * Handles agent selection with logging
 */
export declare const handleAgentSelection: (agentId: string, agentName: string, allowParticipantsToInteract: boolean, onAgentSelect: ((agentId: string, agentName: string, allowParticipantsToInteract: boolean) => void) | undefined, logger: ILogger) => void;
/**
 * Handles queue selection with logging
 */
export declare const handleQueueSelection: (queueId: string, queueName: string, allowParticipantsToInteract: boolean, onQueueSelect: ((queueId: string, queueName: string, allowParticipantsToInteract: boolean) => void) | undefined, logger: ILogger) => void;
/**
 * Gets the appropriate empty state message based on context
 */
export declare const getEmptyStateMessage: (selectedTab: string, showTabs: boolean, logger?: any) => string;
/**
 * Creates list item data from buddy agents
 */
export declare const createAgentListData: (buddyAgents: BuddyDetails[], logger?: any) => ListItemData[];
/**
 * Creates list item data from queues
 */
export declare const createQueueListData: (queues: ContactServiceQueue[], logger?: any) => ListItemData[];
/**
 * Creates a timer key based on timestamp
 */
export declare const createTimerKey: (startTimeStamp: number, logger?: any) => string;
/**
 * Handles popover open with logging
 */
export declare const handlePopoverOpen: (menuType: string, setActiveMenu: (menu: string) => void, logger: ILogger) => void;
/**
 * Handles popover close with logging
 */
export declare const handlePopoverClose: (setActiveMenu: (menu: string | null) => void, logger: ILogger) => void;
/**
 * Handles hold toggle with logging
 */
export declare const handleHoldToggle: (toggleHold: (() => void) | undefined, logger: ILogger) => void;
/**
 * Handles wrapup call with logging
 */
export declare const handleWrapupCall: (onWrapupCall: (() => void) | undefined, logger: ILogger) => void;
/**
 * Validates if a menu type is supported
 */
export declare const isValidMenuType: (menuType: string, logger?: any) => boolean;
/**
 * Gets button style class based on state
 */
export declare const getButtonStyleClass: (isActive: boolean, isDisabled: boolean, baseClass?: string, logger?: any) => string;
/**
 * Formats elapsed time for display
 */
export declare const formatElapsedTime: (startTime: number, logger?: any) => string;
/**
 * Checks if an agent is available for selection
 */
export declare const isAgentAvailable: (agent: BuddyDetails, logger?: any) => boolean;
/**
 * Checks if a queue is available for selection
 */
export declare const isQueueAvailable: (queue: ContactServiceQueue, logger?: any) => boolean;
/**
 * Filters available agents
 */
export declare const filterAvailableAgents: (agents: BuddyDetails[], logger?: any) => BuddyDetails[];
/**
 * Filters buddy agents by a free-text query across name, dn and id.
 */
export declare const filterAgentsByQuery: (agents: BuddyDetails[], query: string) => BuddyDetails[];
/**
 * Returns agents to display for current category, applying search only for Agents tab, since other tabs support via the SDK
 */
export declare const getAgentsForDisplay: (selectedCategory: "Agents" | string, agents: BuddyDetails[], query: string) => BuddyDetails[];
/**
 * Filters available queues
 */
export declare const filterAvailableQueues: (queues: ContactServiceQueue[], logger?: any) => ContactServiceQueue[];
/**
 * Debounces a function call
 */
export declare const debounce: <T extends (...args: unknown[]) => unknown>(func: T, wait: number, logger?: any) => ((...args: Parameters<T>) => void);
/**
 * Helpers for Dial Number / Entry Point manual actions
 */
export declare const shouldAddConsultTransferAction: (selectedCategory: string, isEntryPointTabVisible: boolean, allowParticipantsToInteract: boolean, query: string, entryPoints: {
    id: string;
    name: string;
}[], onDialNumberSelect: (dialNumber: string, allowParticipantsToInteract: boolean) => void, onEntryPointSelect: (entryPointId: string, entryPointName: string, allowParticipantsToInteract: boolean) => void) => {
    visible: boolean;
    onClick?: () => void;
    title?: string;
};
