import { ItemsElement } from '../Abstracts/Items/ItemsElement';
import type { ITableCellSortChangedEventDetail } from '../Table/Events/ITableCellSortChangedEventDetail';
import type { IDataTableColumnDefinition } from './IDataTableColumnDefinition';
import type { IDataTableElementProps } from './IDataTableElementProps';
declare const DataTableElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & typeof ItemsElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Data Table - A structured representation of tabular data, often used to display data in rows and columns.
 *
 * @element mosaik-data-table
 *
 * @public
 */
export declare class DataTableElement extends DataTableElement_base implements IDataTableElementProps {
    private _alternating;
    private _autoGenerateColumns;
    private _columnDefinitions;
    private _sorted;
    private _sortedSource;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @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 `autoGenerateColumns` property.
     *
     * @public
     * @attr
     */
    get autoGenerateColumns(): boolean;
    set autoGenerateColumns(value: boolean);
    /**
     * Gets or sets the `columnDefinitions` property.
     *
     * @public
     */
    get columnDefinitions(): Array<IDataTableColumnDefinition>;
    set columnDefinitions(value: Array<IDataTableColumnDefinition>);
    /**
     * Gets a `boolean` that indecates the table header is sorted or not.
     * Returns `true` if the table header is sorted, otherwise `false`.
     *
     * @public
     * @readonly
     * @attr
     */
    get sorted(): boolean;
    /**
     * @public
     * @readonly
     */
    get sortedSource(): Array<object>;
    /**
     * @protected
     * @override
     */
    protected onSourceChanged(prev: Array<object>, next: Array<object>): void;
    /**
     * @template
     * @private
     */
    getColumns(): Array<IDataTableColumnDefinition>;
    /**
     * @template
     * @private
     */
    onSortChanged(e: CustomEvent<ITableCellSortChangedEventDetail>): void;
    /**
     * @private
     */
    private sortByColumn;
}
/**
 * @public
 */
export declare namespace DataTableElement {
    type Props = IDataTableElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-data-table': DataTableElement;
    }
}
export {};
//# sourceMappingURL=DataTableElement.d.ts.map