import { TableColumnDef, TableColumnGroup, TableColumnGroupNode, TableColumnNode, TableComponentProps } from './report-definition-types'; export declare function isLeafColumn(node: TableColumnNode): node is TableColumnDef; export declare function isGroupColumn(node: TableColumnNode): node is TableColumnGroupNode; export declare function flattenColumns(tree: TableColumnNode[]): TableColumnDef[]; export declare function getColumnTreeDepth(tree: TableColumnNode[]): number; export declare function getLeafCountForNode(node: TableColumnNode): number; export declare function findColumnNodeById(tree: TableColumnNode[], id: string): TableColumnNode | null; export declare function updateColumnNodeInTree(tree: TableColumnNode[], id: string, updater: (node: TableColumnNode) => TableColumnNode): TableColumnNode[]; export declare function removeColumnNodeFromTree(tree: TableColumnNode[], id: string): TableColumnNode[]; export declare function insertColumnNodeUnderParent(tree: TableColumnNode[], parentId: string | null, node: TableColumnNode, index?: number): TableColumnNode[]; /** * Migrate a legacy TableComponentProps (flat `columns` + `columnGroups` with columnIds) * into the new recursive `columnTree`. Non-destructive: both shapes stay on the props * but the renderer always reads `columnTree`. */ export declare function getEffectiveColumnTree(p: TableComponentProps): TableColumnNode[]; export declare function legacyColumnsToTree(columns: TableColumnDef[], columnGroups?: TableColumnGroup[]): TableColumnNode[]; export declare function columnTreeToLegacy(tree: TableColumnNode[]): { columns: TableColumnDef[]; columnGroups: TableColumnGroup[]; };