import { ESLSelectWrapper } from '../../esl-select-list/core/esl-select-wrapper';
import { ESLSelectRenderer } from './esl-select-renderer';
import { ESLSelectDropdown } from './esl-select-dropdown';
/**
 * ESLSelect component
 * @author Alexey Stsefanovich (ala'n)
 *
 * ESLSelect is a component on top of native select that brings more customization features.
 * Uses "select with dropdown" view. Supports both single and multiple selection.
 */
export declare class ESLSelect extends ESLSelectWrapper {
    static readonly is = "esl-select";
    static observedAttributes: string[];
    static register(): void;
    /** Placeholder text property */
    placeholder: string;
    /** Class(es) to mark not empty state */
    hasValueClass: string;
    /** Class(es) for focused state. Select is also focused if the dropdown list is opened */
    hasFocusClass: string;
    /** Class(es) for select dropdown */
    dropdownClass: string;
    /** Select all options text */
    selectAllLabel: string;
    /**
     * Text to add when there is not enough space to show all selected options inline,
     * Supports `{rest}`, `{length}` and `{limit}` placeholders
     */
    moreLabelFormat: string;
    /** Dropdown open marker */
    open: boolean;
    /** Disabled state marker */
    disabled: boolean;
    /** Marker for selecting items to be pinned to the top of the dropdown */
    pinSelected: boolean;
    protected $renderer: ESLSelectRenderer;
    protected $dropdown: ESLSelectDropdown;
    constructor();
    protected attributeChangedCallback(attrName: string, oldVal: string, newVal: string): void;
    protected connectedCallback(): void;
    protected disconnectedCallback(): void;
    /** Catches the focus */
    focus(options?: FocusOptions): void;
    /** Updates select component */
    update(valueChanged?: boolean): void;
    protected _prepare(): void;
    protected _dispose(): void;
    protected _updateMarkers(): void;
    protected _updateDisabled(): void;
    protected _onChange(event: Event): void;
    protected _onFocusOut(): void;
    protected _onClick(): void;
    protected _onKeydown(e: KeyboardEvent): void;
    protected _onPopupStateChange(e: CustomEvent): void;
}
declare global {
    export interface ESLLibrary {
        Select: typeof ESLSelect;
    }
    export interface HTMLElementTagNameMap {
        'esl-select': ESLSelect;
    }
}
