import type { PgTableWithColumns } from "drizzle-orm/pg-core"; import type { RelationalQueryBuilder } from "drizzle-orm/pg-core/query-builders/query"; import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; import type { KnownKeysOnly } from "drizzle-orm/utils"; export interface OrderBy { sortBy: string; sortOrder: "asc" | "desc"; } export interface Paging { page: number; pageSize: number; } export interface Config extends KnownKeysOnly { criteria?: Partial; order?: OrderBy; paging?: Paging; limit?: number; offset?: number; with?: Record; } export interface Page { result: T[]; hasMore: boolean; } export interface IRepository { findFirst(criteria: Partial, config?: Config): Promise; findMany(config?: Config): Promise; findPage(config?: Config): Promise>; create(createWith: TI): Promise; update(id: string, updateWith: TI): Promise; delete(id: string): Promise; } export declare const createRepo: , T extends { [key: string]: any; }, TI extends { [key: string]: any; }>(db: PostgresJsDatabase, table: PgTableWithColumns, queryBuilder: RelationalQueryBuilder) => IRepository;