/**
 * Mongoose Aggregate Repository - MongoDB Implementation
 *
 * Extends BaseMongooseRepository with unified aggregation capabilities
 * Converts ComplexQueryConfig to MongoDB aggregation pipelines
 *
 * Key Features:
 * - Native MongoDB aggregation pipeline optimization
 * - Single query with $facet for parallel data+count
 * - Complex joins using $lookup stages
 * - Aggregation operations with $group stages
 * - Enterprise performance monitoring
 */
import { Model, Document } from 'mongoose';
import { BaseMongooseRepository } from './base-mongoose.repository';
import { IAggregateRepository, AggregationPipeline, QueryBuilderFunction, ComplexQueryConfig, PaginatedResult, PaginationDto, JoinConfig, AggregationConfig } from './base-aggregate.repository';
/**
 * Mongoose implementation of unified aggregation repository
 * Converts universal ComplexQueryConfig to MongoDB aggregation pipelines
 */
export declare abstract class MongooseAggregateRepository<T extends Document> extends BaseMongooseRepository<T> implements IAggregateRepository<T> {
    protected readonly model: Model<T>;
    constructor(model: Model<T>);
    /**
     * Execute MongoDB aggregation pipeline directly
     * Enhanced with performance monitoring and optimization
     */
    aggregate(pipeline: AggregationPipeline): Promise<any[]>;
    /**
     * Execute aggregation with pagination using MongoDB's $facet
     * Single query for both data and total count - optimal performance
     */
    aggregateWithPagination(pipeline: AggregationPipeline, pagination: PaginationDto): Promise<PaginatedResult<any>>;
    /**
     * Execute query builder function (TypeORM compatibility)
     * Converts query builder concepts to MongoDB aggregation pipeline
     */
    query(builder: QueryBuilderFunction): Promise<any[]>;
    /**
     * Execute query builder with pagination (TypeORM compatibility)
     */
    queryWithPagination(builder: QueryBuilderFunction, pagination: PaginationDto): Promise<PaginatedResult<any>>;
    /**
     * Universal complex query - converts ComplexQueryConfig to MongoDB pipeline
     * This is the main method that replaces multiple separate queries
     */
    complexQuery(config: ComplexQueryConfig): Promise<PaginatedResult<any>>;
    /**
     * Build MongoDB aggregation pipeline from ComplexQueryConfig
     * Converts universal config to MongoDB-specific pipeline stages
     */
    protected buildMongoosePipeline(config: ComplexQueryConfig): AggregationPipeline;
    /**
     * Build MongoDB $lookup stage from JoinConfig
     */
    protected buildLookupStage(join: JoinConfig): any;
    /**
     * Build MongoDB $group stage from aggregation configs
     */
    protected buildGroupStage(aggregations?: AggregationConfig[], groupBy?: string[]): any;
    /**
     * Build MongoDB group by expression
     */
    protected buildGroupByExpression(groupBy?: string[]): any;
    /**
     * Format paginated results consistently
     */
    protected formatPaginatedResult(items: any[], total: number, pagination: PaginationDto): PaginatedResult<any>;
}
