import { z } from 'zod';
/** Sort direction for list operations */
export declare const SortDirectionSchema: z.ZodEnum<{
    asc: "asc";
    desc: "desc";
}>;
export type SortDirection = z.infer<typeof SortDirectionSchema>;
/** Base pagination parameters used by all list operations */
export declare const PaginationParamsSchema: z.ZodObject<{
    limit: z.ZodOptional<z.ZodNumber>;
    offset: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export type PaginationParams = z.infer<typeof PaginationParamsSchema>;
/** Sort parameters generic over allowed field names */
export declare const SortParamsSchema: <F extends z.ZodTypeAny>(sortFieldSchema: F) => z.ZodObject<{
    sort: z.ZodOptional<F>;
    direction: z.ZodOptional<z.ZodEnum<{
        asc: "asc";
        desc: "desc";
    }>>;
}, z.core.$strip>;
export type SortParams<F extends string = string> = {
    /** Field to sort by */
    sort?: F;
    /** Sort direction (default: 'desc') */
    direction?: SortDirection;
};
/** Combined list parameters = pagination + sorting */
export declare const ListParamsSchema: <F extends z.ZodTypeAny>(sortFieldSchema: F) => z.ZodObject<{
    limit: z.ZodOptional<z.ZodNumber>;
    offset: z.ZodOptional<z.ZodNumber>;
    sort: z.ZodOptional<F>;
    direction: z.ZodOptional<z.ZodEnum<{
        asc: "asc";
        desc: "desc";
    }>>;
}, z.core.$strip>;
export type ListParams<F extends string = string> = PaginationParams & SortParams<F>;
/** Standard paginated list response */
export declare const PaginatedListSchema: <T extends z.ZodTypeAny>(itemSchema: T) => z.ZodObject<{
    data: z.ZodArray<T>;
    total: z.ZodNumber;
    limit: z.ZodNumber;
    offset: z.ZodNumber;
    hasMore: z.ZodBoolean;
}, z.core.$strip>;
export type PaginatedList<T> = {
    /** Array of items */
    data: T[];
    /** Total number of items matching the query */
    total: number;
    /** Number of items requested per page */
    limit: number;
    /** Number of items skipped */
    offset: number;
    /** Whether more items are available */
    hasMore: boolean;
};
//# sourceMappingURL=pagination.d.ts.map