import { SelectionMode } from '../../../Types/SelectionMode';
import { SelectorElement } from '../Abstracts/Selector/SelectorElement';
import type { IListElementProps } from './IListElementProps';
import { ListItemElement } from './ListItemElement';
import { ListElementIntl } from './ListElementIntl';
declare const ListElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Filterable").IFilterableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Insetable").IInsetableProps) & (abstract new () => SelectorElement<any>) & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * List - A versatile container component for displaying collections of interactive items in organized layouts.
 *
 * Presents ordered or unordered collections of related content items with support for selection,
 * filtering, grouping, and navigation. Optimized for accessibility and keyboard interaction
 * with flexible styling options for various content types.
 *
 * @name ListElement
 * @element mosaik-list
 * @category Selectors
 *
 * @slot - Default content area for list items and groups
 * @slot filter - Filter controls and search functionality area
 * @slot empty - Empty state content when no items are available
 * @slot header - Header content above the list items
 * @slot footer - Footer content below the list items
 *
 * @csspart items - Container for all list items
 * @csspart filter - Filter controls container
 * @csspart empty - Empty state container
 *
 * @cssprop --list-padding - Internal padding for the list container
 * @cssprop --list-item-spacing - Vertical spacing between list items
 * @cssprop --list-background - Background color for the list
 * @cssprop --list-border-radius - Border radius for list styling
 * @cssprop --list-max-height - Maximum height before scrolling activates
 * @cssprop --list-scrollbar-width - Width of the scrollbar
 *
 * @keyhandle ArrowUp - Navigates to the previous item
 * @keyhandle ArrowDown - Navigates to the next item
 * @keyhandle Home - Navigates to the first item
 * @keyhandle End - Navigates to the last item
 * @keyhandle Space - Toggles selection of the focused item
 * @keyhandle Enter - Activates the focused item
 *
 * @dependency ListItemElement - For individual selectable items within the list
 * @dependency ListItemGroupElement - For organizing items into logical groups
 * @dependency TextBoxElement - For search and filter functionality
 * @dependency SpacerElement - For layout spacing between groups
 *
 * @example
 * ```html
 * <!-- Simple navigation list -->
 * <mosaik-list>
 *   <mosaik-list-item value="dashboard">
 *     <mosaik-icon slot="prefix" data="home"></mosaik-icon>
 *     Dashboard
 *   </mosaik-list-item>
 *   <mosaik-list-item value="analytics">
 *     <mosaik-icon slot="prefix" data="chart-bar"></mosaik-icon>
 *     Analytics
 *   </mosaik-list-item>
 *   <mosaik-list-item value="settings">
 *     <mosaik-icon slot="prefix" data="cog"></mosaik-icon>
 *     Settings
 *   </mosaik-list-item>
 * </mosaik-list>
 *
 * <!-- Multi-select list with filtering -->
 * <mosaik-list selection-mode="multiple" filterable="true">
 *   <mosaik-text-box slot="filter" placeholder="Search contacts..." />
 *   <mosaik-list-item-group label="Favorites">
 *     <mosaik-list-item value="john">
 *       <mosaik-avatar slot="prefix" src="john.jpg"></mosaik-avatar>
 *       John Smith
 *       <mosaik-text slot="suffix">john@example.com</mosaik-text>
 *     </mosaik-list-item>
 *   </mosaik-list-item-group>
 *   <mosaik-list-item-group label="Colleagues">
 *     <mosaik-list-item value="jane">Jane Doe</mosaik-list-item>
 *     <mosaik-list-item value="mike">Mike Johnson</mosaik-list-item>
 *   </mosaik-list-item-group>
 * </mosaik-list>
 *
 * <!-- Action list with descriptions -->
 * <mosaik-list>
 *   <mosaik-list-item value="export">
 *     <mosaik-icon slot="prefix" data="download"></mosaik-icon>
 *     Export Data
 *     <mosaik-text slot="suffix" variant="caption">Download your data as CSV</mosaik-text>
 *   </mosaik-list-item>
 *   <mosaik-list-item value="import">
 *     <mosaik-icon slot="prefix" data="upload"></mosaik-icon>
 *     Import Data
 *     <mosaik-text slot="suffix" variant="caption">Upload data from file</mosaik-text>
 *   </mosaik-list-item>
 * </mosaik-list>
 *
 * <!-- List with empty state -->
 * <mosaik-list>
 *   <mosaik-empty-state slot="empty">
 *     <mosaik-icon slot="icon" data="inbox"></mosaik-icon>
 *     <mosaik-text slot="header">No items found</mosaik-text>
 *     <mosaik-text slot="content">Add some items to get started</mosaik-text>
 *   </mosaik-empty-state>
 * </mosaik-list>
 * ```
 *
 * @public
 */
export declare class ListElement extends ListElement_base implements IListElementProps {
    private readonly _itemsClickSubscriptions;
    private readonly _intlController;
    private _selectionMode;
    private _value;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @override
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `selectionMode` property.
     *
     * @public
     * @attr
     */
    get selectionMode(): SelectionMode;
    set selectionMode(value: SelectionMode);
    /**
     * Gets or sets the `value` property.
     *
     * @public
     * @attr
     */
    get value(): string | null;
    set value(value: string | null);
    /**
     * Gets all the list items in the list.
     *
     * @public
     * @override
     */
    get items(): Array<ListItemElement>;
    /**
     * Returns the `intl` property.
     *
     * @public
     * @readonly
     */
    get intl(): ListElementIntl;
    /**
     * @protected
     * @override
     */
    protected onItemsChanged(): void;
    /**
     * @protected
     */
    protected onSelectionModePropertyChanged(prev?: SelectionMode, next?: SelectionMode): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChanged(_?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onFilterPropertyChanged(_?: string, next?: string): void;
    /**
     * @private
     */
    private onSelectItem;
}
/**
 * @public
 */
export declare namespace ListElement {
    type Props = IListElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-list': ListElement;
    }
}
export {};
//# sourceMappingURL=ListElement.d.ts.map