import { AggregateQuery, AggregateResponse, Class, Filter, FindRelationOptions, GetByIdOptions, ModifyRelationOptions, Query } from '@ptc-org/nestjs-query-core'; import { DocumentType } from '@typegoose/typegoose'; import { Base } from '@typegoose/typegoose/lib/defaultClasses'; import { FilterQueryBuilder } from '../query'; import { ReturnModelType } from '../typegoose-types.helper'; export declare abstract class ReferenceQueryService { readonly Model: ReturnModelType Entity>; abstract readonly filterQueryBuilder: FilterQueryBuilder; protected constructor(Model: ReturnModelType Entity>); abstract getById(id: string | number, opts?: GetByIdOptions): Promise>; aggregateRelations(RelationClass: Class, relationName: string, entities: DocumentType[], filter: Filter, aggregate: AggregateQuery): Promise, AggregateResponse>[]>>; aggregateRelations(RelationClass: Class, relationName: string, dto: DocumentType, filter: Filter, aggregate: AggregateQuery): Promise>[]>; countRelations(RelationClass: Class, relationName: string, entities: DocumentType[], filter: Filter): Promise, number>>; countRelations(RelationClass: Class, relationName: string, dto: DocumentType, filter: Filter): Promise; findRelation(RelationClass: Class, relationName: string, dtos: DocumentType[], opts?: FindRelationOptions): Promise>; findRelation(RelationClass: Class, relationName: string, dto: DocumentType, opts?: FindRelationOptions): Promise | undefined>; queryRelations(RelationClass: Class, relationName: string, entities: DocumentType[], query: Query): Promise, DocumentType[]>>; queryRelations(RelationClass: Class, relationName: string, dto: DocumentType, query: Query): Promise[]>; addRelations(relationName: string, id: string, relationIds: (string | number)[], opts?: ModifyRelationOptions): Promise>; setRelations(relationName: string, id: string, relationIds: (string | number)[], opts?: ModifyRelationOptions): Promise>; setRelation(relationName: string, id: string | number, relationId: string | number, opts?: ModifyRelationOptions): Promise>; removeRelation(relationName: string, id: string | number, relationId: string | number, opts?: ModifyRelationOptions): Promise>; removeRelations(relationName: string, id: string | number, relationIds: string[] | number[], opts?: ModifyRelationOptions): Promise>; private getReferenceEntity; private isReferencePath; private isVirtualPath; private getReferenceFilter; private getObjectIdReferenceFilter; private getVirtualReferenceFilter; private getReferenceModel; private getRefCount; private getReferenceQueryBuilder; private checkForReference; private findAndUpdate; }