import { QueryBuilder } from "../query/builder/QueryBuilder";
import { MongoQueryExecutor } from "../query/MongoQueryExecutor";
import { IApiRequest } from "../requests/apiRequests/IApiRequest";
import { DataRetrievalInterface } from "./dataObject/DataRetrievalInterface";
import { PagingInterface } from "../api/IDataAPI";
import { IRequestArgument } from "../requests/apiRequests/IRequestArgument";
export declare class DataManager {
    private _queryBuilder;
    private _queryExecutor;
    private _cacheManager;
    private isProbabilisticCacheFlushEnabled;
    private _requestsRegister;
    constructor(queryBuilder: QueryBuilder, queryExecutor: MongoQueryExecutor);
    getData(requestArgument: IRequestArgument, requestType: string, currentPage: PagingInterface): Promise<any>;
    private _getData;
    private getDataFromCache;
    private setDataToCache;
    private getCacheMemoryStatus;
    private getIterator;
    private getDataChunk;
}
export interface CacheKeyInterface {
    clientQuery: object;
    databaseName: string;
    index: string;
}
export interface DataIterationInterface {
    data: DataRetrievalInterface;
    iterator: Iterator<any>;
    apiRequest?: IApiRequest;
}
