import type { CursorPaginator, Paginator, SimplePaginator } from './paginator'; import type { Operator } from './subquery'; export declare interface OrmDriver { find: (id: number) => Promise create: (data: Partial) => Promise update: (id: number, data: Partial) => Promise delete: (id: number) => Promise all: () => Promise where: (column: string, value: unknown) => Promise } export declare interface SelectedQuery { where(column: keyof TTable, ...args: [V] | [Operator, V]): SelectedQuery orWhere(...conditions: [keyof TTable, any][]): SelectedQuery whereIn(column: keyof TTable, values: V[]): SelectedQuery whereNotIn(column: keyof TTable, values: V[]): SelectedQuery whereBetween(column: keyof TTable, range: [V, V]): SelectedQuery whereRef(column: keyof TTable, ...args: string[]): SelectedQuery when(condition: boolean, callback: (query: SelectedQuery) => SelectedQuery): SelectedQuery whereNull(column: keyof TTable): SelectedQuery whereNotNull(column: keyof TTable): SelectedQuery whereLike(column: keyof TTable, value: string): SelectedQuery orderBy(column: keyof TTable, order: 'asc' | 'desc'): SelectedQuery orderByAsc(column: keyof TTable): SelectedQuery orderByDesc(column: keyof TTable): SelectedQuery groupBy(column: keyof TTable): SelectedQuery having(column: keyof TTable, operator: Operator, value: V): SelectedQuery inRandomOrder(): SelectedQuery whereColumn(first: keyof TTable, operator: Operator, second: keyof TTable): SelectedQuery skip(count: number): SelectedQuery take(count: number): SelectedQuery distinct(column: keyof TJson): SelectedQuery join(table: string, firstCol: string, secondCol: string): SelectedQuery first(): Promise | undefined> last(): Promise | undefined> firstOrFail(): Promise> find(id: number): Promise | undefined> findOrFail(id: number): Promise> findMany(ids: number[]): Promise[]> all(): Promise[]> get(): Promise[]> latest(column?: keyof TTable): Promise | undefined> oldest(column?: keyof TTable): Promise | undefined> paginate(perPage?: number, page?: number): Promise>> simplePaginate(perPage?: number, page?: number): Promise>> cursorPaginate( perPage?: number, cursor?: string | number | unknown[] | null, column?: keyof TTable | (keyof TTable)[], direction?: 'asc' | 'desc', ): Promise>> chunk(size: number, callback: (models: SelectedResult[]) => Promise): Promise pluck>(field: PK): Promise max(field: keyof TTable): Promise min(field: keyof TTable): Promise avg(field: keyof TTable): Promise sum(field: keyof TTable): Promise count(): Promise } export type SelectedResult = Pick> & { id: number }