import { LitElement, PropertyValues, TemplateResult } from 'lit';
import UiListItem from './ListItem.js';
export interface UiListSelection {
    item: HTMLElement;
    index: number;
}
export interface UiListItemsChange {
    items: UiListItem[];
}
/**
 * @fires select - Dispatched when the user click or press `Enter` or `Space` on any active list item.
 *                 The `event.detail` object contains the `item` and `index` properties.
 * @fires itemschange - Dispatched when the list items change, e.g. when the slot changes.
 *                The `event.detail` object contains the `items` property with the list of items.
 */
export default class UiList extends LitElement {
    /**
     * The computed list of list items to render.
     */
    accessor items: UiListItem[];
    activeListItem: UiListItem | null;
    highlightListItem: UiListItem | null;
    /**
     * The CSS selector that is used to recognize which items are
     * active list items (can be selected, focused, etc.)
     * @attribute
     */
    accessor selector: string;
    /**
     * When set it marks last activated list item as selected.
     * @attribute
     */
    accessor selectActive: boolean | undefined;
    protected accessor assignedElements: HTMLElement[];
    constructor();
    connectedCallback(): void;
    focus(options?: FocusOptions): void;
    firstUpdated(changedProperties: PropertyValues): void;
    activateFirstItem(): void;
    activateLastItem(): void;
    resetActiveListItem(): void;
    protected updateItems(): void;
    /**
     * @return Whether the given element is a list item element.
     */
    protected isListItem(element: Element): element is UiListItem;
    getFirstItem(): UiListItem;
    getLastItem(): UiListItem;
    getPreviousItem(item: UiListItem): UiListItem;
    getNextItem(item: UiListItem): UiListItem;
    protected isSelectable(element: HTMLElement): boolean;
    protected isListItemActive(item: UiListItem): boolean;
    protected deactivateListItem(item: UiListItem): void;
    protected activateListItem(item?: UiListItem | null): void;
    handleKeydown(event: KeyboardEvent): void;
    activateFirst(): void;
    activateLast(): void;
    activateNext(item?: UiListItem | null): void;
    activatePrevious(item?: UiListItem | null): void;
    /**
     * Sets `highlight` class on the next item.
     * @param item When not set it highlights the first item. Default to `this.highlightListItem`.
     *             Pass `null` to select first item.
     */
    highlightNext(item?: UiListItem | null): void;
    /**
     * Sets `highlight` class on the previous item.
     * @param item When not set it highlights the last item. Default to `this.highlightListItem`.
     *             Pass `null` to select last item.
     */
    highlightPrevious(item?: UiListItem | null): void;
    highlightFirst(): void;
    highlightLast(): void;
    handleClick(event: MouseEvent): void;
    protected highlightItem(item?: UiListItem | null): void;
    /**
     * Activates a list item from an Event.
     * Activate means dispatches a non-bubbling CustomEvent with the item in the detail.
     */
    protected activateFromEvent(e: Event): void;
    /**
     * @param item The UiListItem that is selected.
     * @returns True when the event was canceled.
     */
    notifySelect(item: UiListItem): boolean;
    protected manageSelection(item: UiListItem): void;
    render(): TemplateResult;
}
//# sourceMappingURL=List.d.ts.map