import type { GridRowId, GridPinnedColumnFields } from '@mui/x-data-grid';
import type { GridRowScrollEndParams, GridRowOrderChangeParams, GridFetchRowsParams } from "../models/index.mjs";
import type { GridRenderHeaderFilterProps } from "../components/headerFiltering/GridHeaderFilterCell.mjs";
import type { GridColumnPinningInternalCache } from "../hooks/features/columnPinning/gridColumnPinningInterface.mjs";
import type { GridCanBeReorderedPreProcessingContext } from "../hooks/features/columnReorder/columnReorderInterfaces.mjs";
import type { GridRowPinningInternalCache } from "../hooks/features/rowPinning/gridRowPinningInterface.mjs";
export interface GridColDefPro {
  /**
   * Allows to render a component in the column header filter cell.
   * @param {GridRenderHeaderFilterProps} params Object containing parameters for the renderer and `inputRef`.
   * @returns {React.ReactNode} The element to be rendered.
   */
  renderHeaderFilter?: (params: GridRenderHeaderFilterProps) => React.ReactNode;
}
export interface GridControlledStateEventLookupPro {
  /**
   * Fired when the open detail panels are changed.
   * @ignore - do not document.
   */
  detailPanelsExpandedRowIdsChange: {
    params: Set<GridRowId>;
  };
  /**
   * Fired when the pinned columns is changed.
   * @ignore - do not document.
   */
  pinnedColumnsChange: {
    params: GridPinnedColumnFields;
  };
}
export interface GridEventLookupPro {
  /**
   * Fired when scrolling to the bottom of the grid viewport.
   */
  rowsScrollEnd: {
    params: GridRowScrollEndParams;
  };
  /**
   * Fired when the user ends reordering a row.
   */
  rowOrderChange: {
    params: GridRowOrderChangeParams;
  };
  /**
   * Fired when a new batch of rows is requested to be loaded. Called with a [[GridFetchRowsParams]] object.
   * Used to trigger `onFetchRows`.
   */
  fetchRows: {
    params: GridFetchRowsParams;
  };
}
export interface GridPipeProcessingLookupPro {
  canBeReordered: {
    value: boolean;
    context: GridCanBeReorderedPreProcessingContext;
  };
}
export interface GridApiCachesPro {
  columnPinning: GridColumnPinningInternalCache;
  pinnedRows: GridRowPinningInternalCache;
}
declare module '@mui/x-data-grid' {
  interface GridEventLookup extends GridEventLookupPro {}
  interface GridControlledStateEventLookup extends GridControlledStateEventLookupPro {}
  interface GridPipeProcessingLookup extends GridPipeProcessingLookupPro {}
}
declare module '@mui/x-data-grid/internals' {
  interface GridApiCaches extends GridApiCachesPro {}
  interface GridBaseColDef extends GridColDefPro {}
}