import { type ModelMeta } from '../../cross'; import type { DbClientContract, ErrorTransformer } from '../../types'; import type { InternalEnhancementOptions } from './create-enhancement'; /** * Prisma batch write operation result */ export type BatchResult = { count: number; }; /** * Interface for proxy that intercepts Prisma operations. */ export interface PrismaProxyHandler { findUnique(args: any): Promise; findUniqueOrThrow(args: any): Promise; findFirst(args: any): Promise; findFirstOrThrow(args: any): Promise; findMany(args: any): Promise; create(args: any): Promise; createMany(args: { data: any; skipDuplicates?: boolean; }): Promise; createManyAndReturn(args: { data: any; select?: any; skipDuplicates?: boolean; }): Promise; update(args: any): Promise; updateMany(args: any): Promise; updateManyAndReturn(args: any): Promise; upsert(args: any): Promise; delete(args: any): Promise; deleteMany(args: any): Promise; aggregate(args: any): Promise; groupBy(args: any): Promise; count(args: any): Promise; subscribe(args: any): Promise; stream(args: any): Promise; } /** * All Prisma operation names */ export type PrismaProxyActions = keyof PrismaProxyHandler; /** * A default implementation of @see PrismaProxyHandler which directly * delegates to the wrapped Prisma client. It offers a few overridable * methods to allow more easily inject custom logic. */ export declare class DefaultPrismaProxyHandler implements PrismaProxyHandler { protected readonly prisma: DbClientContract; protected readonly model: string; protected readonly options: InternalEnhancementOptions; constructor(prisma: DbClientContract, model: string, options: InternalEnhancementOptions); protected withFluentCall(method: PrismaProxyActions, args: any, postProcess?: boolean): Promise; protected deferred(method: PrismaProxyActions, args: any, postProcess?: boolean): Promise; findUnique(args: any): Promise; findUniqueOrThrow(args: any): Promise; findFirst(args: any): Promise; findFirstOrThrow(args: any): Promise; findMany(args: any): Promise; create(args: any): Promise; createMany(args: { data: any; skipDuplicates?: boolean; }): Promise<{ count: number; }>; createManyAndReturn(args: { data: any; select?: any; skipDuplicates?: boolean; }): Promise; update(args: any): Promise; updateMany(args: any): Promise<{ count: number; }>; updateManyAndReturn(args: any): Promise; upsert(args: any): Promise; delete(args: any): Promise; deleteMany(args: any): Promise<{ count: number; }>; aggregate(args: any): Promise; groupBy(args: any): Promise; count(args: any): Promise; subscribe(args: any): Promise<{ [Symbol.asyncIterator]: () => { next: () => Promise<{ done: any; value: any; }>; return: () => any; throw: () => any; }; }>; stream(args: any): Promise<{ [Symbol.asyncIterator]: () => { next: () => Promise<{ done: any; value: any; }>; return: () => any; throw: () => any; }; }>; private doSubscribeStream; /** * Processes result entities before they're returned */ protected processResultEntity(_method: PrismaProxyActions, data: T): Promise; /** * Processes query args before they're passed to Prisma. */ protected preprocessArgs(_method: PrismaProxyActions, args: any): Promise; } /** * Makes a Prisma client proxy. */ export declare function makeProxy(prisma: any, modelMeta: ModelMeta, makeHandler: (prisma: object, model: string) => T, name?: string, errorTransformer?: ErrorTransformer): any;