/// <reference types="mongoose/types/types" />
/// <reference types="react" />
import { Types } from "mongoose";
import { z } from "zod";
export type TData = object;
export declare const paginatedRequestSchema: z.ZodObject<{
    /**
     * The page number to retrieve
     */
    pageIndex: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    /**
     * The number of items retrieve
     */
    pageSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    /**
     * Search query
     */
    search: z.ZodOptional<z.ZodString>;
    /**
     * String array of filters
     */
    filters: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
    pageIndex: number;
    pageSize: number;
    search?: string | undefined;
    filters?: string[] | undefined;
}, {
    pageIndex?: number | undefined;
    pageSize?: number | undefined;
    search?: string | undefined;
    filters?: string[] | undefined;
}>;
export type PaginatedRequest = z.infer<typeof paginatedRequestSchema>;
export interface PaginatedResponse<T> {
    data: T[];
    nextPage: number | undefined;
    pageCount: number;
}
export declare const pageLimitOptions: number[];
/**
 * A field which can be displayed in the data table as a result of a database query or transformer
 */
export type DataTableField = string | number | Date | Types.ObjectId | JSX.Element | null | undefined | boolean | any | any[];
/**
 * A data table record which is either a database record as TData or a DataTableField
 */
export type DataTableRecord<T extends TData> = T | Record<string, DataTableField>;
/**
 * A data transformer which can be used to transform the data to be displayed in the table.
 */
export type DataTableTransformer<T extends TData> = (data: T[]) => DataTableRecord<T>[];
//# sourceMappingURL=data-table.d.ts.map