import { ClientSession, Model } from 'mongoose'; import { PartialDeep } from 'type-fest'; import { FileProps } from '../../storage/decorators'; import { FileManager } from '../../storage'; import { AggregateRequest, AggregateResponse, QueryRequest, QueryResponse } from '../dto'; import { ResourceService } from './resource.service'; import { ResourcePolicyService } from '../policy'; import { ResourceSchema } from '../schema'; type ModelReferences = { fields: string[]; references: string[]; virtuals: string[]; embedded: string[]; files: string[]; fileProps: Record; refProps: Record; embeddedTypes: Record; }; export declare abstract class MongooseResourceService extends ResourcePolicyService implements ResourceService { protected model: Model; protected fileManager?: FileManager; static modelRelationNames: Record; static modelReferences: Record; private static replicationEnabled; private readonly log; protected isProtected: boolean; protected session?: ClientSession; protected constructor(model: Model, fileManager?: FileManager); startTransaction(options?: any): Promise<{ session: ClientSession; }>; useWith(sessionManager: ClientSession): MongooseResourceService; asProtected(): ResourceService; find(id: string): Promise; query(queryDto: QueryRequest): Promise>; aggregate(aggregateDto: AggregateRequest): Promise>; create(createDto: PartialDeep): Promise; createBulk(createDtos: PartialDeep[]): Promise; update(id: string, updateDto: PartialDeep, isFileUpload?: boolean): Promise; updateBulk(updateDtos: PartialDeep[]): Promise; delete(id: string): Promise; deleteBulk(ids: (string | number)[]): Promise; private findResource; private makeSession; private errorReasonsList; private populateModelDeep; private makePopulationArray; private populateModelAllFields; private cascadeRelations; private persistResourceFiles; private resourceFilesToDelete; private resolveFilterSubReferences; private modelNameFromFieldList; private relationModelNames; private fields; private referencedFields; private virtualFields; private embeddedFields; private fileFields; private fileProps; private refProps; private refProp; private embeddedTypes; private embeddedType; private initRelationModelNames; private initAllReferences; private makeReferences; private setModel; private setProtected; private setSession; private setFileManager; } export {};