import { Editor } from '@tiptap/core';
import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
import { default as CxDialog } from '../../../atoms/src/components/dialog/dialog.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 CxGrid } from '../../../atoms/src/components/grid/grid.ts';
import { default as CxGridItem } from '../../../atoms/src/components/grid-item/grid-item.ts';
import { default as CxIcon } from '../../../atoms/src/components/icon/icon.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 CxMenu } from '../../../atoms/src/components/menu/menu.ts';
import { default as CxMenuItem } from '../../../atoms/src/components/menu-item/menu-item.ts';
import { default as CxMenuLabel } from '../../../atoms/src/components/menu-label/menu-label.ts';
import { default as CxOption } from '../../../atoms/src/components/option/option.ts';
import { default as CxPopup } from '../../../atoms/src/components/popup/popup.ts';
import { default as CxRadioButton } from '../../../atoms/src/components/radio-button/radio-button.ts';
import { default as CxRadioGroup } from '../../../atoms/src/components/radio-group/radio-group.ts';
import { default as CxSelect } from '../../../atoms/src/components/select/select.ts';
import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
import { default as CxSpinner } from '../../../atoms/src/components/spinner/spinner.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 { TextToSpeechData, Voice } from '../../../types/src/text-to-speech';
import { TemplateResult } from 'lit';

/**
 * @summary Text-to-speech component with rich text editing and voice synthesis capabilities.
 *
 * @event cx-change - Emitted when the color picker’s value changes.
 */
export default class CxTextToSpeech extends CortexElement {
    static readonly styles: import('lit').CSSResult[];
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-dialog': typeof CxDialog;
        'cx-divider': typeof CxDivider;
        'cx-dropdown': typeof CxDropdown;
        'cx-grid': typeof CxGrid;
        'cx-grid-item': typeof CxGridItem;
        'cx-icon': typeof CxIcon;
        'cx-icon-button': typeof CxIconButton;
        'cx-input': typeof CxInput;
        'cx-menu': typeof CxMenu;
        'cx-menu-item': typeof CxMenuItem;
        'cx-menu-label': typeof CxMenuLabel;
        'cx-option': typeof CxOption;
        'cx-popup': typeof CxPopup;
        'cx-radio-button': typeof CxRadioButton;
        'cx-radio-group': typeof CxRadioGroup;
        'cx-select': typeof CxSelect;
        'cx-space': typeof CxSpace;
        'cx-spinner': typeof CxSpinner;
        'cx-tooltip': typeof CxTooltip;
        'cx-typography': typeof CxTypography;
    };
    private readonly localize;
    private readonly acceptedFileTypes;
    private readonly textEditorContainer;
    private readonly form;
    private readonly bubbleMenu;
    private readonly importDialog;
    private readonly fileInput;
    private readonly container;
    data: TextToSpeechData | null;
    editable: boolean;
    autoFocus: boolean;
    recordId: string;
    fileName: string;
    componentTitle: string;
    height: undefined;
    width: undefined;
    maxHeight: string;
    maxWidth: undefined;
    minWidth: undefined;
    minHeight: string;
    mock: boolean;
    disabledMessage: string;
    characterLimit: number;
    textEditor: Editor;
    private voices;
    private _voice;
    get voice(): string;
    private gender;
    private language;
    private speed;
    private audio;
    private isSpeaking;
    private loading;
    private previewLoading;
    private lastPosition;
    private isSelectionEmpty;
    private bubbleMenuType;
    private timeCode;
    private savedData;
    private isEventListenerAdded;
    /**
     * Whether previous job(s) is unfinished.
     */
    private _isPreviousJobUnfinished;
    get isPreviousJobUnfinished(): boolean;
    private _isTextSupportedOnly;
    get isTextSupportedOnly(): boolean;
    private _unsupportedSsmlTags;
    get unsupportedSsmlTags(): string[];
    private _selectedVoice;
    get selectedVoice(): Voice | null;
    private readonly provider;
    get 'is-unsaved'(): boolean | null;
    get isUnsaved(): boolean | null;
    get 'current-data'(): TextToSpeechData;
    get currentData(): TextToSpeechData;
    constructor();
    runFirstUpdated(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    emitChangeEvent(): void;
    private isSsmlDataNotChanged;
    private saveData;
    private onKeyDown;
    private onBubbleMenuOpened;
    private fetchJobStatus;
    resetAudio(): void;
    handleDataChange(): void;
    handleVoicesChange(): void;
    handleVoiceChange(): Promise<void>;
    handleRecordIdChange(): void;
    handleDisabledChange(): void;
    private handleSubmit;
    openImportDialog(event: any): void;
    closeImportDialog(): void;
    confirmImport(): void;
    private onAudioTimeUpdate;
    private onAudioEnded;
    pauseAudio(): void;
    endAudio(): void;
    playAudio(): void;
    startNewAudio(blob: Blob): void;
    addAudioEventListeners(): void;
    removeAudioEventListeners(): void;
    private getEditorHTML;
    private getSelectedHTML;
    speak(): Promise<void>;
    private clearInput;
    private loadContentFromFile;
    saveSSML(): Promise<void>;
    private handleInsertBreak;
    private handleChangeBreakValue;
    private handleBreakKeydown;
    private handleBreakChange;
    private handleBreakUnitChange;
    private handleVoiceSelectChange;
    private handleSpeedChange;
    private handleContainerClick;
    private renderControls;
    private renderBreakControls;
    private renderBreakMenu;
    private renderSayAsMenu;
    private renderPreviewButtonContent;
    private renderTimeCode;
    private renderGlobalControls;
    private renderInfo;
    private renderImportFileConfirmDialog;
    private renderPreviousJobStatus;
    render(): TemplateResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-text-to-speech': CxTextToSpeech;
    }
}
