import { IEventEmitter } from '@breadstone/mosaik-elements';
import type { ITableColumnResizedEventDetail, ITableSortChangedEventDetail } from '../../../events';
import type { ColumnPinning } from '../../../Types/ColumnPinning';
import type { SortDirection } from '../../../Types/SortDirection';
import type { TableSortMode } from '../../../Types/TableSortMode';
import { TableCellBaseElement } from './Abstracts2/TableCellBaseElement';
import { TableElementIntl } from './intl/TableElementIntl';
import type { ITableHeaderCellElementProps } from './ITableHeaderCellElementProps';
declare const TableHeaderCellElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & typeof TableCellBaseElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Table Header Cell - A single header cell with optional sorting capabilities.
 *
 * @element mosaik-table-header-cell
 *
 * @slot - The default slot.
 *
 * @csspart actions - The actions part.
 * @csspart content - The content part.
 * @csspart icon - The sort direction icon part.
 * @csspart menu - The menu part.
 * @csspart resize-handle - The resize-handle part.
 * @csspart root - The root part.
 * @csspart separator - The separator part.
 * @csspart sort-index - The sort priority index badge part (visible in multi-sort mode).
 * @csspart text - The text part.
 *
 * @cssprop {String} --table-header-cell-background-color - The cell background color CSS custom property.
 * @cssprop {String} --table-header-cell-border-color - The cell border color CSS custom property.
 * @cssprop {String} --table-header-cell-border-radius - The cell border radius CSS custom property.
 * @cssprop {String} --table-header-cell-border-width - The cell border width CSS custom property.
 * @cssprop {String} --table-header-cell-font-family - The cell font family CSS custom property.
 * @cssprop {String} --table-header-cell-font-letter-spacing - The cell font letter spacing CSS custom property.
 * @cssprop {String} --table-header-cell-font-line-height - The cell font line height CSS custom property.
 * @cssprop {String} --table-header-cell-font-size - The cell font size CSS custom property.
 * @cssprop {String} --table-header-cell-font-text-decoration - The cell font text decoration CSS custom property.
 * @cssprop {String} --table-header-cell-font-text-transform - The cell font text transform CSS custom property.
 * @cssprop {String} --table-header-cell-font-weight - The cell font weight CSS custom property.
 * @cssprop {String} --table-header-cell-foreground-color - The cell foreground color CSS custom property.
 * @cssprop {String} --table-header-cell-gap - The cell gap CSS custom property.
 * @cssprop {String} --table-header-cell-padding-bottom - The cell padding bottom CSS custom property.
 * @cssprop {String} --table-header-cell-padding-left - The cell padding left CSS custom property.
 * @cssprop {String} --table-header-cell-padding-right - The cell padding right CSS custom property.
 * @cssprop {String} --table-header-cell-padding-top - The cell padding top CSS custom property.
 * @cssprop {String} --table-header-cell-resize-handle-color - The resize handle color CSS custom property.
 * @cssprop {String} --table-header-cell-resize-handle-width - The resize handle width CSS custom property.
 * @cssprop {String} --table-header-cell-separator-color - The column separator color CSS custom property.
 * @cssprop {String} --table-header-cell-separator-width - The column separator width CSS custom property.
 * @cssprop {String} --table-header-cell-shadow - The cell shadow CSS custom property.
 * @cssprop {String} --table-header-cell-shadow-blur - The cell shadow blur CSS custom property.
 * @cssprop {String} --table-header-cell-shadow-color - The cell shadow color CSS custom property.
 * @cssprop {String} --table-header-cell-shadow-offset-x - The cell shadow offset x CSS custom property.
 * @cssprop {String} --table-header-cell-shadow-offset-y - The cell shadow offset y CSS custom property.
 * @cssprop {String} --table-header-cell-shadow-spread - The cell shadow spread CSS custom property.
 * @cssprop {String} --table-header-cell-transition-duration - The cell transition duration CSS custom property.
 * @cssprop {String} --table-header-cell-transition-mode - The cell transition mode CSS custom property.
 * @cssprop {String} --table-header-cell-transition-property - The cell transition property CSS custom property.
 * @cssprop {String} --table-header-cell-translate - The cell translate CSS custom property.
 *
 * @fires tableSortChanged {TableSortChangedEvent} - Fired when the sort direction of the cell has changed.
 * @fires tableColumnResized {TableColumnResizedEvent} - Fired when the column has been resized.
 * @fires tableRequestChooseColumns {TableChooseColumnsEvent} - Fired when the choose columns action is requested from a header cell menu.
 *
 * @dependency mosaik-divider - The Divider element.
 * @dependency mosaik-dropdown-button - The Dropdown Button element.
 * @dependency mosaik-icon - The Icon element.
 * @dependency mosaik-menu - The Menu element.
 * @dependency mosaik-menu-item - The Menu Item element.
 * @dependency mosaik-text - The Text element.
 *
 * @example
 * Sortable header cell:
 * ```html
 * <mosaik-table-header-cell text="Name" key="name" sortable></mosaik-table-header-cell>
 * ```
 *
 * @public
 */
export declare class TableHeaderCellElement extends TableHeaderCellElement_base implements ITableHeaderCellElementProps {
    private readonly _inheritance;
    private readonly _tableSortChanged;
    private readonly _tableColumnResized;
    private _intl;
    private _key;
    private _sorted;
    private _sortable;
    private _sortDirection;
    private _resizable;
    private _minWidth;
    private _maxWidth;
    private _pinned;
    private _pinable;
    private _resizeStartX;
    private _resizeStartWidth;
    private _isResizing;
    private _hideable;
    private _autoSizeable;
    private _columnChoosable;
    private _sortIndex;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Returns the inherited `intl` labels for the table header cell.
     * Falls back to a local default instance when not inside a `TableElement`.
     *
     * @public
     * @readonly
     */
    get intl(): TableElementIntl;
    set intl(value: TableElementIntl);
    /**
     * Gets or sets the `key` property that identifies the column associated with this header cell.
     *
     * @public
     * @attr
     */
    get key(): string;
    set key(value: string);
    /**
     * Gets or sets the `sortable` property that indicates whether this header cell supports sorting.
     *
     * @public
     * @attr
     */
    get sortable(): boolean;
    set sortable(value: boolean);
    /**
     * Gets or sets the `pinable` property that indicates whether this column can be pinned.
     *
     * @public
     * @attr
     */
    get pinable(): boolean;
    set pinable(value: boolean);
    /**
     * Gets or sets the `sortDirection` property that indicates the current sort direction of this header cell.
     *
     * @public
     * @attr
     */
    get sortDirection(): SortDirection | 'none';
    set sortDirection(value: SortDirection | 'none');
    /**
     * Returns whether the cell is currently sorted (i.e., has a sort direction other than 'none').
     *
     * @public
     * @readonly
     * @attr
     */
    get sorted(): boolean;
    private set sorted(value);
    /**
     * Gets or sets the 1-based sort priority index for multi-sort mode.
     * `undefined` when the column is not sorted or in single-sort mode.
     *
     * @public
     * @attr
     */
    get sortIndex(): number | undefined;
    set sortIndex(value: number | undefined);
    /**
     * Returns the inherited sort mode from the parent table.
     * Falls back to `'single'` when not inside a `TableElement`.
     *
     * @public
     * @readonly
     */
    get sortMode(): TableSortMode;
    /**
     * Gets or sets the `resizable` property that indicates whether this column can be resized.
     *
     * @public
     * @attr
     */
    get resizable(): boolean;
    set resizable(value: boolean);
    /**
     * Gets or sets the `minWidth` property that indicates the minimum width of this column.
     *
     * @public
     * @attr
     */
    get minWidth(): string;
    set minWidth(value: string);
    /**
     * Gets or sets the `maxWidth` property that indicates the maximum width of this column.
     *
     * @public
     * @attr
     */
    get maxWidth(): string;
    set maxWidth(value: string);
    /**
     * Gets or sets the `pinned` property that indicates the pinning position of this column.
     *
     * @public
     * @attr
     */
    get pinned(): ColumnPinning;
    set pinned(value: ColumnPinning);
    /**
     * Gets or sets the `columnHidden` property that indicates whether this column is hidden.
     * Overrides the base setter to back-propagate the change to the parent table.
     *
     * @public
     * @override
     */
    get columnHidden(): boolean;
    set columnHidden(value: boolean);
    /**
     * Gets or sets the `hideable` property that indicates whether this column can be hidden.
     * When `true`, the "Hide column" menu item is shown.
     *
     * @public
     * @attr
     */
    get hideable(): boolean;
    set hideable(value: boolean);
    /**
     * Gets or sets the `autoSizeable` property that indicates whether this column can be auto-sized.
     * When `true`, the "Auto size column" menu item is shown.
     *
     * @public
     * @attr
     */
    get autoSizeable(): boolean;
    set autoSizeable(value: boolean);
    /**
     * Gets or sets the `columnChoosable` property that indicates whether this column can be chosen.
     * When `true`, the "Choose Columns" menu item is shown.
     *
     * @public
     * @attr
     */
    get columnChoosable(): boolean;
    set columnChoosable(value: boolean);
    /**
     * Called when the sort direction changes.
     * Provides reference to `ITableSortChangedEventDetail` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<ITableSortChangedEventDetail>
     */
    get tableSortChanged(): IEventEmitter<ITableSortChangedEventDetail>;
    /**
     * Called when the column is resized.
     * Provides reference to `ITableColumnResizedEventDetail` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<ITableColumnResizedEventDetail>
     */
    get tableColumnResized(): IEventEmitter<ITableColumnResizedEventDetail>;
    /**
     * Sorts the cell in the specified direction.
     *
     * @public
     */
    sort(direction?: SortDirection | 'none'): void;
    /**
     * Unsorts the cell.
     *
     * @public
     */
    unsort(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Starts the column resize operation.
     *
     * @public
     */
    startResize(event: PointerEvent): void;
    /**
     * Sets the pinning position of this column.
     *
     * @public
     */
    pin(position: ColumnPinning): void;
    /**
     * Auto-sizes this column based on the widest content across header and body cells.
     *
     * @public
     */
    autoSize(): void;
    /**
     * Returns the natural content width of this header cell,
     * by temporarily measuring `[part='root']` at its intrinsic `max-content` width.
     *
     * @public
     */
    getContentWidth(): number;
    /**
     * Requests the table to open the choose columns editor.
     * Dispatches a bubbling `tableRequestChooseColumns` event
     * that the parent `TableElement` will catch.
     *
     * @public
     */
    requestChooseColumns(): void;
    /**
     * Handles pointer movement during resize.
     *
     * @private
     */
    private handlePointerMove;
    /**
     * Handles pointer up to end the resize operation.
     *
     * @private
     */
    private handlePointerUp;
    /**
     * Dispatches the column resized event.
     *
     * @private
     */
    private dispatchColumnResize;
    /**
     * Cleans up resize event listeners from document.
     *
     * @private
     */
    private cleanupResizeListeners;
    /**
     * Parses a CSS size value to pixels.
     *
     * @private
     */
    private parseSizeValue;
    /**
     * Gets the next sort direction in the cycle: 'none' -> 'asc' -> 'desc' -> 'none'.
     *
     * @private
     */
    private getNextSortDirection;
    /**
     * Single-sort logic: only one column can be sorted at a time (last one wins).
     *
     * @private
     */
    private sortSingle;
    /**
     * Multi-sort logic: multiple columns can be sorted simultaneously with priority indices.
     *
     * @private
     */
    private sortMultiple;
    /**
     * Returns the highest sort index among sibling header cells (0 if none are sorted).
     *
     * @private
     */
    private getMaxSortIndex;
    /**
     * Collects all currently active sorts from sibling header cells, ordered by sort index.
     *
     * @private
     */
    private getActiveSorts;
}
/**
 * @public
 */
export declare namespace TableHeaderCellElement {
    type Props = ITableHeaderCellElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-table-header-cell': TableHeaderCellElement;
    }
}
export {};
//# sourceMappingURL=TableHeaderCellElement.d.ts.map