/**
 * Copyright IBM Corp. 2021, 2025
 * SPDX-License-Identifier: MPL-2.0
 */
import Component from '@glimmer/component';
import { type FocusableElement } from 'tabbable';
import { HdsAdvancedTableHorizontalAlignmentValues } from './types.ts';
import type { HdsAdvancedTableHorizontalAlignment, HdsAdvancedTableScope, HdsAdvancedTableExpandState, HdsAdvancedTableColumnReorderSide, HdsAdvancedTableNormalizedColumn, HdsAdvancedTableThSortOrderLabels, HdsAdvancedTableThSortOrder } from './types.ts';
import type { HdsCompositeSignature } from '../composite/index';
import type { HdsAdvancedTableThButtonSortSignature } from './th-button-sort';
import type { HdsAdvancedTableSignature } from './index';
import type Owner from '@ember/owner';
export declare const ALIGNMENTS: HdsAdvancedTableHorizontalAlignment[];
export declare const DEFAULT_ALIGN = HdsAdvancedTableHorizontalAlignmentValues.Left;
export interface HdsAdvancedTableThSignature {
    Args: {
        align?: HdsAdvancedTableHorizontalAlignment;
        column?: HdsAdvancedTableNormalizedColumn;
        colspan?: number;
        compositeItem?: HdsCompositeSignature['Blocks']['default'][0]['item'];
        isCompositeItemDisabled?: boolean;
        depth?: number;
        draggedColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;
        firstColumnKey?: HdsAdvancedTableNormalizedColumn['key'];
        firstNonStickyColumnKey?: HdsAdvancedTableNormalizedColumn['key'];
        hasExpandAllButton?: boolean;
        hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];
        hasResizableColumns?: HdsAdvancedTableSignature['Args']['hasResizableColumns'];
        hasSelectableRows?: HdsAdvancedTableSignature['Args']['isSelectable'];
        hasStickyFirstColumn?: HdsAdvancedTableSignature['Args']['hasStickyFirstColumn'];
        isExpandable?: boolean;
        isExpanded?: HdsAdvancedTableExpandState;
        isStickyColumn?: boolean;
        isStickyColumnPinned?: boolean;
        lastColumnKey?: HdsAdvancedTableNormalizedColumn['key'];
        newLabel?: string;
        parentId?: string;
        reorderHoveredColumnKey?: HdsAdvancedTableNormalizedColumn['key'] | null;
        rowspan?: number;
        scope?: HdsAdvancedTableScope;
        siblingColumnKeys?: {
            previous?: HdsAdvancedTableNormalizedColumn['key'];
            next?: HdsAdvancedTableNormalizedColumn['key'];
        };
        draggedColumnSiblingColumnKeys?: {
            previous?: HdsAdvancedTableNormalizedColumn['key'];
            next?: HdsAdvancedTableNormalizedColumn['key'];
        };
        sortOrder?: HdsAdvancedTableThSortOrder;
        tableHeight?: number;
        tooltip?: string;
        didInsertExpandButton?: (button: HTMLButtonElement) => void;
        onApplyTransientWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => void;
        onClickSort?: HdsAdvancedTableThButtonSortSignature['Args']['onClick'];
        onClickToggle?: () => void;
        onColumnResize?: HdsAdvancedTableSignature['Args']['onColumnResize'];
        onGetAppliedWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => HdsAdvancedTableNormalizedColumn['width'];
        onGetColumnByKey?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => HdsAdvancedTableNormalizedColumn | undefined;
        onMoveColumnToTerminalPosition?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], position: 'start' | 'end') => void;
        onPinFirstColumn?: () => void;
        onReorderDrop?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], side: HdsAdvancedTableColumnReorderSide) => void;
        onResetTransientColumnWidths?: () => void;
        onRestoreColumnWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => void;
        onSetDraggedColumnKey?: (key: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
        onSetReorderHoveredColumnKey?: (key: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
        onSetTransientColumnWidth?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], width: `${number}px`) => void;
        onSetTransientColumnWidths?: (options: {
            roundValues?: boolean;
        }) => void;
        onStepColumn?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], step: number) => void;
        onUpdateResizeDebt?: (columnKey: HdsAdvancedTableNormalizedColumn['key'], delta: number) => void;
        willDestroyExpandButton?: (button: HTMLButtonElement) => void;
    };
    Blocks: {
        default?: [];
    };
    Element: HTMLDivElement;
}
export default class HdsAdvancedTableTh extends Component<HdsAdvancedTableThSignature> {
    private _labelId;
    private _element;
    private _shouldTrapFocus;
    private _reorderHandleElement?;
    private _resizeHandleElement?;
    constructor(owner: Owner, args: HdsAdvancedTableThSignature['Args']);
    get isSortable(): boolean;
    get isFirstColumn(): boolean;
    get isFirstNonStickyColumn(): boolean;
    get isLastColumn(): boolean;
    get tableHasColumnBeingDragged(): boolean;
    get isColumnBeingDragged(): boolean;
    get scope(): HdsAdvancedTableScope;
    get role(): string;
    get ariaSort(): HdsAdvancedTableThSortOrderLabels;
    get align(): HdsAdvancedTableHorizontalAlignment;
    get rowspan(): string;
    get colspan(): string | undefined;
    get paddingLeft(): string | undefined;
    get classNames(): string;
    get showDropTarget(): boolean;
    get showResizeHandle(): boolean;
    onFocusTrapDeactivate(): void;
    enableFocusTrap(): void;
    getInitialFocus(): FocusableElement | undefined;
    focusReorderHandle(): void;
    applyTransientWidth(columnKey: HdsAdvancedTableNormalizedColumn['key']): void;
    resetTransientColumnWidths(): void;
    getAppliedWidth(columnKey: HdsAdvancedTableNormalizedColumn['key']): HdsAdvancedTableNormalizedColumn['width'] | undefined;
    getColumnByKey(columnKey: HdsAdvancedTableNormalizedColumn['key']): HdsAdvancedTableNormalizedColumn | undefined;
    setDraggedColumnKey(columnKey: HdsAdvancedTableNormalizedColumn['key'] | null): void;
    setTransientColumnWidth(columnKey: HdsAdvancedTableNormalizedColumn['key'], width: `${number}px`): void;
    setTransientColumnWidths(options: {
        roundValues?: boolean;
    }): void;
    stepColumn(step: number): void;
    updateResizeDebt(delta: number): void;
    setElement(element: HTMLDivElement): void;
    private _registerReorderHandleElement;
    private _registerResizeHandleElement;
    private _manageExpandButton;
}
