import type { Prisma } from "@prisma/client/extension";
import type { FieldsMap, ModelCreateInput, ModelSelectInput, ModelUpdateInput, PermissionsConfig, PrismaTypeMap, RecursiveContext, RelationMetadata } from "./types";
export declare class ModelResolver {
    protected permissionsConfig: PermissionsConfig<PrismaTypeMap, unknown>;
    protected context: unknown;
    protected fieldsMap: FieldsMap;
    protected authorizationError: Error;
    protected checkRequiredBelongsTo: boolean;
    constructor(permissionsConfig: PermissionsConfig<PrismaTypeMap, unknown>, context: unknown, fieldsMap: FieldsMap, authorizationError: Error, checkRequiredBelongsTo: boolean);
    resolveWhere(permissionDefinition: boolean | Record<string, unknown> | ((context: unknown) => Record<string, unknown> | Promise<Record<string, unknown>>), modelName: string, where: Record<string, unknown> | undefined): Promise<Record<string, unknown> | undefined>;
    resolveWhereUnique(permissionDefinition: boolean | Record<string, unknown> | ((context: unknown) => Record<string, unknown> | Promise<Record<string, unknown>>), modelName: string, whereUnique: Record<string, unknown>): Promise<Record<string, unknown>>;
    protected generateModelRelationsCount(modelName: string): Promise<ModelSelectInput>;
    protected resolveRelationSelect(modelName: string, select: ModelSelectInput, relationsMetadata: RelationMetadata[], recursiveContext: RecursiveContext): Promise<ModelSelectInput>;
    resolveSelectAndInclude(modelName: string, select: ModelSelectInput | null | undefined, include: ModelSelectInput | null | undefined, relationsMetadata: RelationMetadata[], recursiveContext: RecursiveContext): Promise<Record<string, unknown>>;
    resolveCreate(modelName: string, data: ModelCreateInput): Promise<ModelCreateInput>;
    resolveUpdate(modelName: string, data: ModelUpdateInput): Promise<ModelUpdateInput>;
    performRelationProcessing(transactionClient: Prisma.TransactionClient, result: unknown, relationsMetadata: RelationMetadata[]): Promise<unknown>;
}
