import { AnyColumn, SQL } from 'drizzle-orm';

declare function withCursorPagination<PrimaryColumn extends AnyColumn, TableColumns extends PrimaryColumn['table']['_']['columns'], SecondaryColumn extends TableColumns[keyof TableColumns], PrimaryCursor extends ReturnType<PrimaryColumn['mapFromDriverValue']> | undefined, SecondaryCursor extends ReturnType<SecondaryColumn['mapFromDriverValue']> | undefined, Order extends 'asc' | 'desc'>({ cursors, limit, where: inputWhere }: {
    limit: number;
    where?: SQL;
} & ({
    cursors: [
        [
            PrimaryColumn,
            Order
        ] | [PrimaryColumn, Order, PrimaryCursor]
    ];
} | {
    cursors: [
        [
            PrimaryColumn,
            Order
        ] | [PrimaryColumn, Order, PrimaryCursor],
        ([SecondaryColumn, Order] | [SecondaryColumn, Order, SecondaryCursor])
    ];
})): {
    orderBy: SQL[];
    limit: number;
    where?: SQL;
};

export { withCursorPagination };
