import { IRequestArgument } from "../IRequestArgument";
import { QueryBuilder } from "../../../query/builder/QueryBuilder";
import { AbstractApiRequest } from "./AbstractApiRequest";
import { APISchema } from "../../../schema/APISchema";
import { IQuery } from "../../../query/IQuery";
import { MongoQueryExecutor } from "../../../query/MongoQueryExecutor";
import { ArrayDataObject } from "../../../cache/dataObject/impl/ArrayDataObject";
export declare class AggregationApiRequest extends AbstractApiRequest {
    private readonly GROUPING_LIMITATION;
    private _isPaginationEnabled;
    private _templateQuery;
    private _isFinished;
    private _currentTimer;
    constructor(requestArgument: IRequestArgument);
    getData(queryBuilder: QueryBuilder, queryExecutor: MongoQueryExecutor): Promise<any>;
    _getData(queryBuilder: QueryBuilder, queryExecutor: MongoQueryExecutor): Promise<any>;
    private loadDataAsync;
    buildMongoQuery(queryBuilder: QueryBuilder, schema: APISchema, preFilteredQueries?: IQuery[]): any;
    private preFilterQueries;
    parseQueryResult: (queryResult: Promise<any>, date?: Date, preFilteredQueries?: IQuery[]) => Promise<ArrayDataObject>;
    updateLoadingStatus(data: any): void;
    toJSON(response: any, nextPageToken?: string): any;
    private isAllQueryDataLoaded;
    private updateQueryStats;
    private isEverythingLoaded;
    protected _splitQuery(query: any): any[];
    private applyPaginationStrategie;
    private balanceGroupingLimitation;
    private isPaginationNecessary;
    private _splitIntersectionQuery;
    private getExpectedNumberOfRecords;
    private _splitSubTotalQuery;
    private _generateAllSubtotalsCombinations;
    private areSubTotalsAvailable;
    private _splitGrandTotalQuery;
    private areValuesAvailable;
}
