declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    /**
     * The ID attribute of the content editable
     */
    id: {
        type: StringConstructor;
        default: () => string;
    };
    /**
     * Visual label of the contenteditable
     */
    label: {
        type: StringConstructor;
        default: string;
    };
    /**
     * The text content
     */
    modelValue: {
        type: StringConstructor;
        required: true;
    };
    /**
     * Placeholder to be shown if empty
     */
    placeholder: {
        type: StringConstructor;
        default: string;
    };
    /**
     * Auto complete function
     */
    autoComplete: {
        type: FunctionConstructor;
        default: () => never[];
    };
    /**
     * The containing element or selector for the tribute (menu popover)
     * Defaults to `body` element
     */
    menuContainer: {
        type: (StringConstructor | {
            new (): Element;
            prototype: Element;
        } | null)[];
        default: null;
    };
    /**
     * Make the contenteditable looks like a textarea or not.
     * Default looks like a single-line input.
     * This also handle the default enter/shift+enter behaviour.
     * if multiline, enter = newline; otherwise enter = submit
     * shift+enter always add a new line. ctrl+enter always submits
     */
    multiline: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Is the content editable ?
     */
    contenteditable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Disable the editing and show specific disabled design
     */
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Max allowed length
     */
    maxlength: {
        type: NumberConstructor;
        default: null;
    };
    /**
     * Enable or disable emoji autocompletion
     */
    emojiAutocomplete: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Enable or disable link autocompletion
     */
    linkAutocomplete: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * CSS class to apply to the root element.
     */
    class: {
        type: (ObjectConstructor | StringConstructor | ArrayConstructor)[];
        default: string;
    };
}>, {
    labelId: string;
    tributeId: string;
    segmenter: Intl.Segmenter;
    /**
     * Non-reactive property to store Tribute instance
     *
     * @type {import('tributejs').default | null}
     */
    tribute: import('tributejs').default<any> | null;
    tributeStyleMutationObserver: null;
}, {
    localValue: string;
    isComposing: boolean;
    isAutocompleteOpen: boolean;
    autocompleteActiveId: undefined;
    isTributeIntegrationDone: boolean;
}, {
    /**
     * Is the current trimmed value empty?
     *
     * @return {boolean}
     */
    isEmptyValue(): boolean;
    /**
     * Is the current value over maxlength?
     *
     * @return {boolean}
     */
    isOverMaxlength(): boolean;
    /**
     * Tooltip to show if characters count is over limit
     *
     * @return {string}
     */
    tooltipString(): string;
    /**
     * Edit is only allowed when contenteditable is:
     * 'true' (all browsers since 2015)
     * 'plaintext-only' (most browsers since 2015, Firefox since 136+)
     *
     * @return {string}
     */
    contenteditableAttributeValue(): string;
    /**
     * Compute debounce function for the autocomplete function
     */
    debouncedAutoComplete(): import('debounce').DebouncedFunction<(search: any, callback: any) => Promise<void>>;
}, {
    /**
     * Focus the richContenteditable
     *
     * @public
     */
    focus(): void;
    initializeTribute(): void;
    getLink(item: any): "<span id=\"tmp-smart-picker-result-node\"></span>";
    setCursorAfter(element: any): void;
    moveCursorToEnd(): void;
    /**
     * Re-emit the input event to the parent
     *
     * @param {Event} event the input event
     */
    onInput(event: Event): void;
    /**
     * When pasting, sanitize the content, extract text
     * and render it again
     *
     * @param {Event} event the paste event
     * @fires Event paste the original paste event
     */
    onPaste(event: Event): void;
    /**
     * Update the value text from the provided html
     *
     * @param {string} htmlOrText - The html content (or raw text with \@mentions)
     */
    updateValue(htmlOrText: string): void;
    /**
     * Update content and local value
     *
     * @param {string} value the message value
     */
    updateContent(value: string): void;
    /**
     * Enter key pressed. Submits if not multiline
     *
     * @param {Event} event the keydown event
     */
    onEnter(event: Event): void;
    /**
     * Ctrl + Enter key pressed is used to submit
     *
     * @param {Event} event the keydown event
     */
    onCtrlEnter(event: Event): void;
    onKeyUp(event: any): void;
    onKeyEsc(event: any): void;
    /**
     * Get HTML element with Tribute.js container
     *
     * @return {HTMLElement}
     */
    getTributeContainer(): HTMLElement;
    /**
     * Get the currently selected item element id in Tribute.js container
     *
     * @return {HTMLElement}
     */
    getTributeSelectedItem(): HTMLElement;
    /**
     * Handle Tribute activation
     *
     * @param {boolean} isActive - is active
     */
    onTributeActive(isActive: boolean): void;
    onTributeArrowKeyDown(): void;
    onTributeSelectedItemWillChange(): void;
    setupTributeIntegration(): void;
    /**
     * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.
     *
     * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class
     * to style selected options in the autocomplete listbox.
     *
     * @param {boolean} withFocusVisible - should the focus-visible class be added
     */
    setTributeFocusVisible(withFocusVisible: boolean): void;
    /**
     * Show tribute menu programmatically.
     *
     * @param {string} trigger - trigger character, can be '/', '@', or ':'
     *
     * @public
     */
    showTribute(trigger: string): void;
    /**
     * Hide tribute menu programmatically
     *
     */
    hideTribute(): void;
}, {
    props: {
        userData: {
            type: ObjectConstructor;
            default: () => {};
        };
    };
    methods: {
        renderContent(value: string): string;
        parseContent(content: string): string;
        genSelectTemplate(value: string): string;
        renderComponentHtml(props: object, component: object): string;
    };
}, import('vue').ComponentOptionsMixin, ("submit" | "paste" | "update:modelValue" | "smartPickerSubmit")[], "submit" | "paste" | "update:modelValue" | "smartPickerSubmit", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    /**
     * The ID attribute of the content editable
     */
    id: {
        type: StringConstructor;
        default: () => string;
    };
    /**
     * Visual label of the contenteditable
     */
    label: {
        type: StringConstructor;
        default: string;
    };
    /**
     * The text content
     */
    modelValue: {
        type: StringConstructor;
        required: true;
    };
    /**
     * Placeholder to be shown if empty
     */
    placeholder: {
        type: StringConstructor;
        default: string;
    };
    /**
     * Auto complete function
     */
    autoComplete: {
        type: FunctionConstructor;
        default: () => never[];
    };
    /**
     * The containing element or selector for the tribute (menu popover)
     * Defaults to `body` element
     */
    menuContainer: {
        type: (StringConstructor | {
            new (): Element;
            prototype: Element;
        } | null)[];
        default: null;
    };
    /**
     * Make the contenteditable looks like a textarea or not.
     * Default looks like a single-line input.
     * This also handle the default enter/shift+enter behaviour.
     * if multiline, enter = newline; otherwise enter = submit
     * shift+enter always add a new line. ctrl+enter always submits
     */
    multiline: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Is the content editable ?
     */
    contenteditable: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Disable the editing and show specific disabled design
     */
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Max allowed length
     */
    maxlength: {
        type: NumberConstructor;
        default: null;
    };
    /**
     * Enable or disable emoji autocompletion
     */
    emojiAutocomplete: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * Enable or disable link autocompletion
     */
    linkAutocomplete: {
        type: BooleanConstructor;
        default: boolean;
    };
    /**
     * CSS class to apply to the root element.
     */
    class: {
        type: (ObjectConstructor | StringConstructor | ArrayConstructor)[];
        default: string;
    };
}>> & Readonly<{
    onSubmit?: ((...args: any[]) => any) | undefined;
    onPaste?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
    onSmartPickerSubmit?: ((...args: any[]) => any) | undefined;
}>, {
    id: string;
    label: string;
    class: string | Record<string, any> | unknown[];
    disabled: boolean;
    placeholder: string;
    multiline: boolean;
    contenteditable: boolean;
    menuContainer: string | Element | null;
    autoComplete: Function;
    maxlength: number;
    emojiAutocomplete: boolean;
    linkAutocomplete: boolean;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
export default _default;
