import { Document, FilterQuery, Model, PipelineStage, Types, UpdateQuery, UpdateWithAggregationPipeline } from 'mongoose'; import { QueryOptions } from '../types'; export declare abstract class BaseRepository { readonly model: Model; protected constructor(model: Model); aggregate(pipeline?: PipelineStage[]): Promise; count(filter?: FilterQuery): Promise; create(object: object, { lean, populateOptions }?: QueryOptions): Promise; distinct(field: string, filter?: FilterQuery): Promise; find(filter?: FilterQuery, { lean, page, populateOptions, projection, size, sort }?: QueryOptions): Promise; findById(id: Types.ObjectId, filter?: FilterQuery, { lean, populateOptions, projection }?: QueryOptions): Promise; findByIdAndDelete(id: Types.ObjectId, force?: boolean, filter?: FilterQuery, { lean }?: QueryOptions): Promise; findByIdAndUpdate(id: Types.ObjectId, object: object, filter?: FilterQuery, { lean, populateOptions, projection, upsert }?: QueryOptions): Promise; findOne(filter: FilterQuery, { lean, populateOptions, projection }?: QueryOptions): Promise; updateMany(filter: FilterQuery, update: UpdateWithAggregationPipeline | UpdateQuery): Promise; }