import { Session } from './models';
export interface HubtypeAgentsInfo {
    attending_count: number;
    email: string;
    idle_count: number;
    last_message_sent: string;
    status: string;
}
export interface BackendContext {
    timeoutMs: number;
}
export interface VacationRange {
    end_date: number;
    id: number;
    start_date: number;
}
export type HandoffExtraData = {
    language?: string;
    url?: string;
    location?: string;
};
interface BotEventData {
    language: string;
    country: string;
}
export declare enum HelpdeskEvent {
    StatusChanged = "status_changed",
    AgentMessageCreated = "agent_message_created",
    QueuePositionChanged = "queue_position_changed"
}
export declare function getOpenQueues(session: Session, context?: {}): Promise<{
    queues: string[];
}>;
export declare class HandOffBuilder {
    _session: Session;
    _queue: string;
    _onFinish: string;
    _email: string;
    _agentId: string;
    _forceAssignIfNotAvailable: boolean;
    _autoAssignOnWaiting: boolean;
    _note: string;
    _caseInfo: string;
    _autoIdleMessage: string;
    _shadowing: boolean;
    _extraData: HandoffExtraData;
    _bot_event: BotEventData;
    _subscribeHelpdeskEvents: HelpdeskEvent[];
    constructor(session: Session);
    withQueue(queueNameOrId: string): this;
    withOnFinishPayload(payload: string): this;
    withOnFinishPath(path: string): this;
    withAgentEmail(email: string): this;
    withAgentId(agentId: string): this;
    withForceAssignIfNotAvailable(forceAssign: boolean): this;
    withAutoAssignOnWaiting(autoAssignOnWaiting: boolean): this;
    withNote(note: string): this;
    withCaseInfo(caseInfo: string): this;
    withAutoIdleMessage(message: string): this;
    withShadowing(shadowing?: boolean): this;
    withExtraData(extraData: HandoffExtraData): this;
    withBotEvent(botEvent: BotEventData): this;
    withSubscribeHelpdeskEvents(events: HelpdeskEvent[]): this;
    handOff(): Promise<void>;
}
/**
 * @deprecated use {@link HandOffBuilder} class instead
 */
export declare function humanHandOff(session: any, queueNameOrId: string | undefined, onFinish: any): Promise<void>;
export interface HubtypeHandoffParams {
    queue?: string;
    agent_email?: string;
    agent_id?: string;
    force_assign_if_not_available?: boolean;
    auto_assign_on_waiting?: boolean;
    case_info?: string;
    note?: string;
    auto_idle_message?: string;
    shadowing?: boolean;
    on_finish?: string;
    case_extra_data?: HandoffExtraData;
    bot_event?: BotEventData;
    subscribe_helpdesk_events?: HelpdeskEvent[];
}
export declare function storeCaseRating(session: Session, rating: number, context?: any): Promise<{
    status: string;
}>;
export declare function getAvailableAgentsByQueue(session: Session, queueId: string): Promise<{
    agents: string[];
}>;
export declare function getAvailableAgents(session: Session): Promise<{
    agents: HubtypeAgentsInfo[];
}>;
export declare function getAgentVacationRanges(session: Session, { agentId, agentEmail }: {
    agentId?: string;
    agentEmail?: string;
}): Promise<{
    vacation_ranges: VacationRange[];
}>;
export declare function cancelHandoff(session: Session, typification?: string | null): void;
export declare function deleteUser(session: Session): void;
export {};
