import { EntityManager, QueryRunner, ReplicationMode, Repository } from 'typeorm'; import { PartialDeep } from 'type-fest'; import { RelationMetadata } from 'typeorm/metadata/RelationMetadata'; import { IsolationLevel } from 'typeorm/driver/types/IsolationLevel'; import { FileManager, FileProps } from '../../storage'; import { PopulateRelationConfig } from '../decorators'; import { AggregateRequest, AggregateResponse, QueryRequest, QueryResponse } from '../dto'; import { ResourceService } from './resource.service'; import { ResourceEntity } from '../entity'; import { ResourcePolicyService } from '../policy'; type ModelReferences = { fields: string[]; files: string[]; relations: string[]; relationMetadata: Record; relationPopulation: Record; fileProps: Record; }; export declare abstract class TypeOrmResourceService extends ResourcePolicyService implements ResourceService { protected repository: Repository; protected fileManager?: FileManager; static modelRelationNames: Record; static modelReferences: Record; private readonly log; protected isProtected: boolean; protected entityManager?: EntityManager; protected constructor(repository: Repository, fileManager?: FileManager); startTransaction(isolationLevel?: IsolationLevel, replicationMode?: ReplicationMode): Promise<{ queryRunner: QueryRunner; manager: EntityManager; }>; useWith(sessionManager: EntityManager): TypeOrmResourceService; asProtected(): TypeOrmResourceService; find(id: string | number): Promise; query(queryDto: QueryRequest): Promise>; aggregate(aggregateDto: AggregateRequest): Promise>; create(createDto: PartialDeep): Promise; createBulk(createDtos: PartialDeep[]): Promise; update(id: string | number, updateDto: PartialDeep, isFileUpload?: boolean): Promise; updateBulk(updateDtos: PartialDeep[]): Promise; delete(id: string | number): Promise; deleteBulk(ids: (string | number)[]): Promise; private findResource; private repositoryAndRunner; private makeQueryBuilderParts; private buildWhereQuery; private replaceQueryJoinAlias; private buildJoinRelations; private makeRelationQueryJoins; private makeAliasAndPath; private filtersAliasAndPaths; private relationsToPopulate; private eagerRelationsList; private persistResourceFiles; private updateFilesMetaResourceIds; private resourceFilesToDelete; private relationModelNames; private fields; private relationFields; private relationMetadata; private relationMetadataList; private relationPopulation; private relationPopulationList; private fileFields; private fileProps; private initRelationModelNames; private initAllReferences; private makeReferences; private setRepository; private setProtected; private setEntityManager; private setFileManager; } export {};