import { EnhancementContext, type DbClientContract } from '../../../types'; import type { InternalEnhancementOptions } from '../create-enhancement'; import { PrismaProxyHandler } from '../proxy'; import type { PermissionCheckArgs } from '../types'; /** * Prisma proxy handler for injecting access policy check. */ export declare class PolicyProxyHandler implements PrismaProxyHandler { private readonly prisma; private readonly options; private readonly context?; private readonly logger; private readonly policyUtils; private readonly model; private readonly modelMeta; private readonly prismaModule; private readonly queryUtils; constructor(prisma: DbClient, model: string, options: InternalEnhancementOptions, context?: EnhancementContext | undefined); private get modelClient(); findUnique(args: any): Promise; findUniqueOrThrow(args: any): Promise; findFirst(args?: any): Promise; findFirstOrThrow(args: any): Promise; findMany(args?: any): Promise; private findWithFluent; private doFind; create(args: any): Promise; private doCreate; private hasNestedCreateOrConnect; private validateCreateInputSchema; createMany(args: { data: any; skipDuplicates?: boolean; }): Promise<{ count: number; }>; createManyAndReturn(args: { data: any; select?: any; skipDuplicates?: boolean; }): Promise; /** * Preprocess the payload of `createMany` and `createManyAndReturn` and update in place if needed. * @returns `true` if the operation should be converted to regular `create`s; false otherwise. */ private preprocessCreateManyPayload; private hasRelationFieldsInPayload; private validateCreateInput; private doCreateMany; private hasDuplicatedUniqueConstraint; update(args: any): Promise; private doUpdate; private calculatePostUpdateIds; private overrideForeignKeyFields; private validateUpdateInputSchema; updateMany(args: any): Promise; updateManyAndReturn(args: any): Promise; private doUpdateMany; 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 handleSubscribeStream; /** * Checks if the given operation is possibly allowed by the policy, without querying the database. * @param operation The CRUD operation. * @param fieldValues Extra field value filters to be combined with the policy constraints. */ check(args: PermissionCheckArgs): Promise; private get shouldLogQuery(); private runPostWriteChecks; private requireBackLink; private mergeToParent; private removeFromParent; private buildIdFilterWithEntityChecker; }