import * as React from 'react';
import { GridRowModel, GridFilterModel, GridSortModel, GridRowId, GridFilterOperator, GridColDef } from '@mui/x-data-grid-pro';
import { UseDemoDataOptions } from './useDemoData';
/**
 * Simulates server data loading
 */
export declare const loadServerRows: (rows: GridRowModel[], queryOptions: QueryOptions, serverOptions: ServerOptions, columnsWithDefaultColDef: GridColDef[]) => Promise<FakeServerResponse>;
interface FakeServerResponse {
    returnedRows: GridRowModel[];
    nextCursor?: string;
    totalRowCount: number;
}
interface PageInfo {
    totalRowCount?: number;
    nextCursor?: string;
    pageSize?: number;
}
interface DefaultServerOptions {
    minDelay: number;
    maxDelay: number;
    useCursorPagination?: boolean;
}
declare type ServerOptions = Partial<DefaultServerOptions>;
export interface QueryOptions {
    cursor?: GridRowId;
    page?: number;
    pageSize?: number;
    filterModel?: GridFilterModel;
    sortModel?: GridSortModel;
    firstRowToRender?: number;
    lastRowToRender?: number;
}
export declare const createFakeServer: (dataSetOptions?: Partial<UseDemoDataOptions>, serverOptions?: ServerOptions) => {
    columns: import("..").GridColDefGenerator[];
    columnsWithDefaultColDef: {
        generateData?: ((row: any, context: import("..").GridDataGeneratorContext) => any) | undefined;
        dataGeneratorUniquenessEnabled?: boolean | undefined;
        field: string;
        headerName?: string | undefined;
        description?: string | undefined;
        width?: number | undefined;
        flex?: number | undefined;
        minWidth?: number | undefined;
        maxWidth?: number | undefined;
        hide?: boolean | undefined;
        hideable?: boolean | undefined;
        sortable?: boolean | undefined;
        sortingOrder?: import("@mui/x-data-grid-pro").GridSortDirection[] | undefined;
        resizable?: boolean | undefined;
        editable?: boolean | undefined;
        groupable?: boolean | undefined;
        pinnable?: boolean | undefined;
        sortComparator?: import("@mui/x-data-grid-pro").GridComparatorFn<any> | undefined;
        type?: string | undefined;
        valueOptions?: import("@mui/x-data-grid-pro").ValueOptions[] | ((params: import("@mui/x-data-grid-pro").GridValueOptionsParams<any>) => import("@mui/x-data-grid-pro").ValueOptions[]) | undefined;
        align?: import("@mui/x-data-grid-pro").GridAlignment | undefined;
        valueGetter?: ((params: import("@mui/x-data-grid-pro").GridValueGetterParams<any, any>) => any) | undefined;
        valueSetter?: ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<any, any>) => any) | undefined;
        valueFormatter?: ((params: import("@mui/x-data-grid-pro").GridValueFormatterParams<any>) => any) | undefined;
        valueParser?: ((value: any, params?: import("@mui/x-data-grid-pro").GridCellParams<any, any, any> | undefined) => any) | undefined;
        cellClassName?: import("@mui/x-data-grid-pro").GridCellClassNamePropType | undefined;
        renderCell?: ((params: import("@mui/x-data-grid-pro").GridRenderCellParams<any, any, any>) => React.ReactNode) | undefined;
        renderEditCell?: ((params: import("@mui/x-data-grid-pro").GridRenderEditCellParams<any, any, any>) => React.ReactNode) | undefined;
        preProcessEditCellProps?: ((params: import("@mui/x-data-grid-pro").GridPreProcessEditCellProps<any, any>) => import("@mui/x-data-grid-pro").GridEditCellProps<any> | Promise<import("@mui/x-data-grid-pro").GridEditCellProps<any>>) | undefined;
        headerClassName?: import("@mui/x-data-grid-pro").GridColumnHeaderClassNamePropType | undefined;
        renderHeader?: ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<any, any, any>) => React.ReactNode) | undefined;
        headerAlign?: import("@mui/x-data-grid-pro").GridAlignment | undefined;
        hideSortIcons?: boolean | undefined;
        disableColumnMenu?: boolean | undefined;
        filterable?: boolean | undefined;
        filterOperators?: GridFilterOperator<any, any, any>[] | undefined;
        getApplyQuickFilterFn?: ((value: any, colDef: import("@mui/x-data-grid-pro").GridStateColDef<any, any, any>, apiRef: React.MutableRefObject<import("@mui/x-data-grid/internals").GridApiCommunity>) => ((params: import("@mui/x-data-grid-pro").GridCellParams<any, any, any>) => boolean) | null) | undefined;
        disableReorder?: boolean | undefined;
        disableExport?: boolean | undefined;
        colSpan?: number | ((params: import("@mui/x-data-grid-pro").GridCellParams<any, any, any>) => number | undefined) | undefined;
        aggregable?: boolean | undefined;
        availableAggregationFunctions?: string[] | undefined;
        groupingValueGetter?: ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<any, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | undefined;
        extendType?: import("@mui/x-data-grid-pro").GridNativeColTypes | undefined;
    }[];
    initialState: {
        columns: {
            columnVisibilityModel: import("@mui/x-data-grid-pro").GridColumnVisibilityModel;
        };
    };
    useQuery: (queryOptions: QueryOptions) => {
        pageInfo: PageInfo;
        data: GridRowModel[];
        isLoading: boolean;
    };
};
export {};
