import { PrismaClient } from '@prisma/client'; import Joi from 'joi'; import { AccessInfo } from '../auth'; import { BaseModel, BaseModelBrowseArgs, BaseModelBrowseReturn } from '../model'; type Service = { entityName: string; model: any; schemaBrowse: Joi.ObjectSchema; schemaRead: Joi.ObjectSchema; schemaEdit: Joi.ObjectSchema; schemaAdd: Joi.ObjectSchema; schemaDelete: Joi.ObjectSchema; schemaActivate: Joi.ObjectSchema; schemaDeactivate: Joi.ObjectSchema; auditTrail?: boolean; auditTrailAttrs?: string[]; autoCacheIdForResolver?: boolean; }; export declare enum MutationAction { ADD = "add", EDIT = "edit", ACTIVATE = "activate", DEACTIVATE = "deactivate" } export type RecordConfig = { action?: string; remark?: string; includeInactive?: boolean; transaction?: Omit; }; export type NoInput = Record; export declare class BaseService { readonly BASE_SERVICE_LOG: boolean; readonly BASE_SERVICE_FILTER_ORG: boolean; protected readonly entityName: string; readonly model: BaseModel & { instance: BaseModel; }; readonly schemaBrowse: Joi.ObjectSchema; readonly schemaRead: Joi.ObjectSchema; readonly schemaEdit: Joi.ObjectSchema; readonly schemaAdd: Joi.ObjectSchema; readonly schemaDelete: Joi.ObjectSchema; readonly schemaActivate: Joi.ObjectSchema; readonly schemaDeactivate: Joi.ObjectSchema; readonly auditTrail: boolean; readonly auditTrailAttrs: string[]; readonly autoCacheIdForResolver: boolean; readonly schemaNoInput: Joi.ObjectSchema; readonly selective: object; constructor({ auditTrail, auditTrailAttrs, autoCacheIdForResolver, entityName, model, schemaActivate, schemaAdd, schemaBrowse, schemaDeactivate, schemaDelete, schemaEdit, schemaRead }: Service); protected filterOrganization(_params: Browse | Read | Edit | Delete | Activate | Deactivate, _accessInfo: AccessInfo): void; protected filterRecordStatus(_params: Browse | Read | Edit | Delete | Activate | Deactivate, _accessInfo: AccessInfo): void; browse(params: Browse, accessInfo: AccessInfo, config?: RecordConfig): Promise>; read(params: Read, accessInfo: AccessInfo, config?: RecordConfig): Promise; edit(params: Edit, accessInfo: AccessInfo, config?: RecordConfig): Promise; add(params: Add, accessInfo: AccessInfo, config?: RecordConfig): Promise; delete(params: Delete, accessInfo: AccessInfo, config?: RecordConfig): Promise; activate(params: Activate, accessInfo: AccessInfo, config?: RecordConfig): Promise; deactivate(params: Deactivate, accessInfo: AccessInfo, config?: RecordConfig): Promise; } export declare class BaseServiceEx extends BaseService { protected filterOrganization(_params: Browse | Read | Edit | Delete | Activate | Deactivate, _accessInfo: AccessInfo): void; protected filterRecordStatus(_params: Browse | Read | Edit | Delete | Activate | Deactivate, _accessInfo: AccessInfo): void; activate(params: Activate, accessInfo: AccessInfo, config?: RecordConfig): Promise; deactivate(params: Deactivate, accessInfo: AccessInfo, config?: RecordConfig): Promise; } export {};