import { Editor } from '@tiptap/core';
import { default as CxButton } from '../../../../../atoms/src/components/button/button.ts';
import { default as CxCard } from '../../../../../atoms/src/components/card/card.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 CxPopup } from '../../../../../atoms/src/components/popup/popup.ts';
import { default as CxSpace } from '../../../../../atoms/src/components/space/space.ts';
import { default as CxTooltip } from '../../../../../atoms/src/components/tooltip/tooltip.ts';
import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
import { nothing } from 'lit';

export type CxAttachmentUploadEvent = CustomEvent<Record<PropertyKey, never>>;
export type CxStartRecordingEvent = CustomEvent<Record<PropertyKey, never>>;
export type CxStopRecordingEvent = CustomEvent<Record<PropertyKey, never>>;
export type CxCommentFullscreenToggleEvent = CustomEvent<Record<PropertyKey, never>>;
export default class CxCommentMenu extends CortexElement {
    static readonly styles: import('lit').CSSResult[];
    private readonly localize;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-card': typeof CxCard;
        'cx-icon-button': typeof CxIconButton;
        'cx-input': typeof CxInput;
        'cx-popup': typeof CxPopup;
        'cx-space': typeof CxSpace;
        'cx-tooltip': typeof CxTooltip;
    };
    popup: CxPopup;
    linkTextInput: HTMLInputElement;
    linkUrlInput: HTMLInputElement;
    editor: Editor;
    fullscreen: boolean;
    canUpload: boolean;
    canUseAIAssistant: boolean;
    recording: boolean;
    /**
     * Whether the time based button should be shown in the comment menu.
     */
    canUseTimeBased: boolean;
    /**
     * Whether the time based feature is enabled.
     */
    timeBased: boolean;
    /**
     * When true, hides the time based icon button in the menu while still
     * allowing the time based feature to function (e.g. `timeBased` state
     * is still respected and `cx-time-based-change` events can still be
     * emitted programmatically). Set this when the host component wants to
     * expose the time based feature without showing the toggle button.
     */
    hideTimeBasedIcon: boolean;
    /**
     * When true, hides the fullscreen icon button and disables fullscreen
     * toggling entirely. Both the menu button and programmatic calls to
     * `toggleFullscreen()` become no-ops.
     */
    disableFullscreen: boolean;
    private showTextFormats;
    private showLinkPopup;
    private linkTextValue;
    private linkUrlValue;
    private selection;
    constructor();
    private handlePopupOpened;
    private resetLinkValues;
    private handleOutsideClick;
    private handleKeyDown;
    private handleBoldClick;
    private handleItalicClick;
    private handleUnderlineClick;
    private handleStrikeClick;
    private handleBulletListClick;
    private handleOrderedListClick;
    private handleLinkClick;
    private handleLinkPopupOpen;
    private handleLinkPopupSave;
    private handleLinkTextInputChange;
    private handleLinkInputKeyDown;
    private handleLinkUrlInputChange;
    private handleTextFormatsClick;
    private handleTimeBasedClick;
    private handleFullscreenClick;
    private handleOpenAIAssistantClick;
    private handleRecordingClick;
    private handleAttachmentClick;
    private handleLinkPopupCancel;
    handleEditorChange(): void;
    runConnectedCallback(): void;
    disconnectedCallback(): void;
    render(): import('lit').TemplateResult<1> | typeof nothing;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-comment-menu': CxCommentMenu;
    }
    interface GlobalEventHandlersEventMap {
        'cx-attachment-upload': CxAttachmentUploadEvent;
        'cx-comment-fullscreen-toggle': CxCommentFullscreenToggleEvent;
        'cx-recording-start': CxStartRecordingEvent;
        'cx-recording-stop': CxStopRecordingEvent;
    }
}
