import { Model, PipelineStage, Aggregate } from "mongoose"; import { Documentable } from "../concerns/Documentable"; import { Queryable } from "../concerns/Queryable"; import { PaginatedResultDTO } from "../models/PaginatedResultDTO"; import { UnknownFieldValue } from "../types/UnknownFieldValue"; import { UnsafeQueryConditions } from "../types/UnsafeQueryConditions"; import { MongoQueryConditions } from "../types/MongoQueryConditions"; import { MongoQueryConditionValue } from "../types/MongoQueryConditionValue"; import { MongoQueryCursor } from "../types/MongoQueryCursor"; import { MongoQueryPipeline } from "../types/MongoQueryPipeline"; import { MongoRoutineCount } from "../types/MongoQueryRoutines"; import { MongoQueryOperations } from "../types/MongoQueryOperations"; export declare type SearchQuery = { queryCursor: MongoQueryCursor; querySorter: Record; searchQuery: MongoQueryConditions; }; export declare class QueryService = Model> { count(query: Queryable, model: TModel): Promise; exists(query: Queryable, model: TModel): Promise; findWithTotal(query: Queryable, model: TModel, ops?: MongoQueryOperations): Promise>; find(query: Queryable, model: TModel): Promise>; findOne(query: Queryable, model: TModel, stripDocument?: boolean): Promise; createOrUpdate(query: Queryable, model: TModel, data: Record, ops?: MongoQueryOperations): Promise; updateBatch(model: TModel, documents: TDocument[]): Promise; union(query: Queryable, model: TModel, unionWith: Map>, metadata?: MongoRoutineCount[]): Promise>; protected getQueryConfig(query: Queryable): SearchQuery; protected getAggregateFindQuery(query: Queryable, unionWith?: Map>, metadata?: MongoRoutineCount[]): MongoQueryPipeline; aggregate(query: PipelineStage[], model: TModel): Promise>; protected sanitizeSearchQuery(searchQuery: UnsafeQueryConditions): MongoQueryConditions; protected typecastField(value: UnknownFieldValue): MongoQueryConditionValue; }