import * as React from 'react';
import { type ListSlots, ListSlotProps } from "./List.js";
import { DataSourceCache } from "./cache.js";
import type { DataModel, DataSource, OmitId } from './types';
export interface CrudProps<D extends DataModel> {
  /**
   * Server-side [data source](https://mui.com/toolpad/core/react-crud/#data-sources).
   */
  dataSource: DataSource<D>;
  /**
   * Root path to CRUD pages.
   */
  rootPath: string;
  /**
   * Initial number of rows to show per page.
   * @default 100
   */
  initialPageSize?: number;
  /**
   * Default form values for a new item.
   * @default {}
   */
  defaultValues?: Partial<OmitId<D>>;
  /**
   * [Cache](https://mui.com/toolpad/core/react-crud/#data-caching) for the data source.
   */
  dataSourceCache?: DataSourceCache | null;
  /**
   * The components used for each slot inside.
   * @default {}
   */
  slots?: {
    list: ListSlots;
  };
  /**
   * The props used for each slot inside.
   * @default {}
   */
  slotProps?: {
    list: ListSlotProps;
  };
}
/**
 *
 * Demos:
 *
 * - [CRUD](https://mui.com/toolpad/core/react-crud/)
 *
 * API:
 *
 * - [Crud API](https://mui.com/toolpad/core/api/crud)
 */
declare function Crud<D extends DataModel>(props: CrudProps<D>): React.JSX.Element;
declare namespace Crud {
  var propTypes: any;
}
export { Crud };