import { ListSeparator } from '../list-item/list-item.types';
import { Option } from '../select/option.types';
/**
 * @exampleComponent limel-example-select-basic
 * @exampleComponent limel-example-select-with-icons
 * @exampleComponent limel-example-select-with-separators
 * @exampleComponent limel-example-select-with-secondary-text
 * @exampleComponent limel-example-select-multiple
 * @exampleComponent limel-example-select-multiple-icons
 * @exampleComponent limel-example-select-with-empty-option
 * @exampleComponent limel-example-select-preselected
 * @exampleComponent limel-example-select-change-options
 * @exampleComponent limel-example-select-dialog
 */
export declare class Select {
    /**
     * Set to `true` to make the field disabled.
     * and visually shows that the `select` component is editable but disabled.
     * This tells the users that if certain requirements are met,
     * the component may become interactable.
     */
    disabled: boolean;
    /**
     * Set to `true` to make the field read-only.
     * This visualizes the component slightly differently.
     * But shows no visual sign indicating that the component is disabled
     * or can ever become interactable.
     */
    readonly: boolean;
    /**
     * Set to `true` to indicate that the current value of the select is
     * invalid.
     */
    invalid: boolean;
    /**
     * True if the control requires a value.
     */
    required: boolean;
    /**
     * Text to display next to the select.
     */
    label: string;
    /**
     * Optional helper text to display below the input field when it has focus.
     */
    helperText: string;
    /**
     * Currently selected value or values.
     * If `multiple` is `true`, this must be an array. Otherwise it must be a
     * single value.
     */
    value: Option | Option[];
    /**
     * List of options.
     */
    options: Array<Option | ListSeparator>;
    /**
     * Set to `true` to allow multiple values to be selected.
     */
    multiple: boolean;
    /**
     * Emitted when the value is changed.
     */
    private change;
    private host;
    private menuOpen;
    private hasChanged;
    protected resetHasChanged(): void;
    private checkValid;
    private mdcSelectHelperText;
    private mdcFloatingLabel;
    private isMobileDevice;
    private portalId;
    private focusObserver;
    private focusTimeoutId;
    constructor();
    connectedCallback(): void;
    componentWillLoad(): void;
    componentDidLoad(): void;
    private initialize;
    disconnectedCallback(): void;
    componentDidUpdate(): void;
    render(): any;
    protected watchOpen(newValue: boolean, oldValue: boolean): void;
    private setMenuFocus;
    private cancelPendingFocus;
    private focusFirstMenuItem;
    private setTriggerFocus;
    private getAnchorElement;
    private updatePortalAnchor;
    private handleMenuChange;
    private openMenu;
    private getFirstNativeAutoSelectOption;
    private closeMenu;
    private handleMenuTriggerKeyPress;
    private handleNativeChange;
    private getOptionsExcludingSeparators;
}
//# sourceMappingURL=select.d.ts.map