import Component from '@glimmer/component';
import { TrackedMap } from 'tracked-built-ins';
import type { HdsAdvancedTableColumnReorderCallback, HdsAdvancedTableColumnReorderSide, HdsAdvancedTableNormalizedColumn } from '../types.ts';
import type { ModifierLike } from '@glint/template';
export interface HdsAdvancedTableSyncColumnOrderSignature {
    Element: HTMLDivElement;
    Args: {
        Positional: [HdsAdvancedTableNormalizedColumn[], string[] | undefined];
    };
}
interface HdsAdvancedTableColumnManagerOrderSignature {
    Args: {
        columns: HdsAdvancedTableNormalizedColumn[];
        columnOrder: string[] | undefined;
        hasReorderableColumns?: boolean;
        hasStickyFirstColumn?: boolean;
        onColumnReorder: HdsAdvancedTableColumnReorderCallback | undefined;
        getColumnByKey: (key: string) => HdsAdvancedTableNormalizedColumn | undefined;
        thElements: TrackedMap<string, HTMLDivElement>;
    };
    Blocks: {
        default: [
            {
                orderedColumns: HdsAdvancedTableNormalizedColumn[];
                columnOrder: string[];
                draggedColumnKey: string | null;
                reorderHoveredColumnKey: string | null;
                firstColumnKey: string | undefined;
                firstNonStickyColumnKey: string | undefined;
                lastColumnKey: string | undefined;
                syncColumnOrder: ModifierLike<HdsAdvancedTableSyncColumnOrderSignature>;
                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;
                stepColumn: (columnKey: HdsAdvancedTableNormalizedColumn['key'], step: number) => void;
                setDraggedColumnKey: (columnKey: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
                setReorderHoveredColumnKey: (key: HdsAdvancedTableNormalizedColumn['key'] | null) => void;
            }
        ];
    };
}
export default class HdsAdvancedTableColumnManagerOrder extends Component<HdsAdvancedTableColumnManagerOrderSignature> {
    draggedColumnKey: HdsAdvancedTableNormalizedColumn['key'] | null;
    reorderHoveredColumnKey: HdsAdvancedTableNormalizedColumn['key'] | null;
    private _columnOrder;
    syncColumnOrder: import("ember-modifier").FunctionBasedModifier<{
        Element: HTMLDivElement;
        Args: {
            Named: import("ember-modifier/-private/signature").EmptyObject;
            Positional: [HdsAdvancedTableNormalizedColumn[], string[] | undefined];
        };
    }>;
    get columnOrder(): string[];
    set columnOrder(value: string[]);
    get visibleColumnOrder(): string[];
    get orderedColumns(): HdsAdvancedTableNormalizedColumn[];
    get firstColumnKey(): HdsAdvancedTableNormalizedColumn['key'] | undefined;
    get firstNonStickyColumnIndex(): number;
    get firstNonStickyColumnKey(): HdsAdvancedTableNormalizedColumn['key'] | undefined;
    get lastColumnKey(): HdsAdvancedTableNormalizedColumn['key'] | undefined;
    moveColumnToTerminalPosition: (columnKey: HdsAdvancedTableNormalizedColumn["key"], position: "start" | "end") => void;
    stepColumn: (columnKey: HdsAdvancedTableNormalizedColumn["key"], step: number) => void;
    moveColumnToDropTarget: (targetColumnKey: HdsAdvancedTableNormalizedColumn["key"], side: HdsAdvancedTableColumnReorderSide) => void;
    moveColumnToTarget: (sourceColumnKey: HdsAdvancedTableNormalizedColumn["key"], targetColumnKey: HdsAdvancedTableNormalizedColumn["key"], side: HdsAdvancedTableColumnReorderSide) => void;
    setColumnOrder: HdsAdvancedTableColumnReorderCallback;
    private _getColumnKey;
}
export {};
