import { DataGridProProps, GridApiPro, GridColDef, GridColumnPinningState, GridSlotProps, GridValidRowModel } from '@mui/x-data-grid-pro';

interface SortObject {
    sorted?: boolean;
    unsorted?: boolean;
    empty?: boolean;
}
interface PageableObject {
    offset?: number;
    sort?: SortObject;
    pageSize?: number;
    pageNumber?: number;
    paged?: boolean;
    unpaged?: boolean;
}
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> extends DataGridProProps {
    rowsData: GenericPageDataDto<T> | undefined;
    isLoading: boolean;
    columns: GridColDef<T>[];
    offset?: number;
    pinnedColumns?: GridColumnPinningState;
    exportDataAsExcel?: (gridApiRef: React.MutableRefObject<GridApiPro>) => void;
    onGridApiRef?: (gridApiRef: React.MutableRefObject<GridApiPro>) => void;
    slotProps?: Partial<GridSlotProps>;
    gridApiRef: React.MutableRefObject<GridApiPro>;
}
export {};
