import { GridApiPro, GridCallbackDetails, GridColDef, GridColumnPinningState, GridFilterModel, GridRowParams, GridValidRowModel } from '@mui/x-data-grid-pro';
interface SortState {
    field: string;
    direction: 'asc' | 'desc' | '';
}
export interface PaginationAndSortState {
    page: number;
    size: number;
    sort: SortState;
}
export interface SortObject {
    sorted?: boolean;
    unsorted?: boolean;
    empty?: boolean;
}
export interface PageableObject {
    offset?: number;
    sort?: SortObject;
    pageSize?: number;
    pageNumber?: number;
    paged?: boolean;
    unpaged?: boolean;
}
export interface GenericPageDataDto<T> {
    total_elements?: number;
    total_pages?: number;
    size?: number;
    content?: T[];
    number?: number;
    sort?: SortObject;
    pageable?: PageableObject;
    first?: boolean;
    last?: boolean;
    number_of_elements?: number;
    empty?: boolean;
}
export interface TableWithPaginationProps<T extends GridValidRowModel> {
    rowsData: GenericPageDataDto<T> | undefined;
    isLoading: boolean;
    columns: GridColDef<T>[];
    tableKey: string;
    offset?: number;
    pinnedColumns?: GridColumnPinningState;
    paginationAndSortState: PaginationAndSortState;
    setPaginationAndSortState: (paginationAndSortState: PaginationAndSortState) => void;
    filterModel?: GridFilterModel;
    onFilterModelChange?: (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => void;
    exportDataAsExcel?: (gridApiRef: React.MutableRefObject<GridApiPro>) => void;
    onExport?: (type: 'CSV' | 'EXCEL' | 'PRINT') => void;
    showPaginationFirstAndLastButtons?: boolean;
    getRowId?: (row: T) => string;
    getDetailPanelContent?: (params: GridRowParams<T>) => React.ReactNode;
    getDetailPanelHeight?: (params: GridRowParams<T>) => number | 'auto';
}
export {};
