///
import { GridColDef } from './colDef';
export interface GridLeafColumn {
field: GridColDef['field'];
}
export declare type GridColumnNode = GridColumnGroup | GridLeafColumn;
export declare function isLeaf(node: GridColumnNode): node is GridLeafColumn;
/**
* A function used to process headerClassName params.
*/
export declare type GridColumnGroupHeaderClassFn = (params: GridColumnGroupHeaderParams) => string;
/**
* The union type representing the [[GridColDef]] column header class type.
*/
export declare type GridColumnGroupHeaderClassNamePropType = string | GridColumnGroupHeaderClassFn;
export interface GridColumnGroupHeaderParams extends Pick {
/**
* A unique string identifying the group.
*/
groupId: GridColumnGroup['groupId'] | null;
/**
* The number parent the group have.
*/
depth: number;
/**
* The maximal depth among visible columns.
*/
maxDepth: number;
/**
* The column fields included in the group (including nested ones).
*/
fields: string[];
/**
* The column index (0 based).
*/
colIndex: number;
/**
* Indicate if the group is the last one for the given depth.
*/
isLastColumn: boolean;
}
export interface GridColumnGroup extends Pick {
/**
* A unique string identifying the group.
*/
groupId: string;
/**
* The groups and columns included in this group.
*/
children: GridColumnNode[];
/**
* If `true`, allows reordering columns outside of the group.
* @default false
*/
freeReordering?: boolean;
/**
* Allows to render a component in the column group header cell.
* @param {GridColumnGroupHeaderParams} params Object containing parameters for the renderer.
* @returns {React.ReactNode} The element to be rendered.
*/
renderHeaderGroup?: (params: GridColumnGroupHeaderParams) => React.ReactNode;
/**
* Class name that will be added in the column group header cell.
*/
headerClassName?: GridColumnGroupHeaderClassNamePropType;
}
export declare type GridColumnGroupingModel = GridColumnGroup[];