/**
 * Copyright IBM Corp. 2021, 2025
 * SPDX-License-Identifier: MPL-2.0
 */
import Component from '@glimmer/component';
import { TrackedMap } from 'tracked-built-ins';
import type { ModifierLike } from '@glint/template';
import type { HdsAdvancedTableSyncWidthValuesSignature } from './width';
import type { HdsAdvancedTableSyncColumnOrderSignature } from './order';
import type { HdsAdvancedTableColumn, HdsAdvancedTableColumnReorderSide, HdsAdvancedTableNormalizedColumn } from '../types.ts';
import type { HdsAdvancedTableSignature } from '../index';
export interface HdsAdvancedTableSyncThElementsSignature {
    Element: HTMLDivElement;
    Args: {
        Positional: [HdsAdvancedTableColumn['key']];
    };
}
export interface HdsAdvancedTableColumnManagerSignature {
    Args: {
        columns: HdsAdvancedTableColumn[];
        columnOrder: HdsAdvancedTableSignature['Args']['columnOrder'];
        hasReorderableColumns?: HdsAdvancedTableSignature['Args']['hasReorderableColumns'];
        hasStickyFirstColumn?: HdsAdvancedTableSignature['Args']['hasStickyFirstColumn'];
        isSelectable?: HdsAdvancedTableSignature['Args']['isSelectable'];
        onColumnReorder: HdsAdvancedTableSignature['Args']['onColumnReorder'];
    };
    Blocks: {
        default: [
            {
                columns: HdsAdvancedTableNormalizedColumn[];
                columnOrder: HdsAdvancedTableSignature['Args']['columnOrder'];
                draggedColumnKey: HdsAdvancedTableNormalizedColumn['key'] | null;
                firstColumnKey: HdsAdvancedTableNormalizedColumn['key'] | undefined;
                firstNonStickyColumnKey: HdsAdvancedTableNormalizedColumn['key'] | undefined;
                gridTemplateColumns: string;
                lastColumnKey: HdsAdvancedTableNormalizedColumn['key'] | undefined;
                orderedColumns: HdsAdvancedTableNormalizedColumn[];
                reorderHoveredColumnKey: HdsAdvancedTableNormalizedColumn['key'] | null;
                syncColumnOrder: ModifierLike<HdsAdvancedTableSyncColumnOrderSignature>;
                syncThElements: ModifierLike<HdsAdvancedTableSyncThElementsSignature>;
                syncWidthValues: ModifierLike<HdsAdvancedTableSyncWidthValuesSignature>;
                applyTransientWidth: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => void;
                getAppliedWidth: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => HdsAdvancedTableNormalizedColumn['width'];
                getColumnByKey: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => HdsAdvancedTableNormalizedColumn | undefined;
                getSiblingColumnKeys: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => {
                    previous?: HdsAdvancedTableNormalizedColumn['key'];
                    next?: HdsAdvancedTableNormalizedColumn['key'];
                };
                moveColumnToDropTarget: (columnKey: HdsAdvancedTableNormalizedColumn['key'], side: HdsAdvancedTableColumnReorderSide) => void;
                moveColumnToTarget: (columnKey: HdsAdvancedTableNormalizedColumn['key'], targetColumnKey: HdsAdvancedTableNormalizedColumn['key'], side: HdsAdvancedTableColumnReorderSide) => void;
                moveColumnToTerminalPosition: (columnKey: HdsAdvancedTableNormalizedColumn['key'], position: 'start' | 'end') => void;
                restoreColumnWidth: (columnKey: HdsAdvancedTableNormalizedColumn['key']) => void;
                setDraggedColumnKey: (columnKey: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
                setReorderHoveredColumnKey: (key: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
                setTransientColumnWidths: (options: {
                    roundValues?: boolean;
                }) => void;
                setTransientColumnWidth: (columnKey: HdsAdvancedTableNormalizedColumn['key'], width: `${number}px`, clamped?: boolean) => void;
                resetTransientColumnWidths: () => void;
                stepColumn: (columnKey: HdsAdvancedTableNormalizedColumn['key'], step: number) => void;
                updateResizeDebt: (columnKey: HdsAdvancedTableNormalizedColumn['key'], delta: number) => void;
            }
        ];
    };
}
export default class HdsAdvancedTableColumnManager extends Component<HdsAdvancedTableColumnManagerSignature> {
    thElements: TrackedMap<string, HTMLDivElement>;
    syncThElements: import("ember-modifier").FunctionBasedModifier<{
        Element: HTMLDivElement;
        Args: {
            Named: import("ember-modifier/-private/signature").EmptyObject;
            Positional: [string | undefined];
        };
    }>;
    get normalizedColumns(): HdsAdvancedTableNormalizedColumn[];
    getColumnByKey: (key: HdsAdvancedTableColumn["key"]) => HdsAdvancedTableNormalizedColumn | undefined;
}
