import { SqlQuery } from './sql'; import type { BaseDatabase } from './database'; import { EntityClass } from './metadata'; import type { DatabaseSession } from './session'; type Direction = 'asc' | 'desc'; type DirectionInput = Direction | 'ASC' | 'DESC' | 1 | -1; export type FilterValue = unknown | { $in?: unknown[]; $nin?: unknown[]; $ne?: unknown; $gt?: unknown; $gte?: unknown; $lt?: unknown; $lte?: unknown; $like?: unknown; $notLike?: unknown; }; export type FilterRecord = Record; export type FilterQuery = Partial> & FilterRecord; export type PatchOperator = { $inc?: number; }; export type PatchValue = T | PatchOperator; export type PatchRecord = Partial<{ [K in keyof T]: PatchValue; }> & Record; export interface QueryMutationResult { affectedRows: number; readonly modified: number; primaryKeys: Record[]; } export declare class QueryBuilder { private db; private Entity; private session?; private filters; private selected?; private aggregateSelections; private order; private limitValue?; private offsetValue?; private lockForUpdate; constructor(db: BaseDatabase, Entity: EntityClass, session?: DatabaseSession | undefined); filter(filter: FilterRecord): this; filterField(field: keyof T | string, value: FilterValue): this; select(...fields: string[]): this; withMax(field: keyof T | string): this; orderBy(field: string, direction?: DirectionInput): this; sort(field: string | Record, direction?: DirectionInput): this; limit(limit: number): this; offset(offset: number): this; skip(offset: number): this; /** Locks selected rows until the active transaction completes. */ forUpdate(): this; find(): Promise; findField(field: K): Promise; findOneFieldOrUndefined(field: K): Promise; findOneField(field: K): Promise; findOneOrUndefined(): Promise; findOne(): Promise; has(): Promise; count(): Promise; patchMany(patch: PatchRecord): Promise; patchOne(patch: PatchRecord): Promise; deleteMany(): Promise; deleteOne(): Promise; toSelectSql(): SqlQuery; toCountSql(): SqlQuery; private buildSelectSql; private renderWhere; private findMutationTargets; private hydrate; private resolveColumnName; private resolveColumn; private renderPatchSet; private requirePrimaryKeyFilter; private assertObservedPrimaryKeyIsStable; private withTemporaryLimit; private runMutation; private runRead; } export {}; //# sourceMappingURL=query.d.ts.map