import type { RefObject } from '@mui/x-internals/types';
import { type GridColDef, type GridGroupingColDefOverride } from '@mui/x-data-grid-pro';
import { type GridColumnRawLookup, RowGroupingStrategy } from '@mui/x-data-grid-pro/internals';
import type { GridApiPremium } from "../../../models/gridApiPremium.js";
import type { GridRowGroupingModel } from "./gridRowGroupingInterfaces.js";
interface CreateGroupingColDefMonoCriteriaParams {
  columnsLookup: GridColumnRawLookup;
  /**
   * The field from which we are grouping the rows.
   */
  groupingCriteria: string;
  /**
   * The col def from which we are grouping the rows.
   */
  groupedByColDef: GridColDef;
  /**
   * The col def properties the user wants to override.
   * This value comes `prop.groupingColDef`.
   */
  colDefOverride: GridGroupingColDefOverride | null | undefined;
  strategy?: RowGroupingStrategy;
}
/**
 * Creates the `GridColDef` for a grouping column that only takes care of a single grouping criteria
 */
export declare const createGroupingColDefForOneGroupingCriteria: ({
  columnsLookup,
  groupedByColDef,
  groupingCriteria,
  colDefOverride,
  strategy
}: CreateGroupingColDefMonoCriteriaParams) => GridColDef;
interface CreateGroupingColDefSeveralCriteriaParams {
  apiRef: RefObject<GridApiPremium>;
  columnsLookup: GridColumnRawLookup;
  /**
   * The fields from which we are grouping the rows.
   */
  rowGroupingModel: GridRowGroupingModel;
  /**
   * The col def properties the user wants to override.
   * This value comes `prop.groupingColDef`.
   */
  colDefOverride: GridGroupingColDefOverride | null | undefined;
  strategy?: RowGroupingStrategy;
}
/**
 * Creates the `GridColDef` for a grouping column that takes care of all the grouping criteria
 */
export declare const createGroupingColDefForAllGroupingCriteria: ({
  apiRef,
  columnsLookup,
  rowGroupingModel,
  colDefOverride,
  strategy
}: CreateGroupingColDefSeveralCriteriaParams) => GridColDef;
export {};