import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import type { Dropdown } from '../dropdown/dropdown';
import type { OptionInterface } from '../option/option-interface';
/**
 * Represents a permissible or recommended list of options available to choose from within other controls.
 *
 * @version 2.0.0
 * @status stable
 *
 * @slot - use `<nano-option>` elements for more complex html. Alternatively use the `options` prop
 * @slot list-top - shows at the top of the list when there are options present
 * @slot list-bottom - shows at the bottom of the list when there are options present
 * @slot no-result - shown when there are no results otherwise nothing will be shown
 *
 * @part dropdown - the wrapping `nano-dropdown` element
 * @part main-menu - the main `nano-menu` element that holds the options
 * @part no-result-menu - the `nano-menu` element that holds the no results content
 */
export declare class DataList implements ComponentInterface {
    private isNanoInput;
    private typeToSelect;
    private typeToSelectTimeout;
    private nanoDropdown;
    private listBox;
    private mo?;
    private listId;
    private isFiltered;
    private shouldFocus;
    private get allOptEles();
    private set allOptEles(value);
    private _allOptEles;
    host: HTMLNanoDatalistElement;
    actvOptEles: HTMLNanoOptionElement[];
    connectedInput: HTMLInputElement | HTMLTextAreaElement;
    inputLabel: HTMLLabelElement;
    hasNoResult: boolean;
    shouldOpen: boolean;
    canOpen: boolean;
    optionIds: string[];
    constructor();
    /** By default, items in the list will appear 'selected' when the value in the linked input control matches.
     * However you can add other selected options via the the selected prop. */
    selected: string[];
    /** nano-dropdown config options you can pass to the nested dropdown component */
    get dropDownConfig(): Partial<Dropdown>;
    set dropDownConfig(ddc: Partial<Dropdown>);
    private _dropDownConfig;
    /** Provide an option list.
     * Options can be defined declaratively by nesting `<nano-option>` elements or imperatively using this prop */
    options?: OptionInterface[];
    /** A selector to a HTMLInputElement */
    input?: string | HTMLInputElement;
    /** Tweaks the datalist behaviour and linked control semantics and behaviour.
     * e.g. 'select' will make the linked input control `readonly`.
     */
    type: 'select' | 'selectMulti' | 'input';
    /** return all the active options currently within the datalist. Can be useful for validation */
    get activeOptions(): HTMLNanoOptionElement[];
    /** Force datalist open */
    open: boolean;
    openWatcher(): void;
    /** Use this option to disable to default filtering. This is useful if filtering happens
     * externally via another method (e.g. via ajax)
     */
    disableFilter: boolean;
    /** Activate / deactivate the datalist control */
    disabled: boolean;
    watchInputChange(): Promise<void>;
    handleOptionsChange(): void;
    watchTypeChange(): void;
    manageInputEvents(newInput?: HTMLInputElement, oldInput?: HTMLInputElement): void;
    watchActvOptChange(): void;
    manageCanOpen(): void;
    /**
     * Opens the dropdown if it can, it should and there are items to display.
     */
    manageDropdownDisplay(): void;
    fireActiveOptsEvent(): void;
    /** Fired when an item is selected. */
    nanoSelect: EventEmitter<HTMLNanoOptionElement>;
    /** Fired when a currently selected item is reselected. */
    nanoDeselect: EventEmitter<HTMLNanoOptionElement>;
    /** Fired when active options change */
    nanoOptionsUpdated: EventEmitter<HTMLNanoOptionElement[]>;
    private isSelected;
    private get dropwdownOpen();
    private get exactMatch();
    /** reflect value back to the connected input unless the event is cancelled */
    private changeInputValue;
    private optSelected;
    private setOptStartsWith;
    private removeEventListeners;
    private processSlottedContent;
    private handleShow;
    private handleHide;
    private inputChange;
    private inputClick;
    private inputKeydown;
    private optionKeyDown;
    connectedCallback(): void;
    componentDidLoad(): void;
    componentDidRender(): void;
    disconnectedCallback(): void;
    render(): any;
}
