import { ItemsElement } from '../Abstracts/Items/ItemsElement';
import { IDataListElementProps } from './IDataListElementProps';
import type { IDataListItemDefinition } from './IDataListItemDefinition';
declare const DataListElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new () => ItemsElement<{}>) & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Data List - A structured list component for displaying tabular data with configurable columns.
 *
 * @description
 * The Data List component provides a flexible way to display tabular data in a list format.
 * It supports dynamic item definitions with configurable columns, alternating row styles, and
 * data binding from various sources. Each row is rendered as a list item with cells corresponding
 * to the defined item definitions. The component is ideal for displaying structured data sets
 * where each record has multiple fields that need to be presented in a consistent format.
 *
 * @name Data List
 * @element mosaik-data-list
 * @category Selectors
 *
 * @csspart list - The inner list container element
 *
 * @dependency {ListElement} - The underlying list component for rendering rows
 * @dependency {TextElement} - Text rendering component for cell content
 *
 * @fires connected {ConnectedEvent} - Fired when the data list is connected to the DOM
 * @fires changed {PropertyChangedEvent} - Fired when data list properties change
 *
 * @example
 * Basic data list with item definitions:
 * ```html
 * <mosaik-data-list id="userList"></mosaik-data-list>
 * <script>
 *   const list = document.getElementById('userList');
 *   list.itemDefinitions = [
 *     { key: 'name', path: 'name' },
 *     { key: 'email', path: 'email' },
 *     { key: 'role', path: 'role' }
 *   ];
 *   list.source = [
 *     { name: 'John Doe', email: 'john@example.com', role: 'Admin' },
 *     { name: 'Jane Smith', email: 'jane@example.com', role: 'User' }
 *   ];
 * </script>
 * ```
 *
 * @example
 * Data list with alternating rows:
 * ```html
 * <mosaik-data-list alternating id="products"></mosaik-data-list>
 * <script>
 *   const list = document.getElementById('products');
 *   list.itemDefinitions = [
 *     { key: 'sku', path: 'sku' },
 *     { key: 'product', path: 'name' },
 *     { key: 'price', path: 'price' }
 *   ];
 *   list.source = productData;
 * </script>
 * ```
 *
 * @public
 */
export declare class DataListElement extends DataListElement_base implements IDataListElementProps {
    private _alternating;
    private _itemDefinitions;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `alternating` property.
     *
     * @public
     * @attr
     */
    get alternating(): boolean;
    set alternating(value: boolean);
    /**
     * Gets or sets the `itemDefinitions` property.
     *
     * @public
     */
    get itemDefinitions(): Array<IDataListItemDefinition>;
    set itemDefinitions(value: Array<IDataListItemDefinition>);
    /**
     * @template
     * @private
     */
    getItemDefinitions(): Array<IDataListItemDefinition>;
}
/**
 * @public
 */
export declare namespace DataListElement {
    type Props = IDataListElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-data-list': DataListElement;
    }
}
export {};
//# sourceMappingURL=DataListElement.d.ts.map