import { PipelineStage, PopulateOptions, AnyBulkWriteOperation, MongooseBulkWriteOptions, FilterQuery, AggregateOptions, Document } from 'mongoose'; import { META } from '../../definitions'; import { RetryExecutor } from '../infrastructure/retry'; /** * Aggregate operations for repository */ export interface CrudAggregateConfig { modelName: string; logger?: any; } export declare class CrudAggregateOperations { private readonly config; private readonly retryExecutor; constructor(config: CrudAggregateConfig, retryExecutor: RetryExecutor); /** * Executes aggregation pipeline */ aggregate(pipeline?: PipelineStage[], options?: AggregateOptions, meta?: META): Promise; /** * Populates document references */ populate(docs: any, populateOptions: PopulateOptions | PopulateOptions[]): Promise; /** * Finds documents and populates references */ findAndPopulate(cond: FilterQuery, populateOptions: PopulateOptions | PopulateOptions[], meta?: META): Promise; /** * Executes bulk write operations */ bulkWrite(operations: AnyBulkWriteOperation[], options?: MongooseBulkWriteOptions, meta?: META): Promise; }