import { TableProps } from '../interfaces';
export interface HeaderRowColumn<T> {
    id: string;
    header?: React.ReactNode;
    colSpan: number;
    rowSpan: number;
    isGroup: boolean;
    columnDefinition?: TableProps.ColumnDefinition<T>;
    groupDefinition?: TableProps.GroupDefinition;
    parentGroupIds: string[];
    colIndex: number;
}
export interface HeaderRow<T> {
    columns: HeaderRowColumn<T>[];
}
export interface ColumnGroupsLayout<T> {
    rows: HeaderRow<T>[];
    maxDepth: number;
    columnToParentIds: Map<string, string[]>;
}
export interface TableHeaderNodeProps<T> {
    columnDefinition?: TableProps.ColumnDefinition<T>;
    groupDefinition?: TableProps.GroupDefinition;
    isRoot?: boolean;
    colSpan?: number;
    rowSpan?: number;
    rowIndex?: number;
    colIndex?: number;
}
/**
 * A node in the table header tree.
 * - Column nodes map to column definitions.
 * - Internal nodes map to group definitions.
 * - The root is a virtual container (never rendered).
 */
export declare class TableHeaderNode<T> {
    readonly id: string;
    readonly isRoot: boolean;
    readonly columnDefinition?: TableProps.ColumnDefinition<T>;
    readonly groupDefinition?: TableProps.GroupDefinition;
    colSpan: number;
    rowSpan: number;
    rowIndex: number;
    colIndex: number;
    subTreeHeight: number;
    children: TableHeaderNode<T>[];
    parent?: TableHeaderNode<T>;
    constructor(id: string, props?: TableHeaderNodeProps<T>);
    get isGroup(): boolean;
    get isColumn(): boolean;
    addChild(child: TableHeaderNode<T>): void;
}
export declare function calculateHierarchyTree<T>(columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>, visibleColumnIds: readonly string[], groupDefinitions: ReadonlyArray<TableProps.GroupDefinition>, columnDisplay?: ReadonlyArray<TableProps.ColumnDisplayProperties>): ColumnGroupsLayout<T>;
export declare function getColumnGroupsDepth(columnDisplay?: ReadonlyArray<TableProps.ColumnDisplayProperties>): number;
//# sourceMappingURL=utils.d.ts.map