import type { ITableSortChangedEventDetail } from '../../../events';
import { ItemsElement } from '../Abstracts/Items/ItemsElement';
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) & (abstract new () => ItemsElement<{}>) & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * DataTable - A comprehensive data presentation component for displaying structured information in rows and columns.
 *
 * Provides advanced data table functionality including sorting, filtering, pagination, and selection
 * capabilities. Designed for displaying large datasets with efficient rendering and user interaction
 * features for data analysis and management tasks.
 *
 * @name DataTableElement
 * @element mosaik-data-table
 * @category Selectors
 *
 * @slot - Default content area for custom table content and additional elements
 * @slot header - Table header area for titles, filters, and actions
 * @slot footer - Table footer area for pagination, totals, and summary information
 *
 * @csspart table - Main table container element
 * @csspart header - Table header section
 * @csspart body - Table body containing data rows
 * @csspart footer - Table footer section
 * @csspart row - Individual table row
 * @csspart cell - Individual table cell
 * @csspart sort-button - Sortable column header buttons
 * @csspart pagination - Pagination controls container
 *
 * @cssprop {Color} --data-table-border-color - Color for table borders and grid lines
 * @cssprop {Color} --data-table-header-background - Background color for table headers
 * @cssprop {Color} --data-table-row-background - Background color for table rows
 * @cssprop {Color} --data-table-row-background-hover - Hover state background for rows
 * @cssprop {Color} --data-table-row-background-selected - Selected row background color
 * @cssprop {String} --data-table-cell-padding - Internal padding for table cells
 * @cssprop {String} --data-table-header-font-weight - Font weight for header text
 *
 * @dependency TableElement - Base table structure and layout
 * @dependency TableHeaderElement - For table header rows and column definitions
 * @dependency TableRowElement - For data rows and content presentation
 * @dependency TableCellElement - For individual data cells and content
 *
 * @example
 * ```html
 * <!-- Basic data table with auto-generated columns -->
 * <mosaik-data-table
 *   items='[
 *     {"id": 1, "name": "John Doe", "email": "john@example.com", "role": "Admin"},
 *     {"id": 2, "name": "Jane Smith", "email": "jane@example.com", "role": "User"}
 *   ]'
 *   auto-generate-columns="true"
 *   sortable="true">
 * </mosaik-data-table>
 *
 * <!-- Data table with custom column definitions -->
 * <mosaik-data-table
 *   items="users"
 *   selectable="true"
 *   paginated="true"
 *   page-size="25">
 *   <div slot="header">
 *     <mosaik-text variant="headline">User Management</mosaik-text>
 *     <mosaik-button onclick="addUser()">Add User</mosaik-button>
 *   </div>
 * </mosaik-data-table>
 *
 * <!-- Data table with filtering and actions -->
 * <mosaik-data-table
 *   items="products"
 *   alternating="true"
 *   multi-select="true"
 *   searchable="true">
 *   <div slot="header">
 *     <mosaik-search-box placeholder="Search products..." onInput="filterProducts"></mosaik-search-box>
 *     <div class="table-actions">
 *       <mosaik-button appearance="soft">Export</mosaik-button>
 *       <mosaik-button appearance="primary">Bulk Edit</mosaik-button>
 *     </div>
 *   </div>
 *   <div slot="footer">
 *     <mosaik-text variant="caption">Showing 1-25 of 150 products</mosaik-text>
 *   </div>
 * </mosaik-data-table>
 *
 * <!-- Data table with custom cell renderers -->
 * <mosaik-data-table items="orders" expandable-rows="true">
 *   <!-- Custom column templates would be defined via column definitions -->
 * </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<ITableSortChangedEventDetail>): 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