import { IEventEmitter } from '@breadstone/mosaik-elements';
import { ISlottable } from '../../../Behaviors/Slottable';
import type { ITableChooseColumnsEventDetail, ITableColumnsChangedEventDetail, ITableSelectionChangedEventDetail } from '../../../events';
import { TableSelectionMode } from '../../../Types/TableSelectionMode';
import { TableSelectionType } from '../../../Types/TableSelectionType';
import type { TableSortMode } from '../../../Types/TableSortMode';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { ITableColumnEditorItem } from './editor/ITableColumnEditorItem';
import { TableElementIntl } from './intl/TableElementIntl';
import { ITableElementProps } from './ITableElementProps';
import type { TableBodyCellElement } from './TableBodyCellElement';
import type { TableBodyRowElement } from './TableBodyRowElement';
declare const TableElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Table - A structured display of data in rows and columns.
 *
 * @element mosaik-table
 *
 * @slot  - The default slot.
 * @slot caption - The caption slot for the table title or description.
 * @slot summary - The summary slot.
 *
 * @csspart caption - The caption part.
 * @csspart summary - The summary part.
 *
 * @cssprop {String} --table-alternating-color - The alternating color CSS custom property.
 * @cssprop {String} --table-background-color - The background color CSS custom property.
 * @cssprop {String} --table-border-color - The border color CSS custom property.
 * @cssprop {String} --table-border-radius - The border radius CSS custom property.
 * @cssprop {String} --table-border-style - The border style CSS custom property.
 * @cssprop {String} --table-border-width - The border width CSS custom property.
 * @cssprop {String} --table-column-border-color - The column border color CSS custom property.
 * @cssprop {String} --table-column-border-radius - The column border radius CSS custom property.
 * @cssprop {String} --table-column-border-style - The column border style CSS custom property.
 * @cssprop {String} --table-column-border-width - The column border width CSS custom property.
 * @cssprop {String} --table-font-family - The font family CSS custom property.
 * @cssprop {String} --table-font-letter-spacing - The font letter spacing CSS custom property.
 * @cssprop {String} --table-font-line-height - The font line height CSS custom property.
 * @cssprop {String} --table-font-size - The font size CSS custom property.
 * @cssprop {String} --table-font-text-decoration - The font text decoration CSS custom property.
 * @cssprop {String} --table-font-text-transform - The font text transform CSS custom property.
 * @cssprop {String} --table-font-weight - The font weight CSS custom property.
 * @cssprop {String} --table-foreground-color - The foreground color CSS custom property.
 * @cssprop {String} --table-gap - The gap CSS custom property.
 * @cssprop {String} --table-line-thickness - The line thickness CSS custom property.
 * @cssprop {String} --table-padding-bottom - The padding bottom CSS custom property.
 * @cssprop {String} --table-padding-left - The padding left CSS custom property.
 * @cssprop {String} --table-padding-right - The padding right CSS custom property.
 * @cssprop {String} --table-padding-top - The padding top CSS custom property.
 * @cssprop {String} --table-row-border-color - The row border color CSS custom property.
 * @cssprop {String} --table-row-border-radius - The row border radius CSS custom property.
 * @cssprop {String} --table-row-border-style - The row border style CSS custom property.
 * @cssprop {String} --table-row-border-width - The row border width CSS custom property.
 * @cssprop {String} --table-shadow - The shadow CSS custom property.
 * @cssprop {String} --table-shadow-blur - The shadow blur CSS custom property.
 * @cssprop {String} --table-shadow-color - The shadow color CSS custom property.
 * @cssprop {String} --table-shadow-offset-x - The shadow offset x CSS custom property.
 * @cssprop {String} --table-shadow-offset-y - The shadow offset y CSS custom property.
 * @cssprop {String} --table-shadow-spread - The shadow spread CSS custom property.
 * @cssprop {String} --table-transition-duration - The transition duration CSS custom property.
 * @cssprop {String} --table-transition-mode - The transition mode CSS custom property.
 * @cssprop {String} --table-transition-property - The transition property CSS custom property.
 * @cssprop {String} --table-translate - The translate CSS custom property.
 *
 * @fires columnsChanged {TableColumnsChangedEvent} - Fired when the columns of the table has changed.
 * @fires tableSelectionChanged {TableSelectionChangedEvent} - Fired when the selection of the table has changed.
 * @fires tableChooseColumns {TableChooseColumnsEvent} - Fired when the choose columns action is requested from a header cell menu.
 *
 * @dependency mosaik-text - The Text element.
 *
 * @example
 * Basic data table:
 * ```html
 * <mosaik-table>
 *   <mosaik-table-header>
 *     <mosaik-table-row>
 *       <mosaik-table-cell text="Name" sortable></mosaik-table-cell>
 *       <mosaik-table-cell text="Role"></mosaik-table-cell>
 *     </mosaik-table-row>
 *   </mosaik-table-header>
 *   <mosaik-table-body>
 *     <mosaik-table-row>
 *       <mosaik-table-cell text="Alice"></mosaik-table-cell>
 *       <mosaik-table-cell text="Admin"></mosaik-table-cell>
 *     </mosaik-table-row>
 *   </mosaik-table-body>
 * </mosaik-table>
 * ```
 *
 * @public
 */
export declare class TableElement extends TableElement_base implements ITableElementProps, ISlottable {
    private readonly _intl;
    private readonly _columnsChanged;
    private readonly _tableSelectionChanged;
    private readonly _tableChooseColumns;
    private _columns;
    private _caption;
    private _alternating;
    private _selectionType;
    private _selectionMode;
    private _resizable;
    private _sortMode;
    private _selectedRows;
    private _selectedCells;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
    */
    static get is(): string;
    /**
     * Gets or sets the `intl` property.
     *
     * @public
     */
    get intl(): TableElementIntl;
    set intl(value: TableElementIntl);
    /**
     * Gets or sets the `columns` property.
     *
     * @public
     * @attr
     */
    get columns(): string;
    set columns(value: string);
    /**
     * Gets or sets the `caption` property.
     *
     * @public
     * @attr
     */
    get caption(): string;
    set caption(value: string);
    /**
     * Gets or sets the `alternating` property.
     *
     * @public
     * @attr
     */
    get alternating(): boolean;
    set alternating(value: boolean);
    /**
     * Gets or sets the `selectionType` property.
     *
     * @public
     * @attr
     */
    get selectionType(): TableSelectionType;
    set selectionType(value: TableSelectionType);
    /**
     * Gets or sets the `selectionMode` property.
     * Defines whether selection is disabled, single, or multiple.
     * If set to `none`, the configured `selectionType` remains available
     * but has no behavioral effect.
     *
     * @public
     * @attr
     */
    get selectionMode(): TableSelectionMode;
    set selectionMode(value: TableSelectionMode);
    /**
     * Gets or sets the `resizable` property.
     * When true, columns are resizable by default.
     *
     * @public
     * @attr
     */
    get resizable(): boolean;
    set resizable(value: boolean);
    /**
     * Gets or sets the `sortMode` property.
     * Defines whether sort is single-column (default) or multi-column.
     *
     * @public
     * @attr
     */
    get sortMode(): TableSortMode;
    set sortMode(value: TableSortMode);
    /**
     * Called when the columns of the table has changed.
     * Provides reference to `ITableColumnsChangedEventDetail` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<ITableColumnsChangedEventDetail>
     */
    get columnsChanged(): IEventEmitter<ITableColumnsChangedEventDetail>;
    /**
     * Called when the selection of the table has changed.
     * Provides reference to `ITableSelectionChangedEventDetail` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<ITableSelectionChangedEventDetail>
     */
    get tableSelectionChanged(): IEventEmitter<ITableSelectionChangedEventDetail>;
    /**
     * Called when the choose columns action is requested.
     * Provides reference to `ITableChooseColumnsEventDetail` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<ITableChooseColumnsEventDetail>
     */
    get tableChooseColumns(): IEventEmitter<ITableChooseColumnsEventDetail>;
    /**
     * Gets the currently selected rows.
     *
     * @public
     * @readonly
     */
    get selectedRows(): ReadonlyArray<TableBodyRowElement>;
    /**
     * Gets the currently selected cells.
     *
     * @public
     * @readonly
     */
    get selectedCells(): ReadonlyArray<TableBodyCellElement>;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Updates the column width at the specified index.
     * If no explicit columns are set, initializes from current header cell widths.
     *
     * @public
     */
    updateColumnWidth(columnIndex: number, widthPx: number): void;
    /**
     * Returns metadata for each column derived from header cells.
     * Used by rows to propagate pinning and hiding to body/footer cells.
     *
     * @public
     */
    getColumnMetadata(): Array<{
        key: string;
        pinned: string;
        hidden: boolean;
    }>;
    /**
     * Returns an array of column editor items derived from header cells.
     * Each item contains the key, title, and current visibility state.
     *
     * @public
     */
    getColumnEditorItems(): Array<ITableColumnEditorItem>;
    /**
     * Handles the internal `tableRequestChooseColumns` event from header cells.
     *
     * @private
     */
    private handleRequestChooseColumns;
    /**
     * Handles column resized events from header cells.
     *
     * @private
     */
    private handleColumnResized;
    /**
     * Notifies all rows that column metadata (pinning/hiding) has changed.
     * Called directly by child header cells when pinning state changes.
     *
     * @private
     * @hidden
     */
    notifyColumnMetadataChanged(): void;
    /**
     * Reads the current rendered widths of all header cells and returns them as pixel values.
     *
     * @private
     */
    private initializeColumnsFromHeaderCells;
    /**
     * Auto-sizes a column to fit the widest content across header and body cells.
     * Uses `getContentWidth()` on each cell for accurate measurement that handles
     * truncated text, flex-constrained layouts and shadow DOM content.
     *
     * @public
     */
    autoSizeColumn(columnIndex: number): void;
}
/**
 * @public
 */
export declare namespace TableElement {
    type Props = ITableElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-table': TableElement;
    }
}
export {};
//# sourceMappingURL=TableElement.d.ts.map