/**
 * Copyright (c) Cisco Systems, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 */
import "../help-text/HelpText";
import "../icon/Icon";
import { LitElement, nothing, PropertyValues, TemplateResult } from "lit";
export declare namespace ComboBox {
    type OptionMember = {
        [key: string]: string;
    };
    export type MessageType = "error" | "success" | "warning";
    export type Message = {
        type: MessageType;
        message: string;
        id?: string;
        ariaLive?: "off" | "assertive" | "polite";
    };
    export class MessageController {
        determineMessageType(array: ComboBox.Message[]): MessageType;
        filterMessagesByType(array: ComboBox.Message[], value: string): string[];
    }
    const ELEMENT_base: import("../../mixins/FocusMixin").FocusMixinReturnType<typeof LitElement>;
    export class ELEMENT extends ELEMENT_base {
        private _focusedIndex;
        private _focusedGroupIndex;
        label: string;
        options: (string | OptionMember)[];
        customOptions: never[];
        placeholder: string;
        isMulti: boolean;
        useVirtualScroll: boolean;
        disabled: boolean;
        ordered: boolean;
        expanded: boolean;
        groupExpandedList: any;
        searchItem: boolean;
        compact: boolean;
        noClearIcon: boolean;
        selectWhenInFocus: boolean;
        selectedOptions: (string | OptionMember)[];
        visibleOptions: number;
        optionId: string;
        optionValue: string;
        isCustomContent: boolean;
        searchable: boolean;
        shape: string;
        value: (string | OptionMember)[];
        inputValue: string;
        allowCustomValue: boolean;
        autofocus: boolean;
        resultsTextLocalization: string;
        optionsTextLocalization: string;
        trimSpace: boolean;
        invalid: boolean;
        invalidText: string;
        ariaLabel: string;
        searchResultAriaLabel: string;
        private ariaLabelForComboBox;
        clearAriaLabel: string;
        arrowAriaLabel: string;
        clearIconHeight: string;
        allTextLocalization: string;
        selectAllTextLocalization: string;
        selectedTextLocalization: string;
        allowSelectAll: boolean;
        showCustomError: boolean;
        showLoader: boolean;
        showSelectedCount: boolean;
        popupChevronAriaHidden: string;
        newMomentum: boolean;
        showFilterIcon: boolean;
        preventFilter: boolean;
        /**
         * When using the new momentum style sets whether to use the new combobox style arrow
         * or the arrow not in a div what a border to the right. This will be used for filter dropdowns
         * that were implemented using a combobox
         */
        isDropdownArrow: boolean;
        comboboxId: string;
        helpText: string;
        messageArr: ComboBox.Message[];
        htmlId: string;
        readOnly: boolean;
        private readonly messageController;
        private isOptGroup;
        private isSelectAllChecked;
        get focusedIndex(): number;
        set focusedIndex(index: number);
        updateFocusedIndex(index: number): void;
        get focusedGroupIndex(): number;
        set focusedGroupIndex(index: number);
        get messageType(): ComboBox.MessageType | null;
        get messages(): string[] | null;
        private multiSelectedIndex;
        private multiSelected;
        private customContent;
        private notifySearchResultCount;
        group?: HTMLDivElement;
        input?: HTMLInputElement;
        button?: HTMLButtonElement;
        listBox?: HTMLDivElement;
        virtualizer?: any;
        lists?: HTMLDivElement[];
        labels?: HTMLDivElement[];
        selected?: HTMLDivElement[];
        protected firstUpdated(changedProperties: PropertyValues): void;
        protected updated(changedProperties: PropertyValues): void;
        protected handleFocusIn(event: Event): void;
        protected handleFocusOut(event: Event): void;
        private findFilteredOption;
        private setInitialValue;
        private isOptionObject;
        private setOptionCustomContent;
        private getOptionValue;
        private getOptionGroupName;
        private getOptionId;
        private getFocusedItem;
        private setupEvents;
        private teardownEvents;
        private setVisualListbox;
        private setGroupList;
        private findSelectedOption;
        private findOptionIndex;
        private checkSelectedOptions;
        private unCheckAllOptions;
        private setSelectedOption;
        private notifySelectedChange;
        private handleGroupFilter;
        private filterOptions;
        private getListBoxVerticalPadding;
        private resizeListbox;
        private setInputValue;
        private updateOnNextFrame;
        private unCheckedAllOptions;
        private unCheckedOption;
        private checkAllOptions;
        private checkOption;
        private isSelectAllSelected;
        private setFocusOnHost;
        private isOptionFocused;
        private getAriaState;
        private scrollToOption;
        private getCustomContentName;
        private setInputSelectionRange;
        private isOptionChecked;
        private getInputSelection;
        private canMultiSelect;
        private removeMultiTag;
        private unselectedAllMultiTag;
        private findLastMultiSelected;
        private toggleMultiSelectedTag;
        private selectMultiTag;
        handleListClick(event: MouseEvent): Promise<void>;
        handleSelectAll(): Promise<void>;
        handleInputKeyUp(event: KeyboardEvent): void;
        private notifyInputValueChanged;
        handleInput(event: Event): void;
        private removeAllSelected;
        private removeSelected;
        private selectedChange;
        private setSelectedAttribute;
        private shouldChangeButton;
        private setCustomValue;
        handleGroupFocus(): void;
        handleInputKeyDown(event: KeyboardEvent): void;
        handleGroupLabelKeyDown(event: KeyboardEvent, option: OptionMember): void;
        toggleVisualListBox(e: any): void;
        toggleGroupListBox(e: Event, data: string): void;
        handleRemoveAll(event: MouseEvent): void;
        handleOutsideClick: (event: MouseEvent) => void;
        connectedCallback(): void;
        disconnectedCallback(): void;
        static get styles(): import("lit").CSSResult[];
        get listItemOptionMap(): {
            "md-combobox-multiselect": boolean;
            compact: boolean;
            "md-combobox-dropdown-arrow": boolean;
        };
        get filteredOptions(): (string | OptionMember)[];
        get filteredGroupOptions(): (string | OptionMember)[];
        get comboBoxTemplateClassMap(): {
            [x: string]: boolean;
            "md-combobox-searchable": boolean;
            "md-combobox-has-leading-icon": boolean;
            "md-new-combobox": boolean;
            "md-combobox-readonly": boolean;
            "md-combobox-compact": boolean;
            "md-combobox-dropdown-arrow": boolean;
        };
        searchIconTemplate(): TemplateResult<1>;
        filterIconTemplate(): TemplateResult<1>;
        leadingIconTemplate(iconName: string, iconClass: string): TemplateResult<1>;
        selectedOptionTemplate(selectedOption: string | OptionMember): TemplateResult<1>;
        clearButtonTemplate(): TemplateResult<1>;
        arrowButtonTemplate(): TemplateResult<1>;
        groupArrowButtonTemplate(data: string): TemplateResult<1>;
        getSelectAllOption(): TemplateResult<1>;
        getSelctedCount(): TemplateResult<1> | typeof nothing;
        checkForVirtualScroll(): boolean;
        rangeChanged(): void;
        getCustomErrorContent(): DocumentFragment;
        getCustomContent(option: string | OptionMember): DocumentFragment | TemplateResult<1>;
        renderGroupLabelHeader(option: OptionMember, optionIndex: number): TemplateResult<1>;
        renderWithoutVirtualScroll(): unknown;
        highlightingSearchedText(option: OptionMember | string): TemplateResult<1>[];
        addStyle(): import("lit-html/directive.js").DirectiveResult<typeof import("lit-html/directives/style-map.js").StyleMapDirective>;
        renderItem(option: OptionMember | string, index: number): TemplateResult;
        inputTitle(): string;
        helpTextTemplate(): TemplateResult<1> | typeof nothing;
        messagesTemplate(): TemplateResult<1> | typeof nothing;
        get newArrowButtonTemplate(): TemplateResult<1>;
        get renderNewMomentumArrow(): TemplateResult;
        get renderTrailingInputControls(): TemplateResult;
        private get renderVirtualScroll();
        render(): TemplateResult<1>;
    }
    export {};
}
declare global {
    interface HTMLElementTagNameMap {
        "md-combobox": ComboBox.ELEMENT;
    }
}
