import { default as CxBadge } from '../../../atoms/src/components/badge/badge.ts';
import { default as CxCheckbox } from '../../../atoms/src/components/checkbox/checkbox.ts';
import { default as CxDivider } from '../../../atoms/src/components/divider/divider.ts';
import { default as CxDropdown } from '../../../atoms/src/components/dropdown/dropdown.ts';
import { default as CxIconButton } from '../../../atoms/src/components/icon-button/icon-button.ts';
import { default as CxInput } from '../../../atoms/src/components/input/input.ts';
import { default as CxMarkdown } from '../../../atoms/src/components/markdown/markdown.ts';
import { default as CxMenu } from '../../../atoms/src/components/menu/menu.ts';
import { default as CxMenuItem } from '../../../atoms/src/components/menu-item/menu-item.ts';
import { default as CxTooltip } from '../../../atoms/src/components/tooltip/tooltip.ts';
import { default as CxTypography } from '../../../atoms/src/components/typography/typography.ts';
import { default as CortexElement } from '../../../base/src/cortex-element.ts';
import { default as CxConfirmPopover } from '../../../molecules/src/confirm-popover/confirm-popover.ts';
import { ChatbotEvent } from '../../../types/src/chatbot';
import { CSSResultGroup, TemplateResult } from 'lit';
import { default as CxChatbotFooter } from './components/chatbot-footer/chatbot-footer';
import { default as CxChatbotPopup } from './components/chatbot-popup/chatbot-popup';
import * as signalR from '@microsoft/signalr';
/**
 * @summary A chatbot component to interact with Cortex AI Assistant.
 *
 * The component needs to establish a connection to the server to work. We can establish a connection passively (once the component mounts) or actively (e.g: only connect on button click).
 *
 * - Passively: Provide the necessary properties to the component ("connectionURL" and "conversationId"). The component will automatically attempt to connect on first update.
 * - Actively: Call "connect()" with the necessary arguments.
 *
 * @cssproperty [--width=400px] - The width of the chatbot.
 * @cssproperty [--height=600px] - The height of the chatbot.
 *
 * @typedef ChatbotEvent - {
 *  callback: (messageContent: string) => void;
 *  event: string;
 *  excludedFromPurposes?: string[];
 *  label: string;
 * }
 */
export default class CxChatbot extends CortexElement {
    private readonly localize;
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-badge': typeof CxBadge;
        'cx-chatbot-footer': typeof CxChatbotFooter;
        'cx-chatbot-popup': typeof CxChatbotPopup;
        'cx-checkbox': typeof CxCheckbox;
        'cx-confirm-popover': typeof CxConfirmPopover;
        'cx-divider': typeof CxDivider;
        'cx-dropdown': typeof CxDropdown;
        'cx-icon-button': typeof CxIconButton;
        'cx-input': typeof CxInput;
        'cx-markdown': typeof CxMarkdown;
        'cx-menu': typeof CxMenu;
        'cx-menu-item': typeof CxMenuItem;
        'cx-tooltip': typeof CxTooltip;
        'cx-typography': typeof CxTypography;
    };
    chatbot: HTMLDivElement;
    overlay: HTMLDivElement;
    minimizedContent: HTMLDivElement;
    messagesContainer: HTMLDivElement;
    messageInput: CxInput;
    private isFullscreen;
    private isMinimized;
    private isOpen;
    private isTyping;
    private message;
    private lastMessage;
    private messages;
    private connection;
    private pingInterval;
    private botMessage;
    /** The conversation ID to connect to the chatbot */
    conversationId: string;
    /** The title of the chatbot */
    conversationTitle: string;
    /** The purpose of the conversation */
    conversationPurpose: string;
    /** The name of the chatbot */
    botName: string;
    /** The name of the user */
    userName: string;
    /** The events to show in the chatbot's menu */
    events: ChatbotEvent[];
    /** The connection URL to the chatbot */
    connectionURL: string;
    /** The number of cited references to show in the reference footer before collapsing. If -1, show all cited references */
    referenceNumberLimit: number;
    get skipCloseConfirm(): boolean;
    constructor();
    runFirstUpdated(): void;
    connect({ botName, connection, conversationId, conversationPurpose, }: {
        botName?: string;
        connection?: string | signalR.HubConnection;
        conversationId?: string;
        conversationPurpose?: string;
    }): void;
    show(): void;
    hide(): void;
    updateTabIndex(): void;
    toggleFullScreen(): void;
    pingConnection(): void;
    adjustScroll(): Promise<void>;
    private addPlaceholderAssistantMessage;
    private sendMessage;
    private closeConnection;
    animateChatbot(): void;
    private handleMessageInputChange;
    private handleMessageInputKeyDown;
    private handleGenerateResponseClick;
    private handleSendClick;
    private handleExpandClick;
    private handleCloseClick;
    private handleMinimizeClick;
    private handleSkipCloseConfirmChange;
    private renderTyping;
    private renderReferencePopup;
    private renderReferenceFooter;
    private renderMarkdown;
    private renderMessage;
    private renderMessageInput;
    private renderCloseButton;
    private renderExpandedContent;
    private renderMinimizedContent;
    render(): TemplateResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-chatbot': CxChatbot;
    }
}
