import { ESLScrollbar } from '../../../esl-scrollbar/core';
import { ESLSelectItem } from './esl-select-item';
import { ESLSelectWrapper } from './esl-select-wrapper';
/**
 * ESLSelectList component
 * @author Alexey Stsefanovich (ala'n)
 *
 * ESLSelectList is a component to show selectable list of items. Decorates native HTMLSelectElement
 */
export declare class ESLSelectList extends ESLSelectWrapper {
    static readonly is = "esl-select-list";
    static observedAttributes: string[];
    static register(): void;
    /** Select all options text */
    selectAllLabel: string;
    /** Disabled state marker */
    disabled: boolean;
    /** Marker for selecting items to be pinned to the top of the list */
    pinSelected: boolean;
    protected $items: ESLSelectItem[];
    protected $list: HTMLDivElement;
    protected $scroll: ESLScrollbar;
    protected $selectAll: ESLSelectItem;
    constructor();
    protected attributeChangedCallback(attrName: string, oldVal: string, newVal: string): void;
    protected connectedCallback(): void;
    protected disconnectedCallback(): void;
    protected bindSelect(): void;
    protected _renderItems(): void;
    protected _renderGroup(items: ESLSelectItem[]): void;
    protected _updateSelectAll(): void;
    protected _updateDisabled(): void;
    protected _onTargetChange(newTarget: HTMLSelectElement | undefined, oldTarget: HTMLSelectElement | undefined): void;
    _onChange(): void;
    _onListChange(): void;
    protected _onClick(e: MouseEvent | KeyboardEvent): void;
    protected _onKeydown(e: KeyboardEvent): void;
}
declare global {
    export interface ESLLibrary {
        SelectList: typeof ESLSelectList;
    }
    export interface HTMLElementTagNameMap {
        'esl-select-list': ESLSelectList;
    }
}
