import { RenderHeaderColumn } from '../context/TableRenderContext';
import { useDraggableColumns } from '../layout/useDraggableColumns';
import { useResizableColumns } from '../layout/useResizableColumns';
import { TableColumnDefinition, TableProps, TableRowData } from '../Table.types';
type UseResolvedRenderColumnsProps<RowType extends TableRowData> = {
    columnOrder: TableProps<RowType>['columnOrder'];
    onColumnOrderChange: TableProps<RowType>['onColumnOrderChange'];
    onColumnResize: TableProps<RowType>['onColumnResize'];
    renderHeaderColumns: RenderHeaderColumn<RowType>[];
    viewType: TableProps<RowType>['viewType'];
};
export type UseResolvedRenderColumnsReturn<RowType extends TableRowData> = {
    columnDefinitionsByKey: Map<string, TableColumnDefinition<RowType>>;
    columnIndexByKey: Map<string, number>;
    draggableColumnKeys?: string[];
    draggableColumnsEnabled: boolean;
    handleColumnDragEnd: ReturnType<typeof useDraggableColumns>['handleColumnDragEnd'];
    handleColumnResizeReset: ReturnType<typeof useResizableColumns<RowType>>['handleColumnResizeReset'];
    handleColumnResizeStart: ReturnType<typeof useResizableColumns<RowType>>['handleColumnResizeStart'];
    lastResizableColumnKey?: string;
    resettableColumnKeys: Set<string>;
    renderDataColumns: RenderHeaderColumn<RowType>[];
    resizeColumnsEnabled: boolean;
    resolvedRenderColumns: RenderHeaderColumn<RowType>[];
    resizedColumns: ReturnType<typeof useResizableColumns<RowType>>['resizedColumns'];
};
/**
 * Resolves the actual data columns that drive layout and column behavior.
 *
 * Header registration can contain grouped header cells, multi-row headers, and
 * other metadata that is useful for rendering, but drag, resize, sticky layout,
 * and body/footer cell placement ultimately need a flat list of actual data columns.
 *
 * This hook therefore:
 * - narrows registered header cells down to single-column data headers with a stable `columnKey`
 * - applies column reordering
 * - applies resized widths
 * - exposes a normalized column map for body/footer cell lookup
 *
 * `Table` uses this as the canonical column model for the rest of the render pass.
 */
declare const useResolvedRenderColumns: <RowType extends TableRowData>(props: UseResolvedRenderColumnsProps<RowType>) => UseResolvedRenderColumnsReturn<RowType>;
export default useResolvedRenderColumns;
