import Joi from 'joi'; import { AccessInfo } from '../auth'; export declare enum RecordStatus { ACTIVE = "ACTIVE", INACTIVE = "INACTIVE" } export type RoleModel = { ['*']?: Record; select?: Record; findUnique?: RoleModelFindUnique; findMany?: RoleModelFindMany; update?: RoleModelUpdate; updateMany?: RoleModelUpdateMany; delete?: RoleModelDelete; deleteMany?: RoleModelDeleteMany; create?: RoleModelCreate; createMany?: RoleModelCreateMany; }; export type RoleModelSelect = { model?: string; oneToOne?: boolean; }; export type RoleModelFindUnique = { where?: Record; }; export type RoleModelFindMany = { where?: Record[]; }; export type RoleModelUpdate = { where?: Record; data?: Record; }; export type RoleModelUpdateMany = { where?: Record[]; data?: Record; }; export type RoleModelDelete = { where?: Record; }; export type RoleModelDeleteMany = { where?: Record[]; }; export type RoleModelCreate = { data?: Record; }; export type RoleModelCreateMany = { data?: Record; }; export type BaseModelErrorHandler = (error: TypeError, params: BaseModelMiddlewareParams, context: BaseModelQueryContext) => never; export type BaseModelQueryHandler = () => Promise; export declare const OmitCreateInput: { createdBy: number; createdByName: string; }; export declare const OmitUpdateInput: { updatedBy: number; updatedByName: string; }; export declare function amendCreateInput(accessInfo: AccessInfo): { createdBy: number; createdByName: string; }; export declare function amendUpdateInput(accessInfo: AccessInfo): { updatedBy: number; updatedByName: string; }; export type BaseModelMiddlewareParams = { model?: string; action: string; args: any; dataPath: string[]; runInTransaction: boolean; }; export type BaseModelBatchPayload = { count: number; }; export type BaseModelSchemas = { schemaCreateInput?: Joi.ObjectSchema; schemaUpdateInput?: Joi.ObjectSchema; }; export type BaseModelQueryContext = { schemas: BaseModelSchemas; accessInfo: AccessInfo; disableRestriction?: boolean; overrideAuthor?: boolean; }; export declare class BaseModelMiddleware { readonly client: PrismaClient; private errorHandler; private asyncLocalStorage; constructor(client: PrismaClient, errorHandler?: BaseModelErrorHandler); run(context: BaseModelQueryContext, promise: BaseModelQueryHandler): Promise; private process; private packFindUniqueArgs; private packFindManyArgs; private packCreateArgs; private packCreateManyArgs; private packUpdateArgs; private packUpdateManyArgs; private packUpsertArgs; private packDeleteArgs; private packDeleteManyArgs; private restrictCreate; private restrictSelect; private restrictInclude; private restrictWhere; private restrictWhereUnique; private restrictFields; private getRoleModel; private selectableModel; }