import { IApiRequest } from "../IApiRequest";
import { IRequestArgument } from "../IRequestArgument";
import { QueryBuilder } from "../../../query/builder/QueryBuilder";
import { MongoQueryExecutor } from "../../../query/MongoQueryExecutor";
import { APISchema } from "../../../schema/APISchema";
import { IQuery } from "../../../query/IQuery";
import { Db } from "mongodb";
export declare abstract class AbstractApiRequest implements IApiRequest {
    protected readonly _requestArgument: IRequestArgument;
    protected _splitedQueries: any[] | IQuery[];
    protected _curentQueryIndex: number;
    protected _currentPageIndex: number;
    protected _db: Db;
    protected CHUNK_SIZE: number;
    protected _loggingTemplate: string;
    protected _schema: APISchema;
    constructor(requestArgument: IRequestArgument);
    get requestArgument(): IRequestArgument;
    get loggingTemplate(): string;
    getData(queryBuilder: QueryBuilder, queryExecutor: MongoQueryExecutor): Promise<any>;
    protected _splitQuery(query: any): any[];
    protected executeQuery(queryExecutor: MongoQueryExecutor, mongoQuery: any): Promise<any>;
    abstract toJSON(response: any, nextpageToken?: string): any;
    protected abstract buildMongoQuery(queryBuilder: QueryBuilder, schema: APISchema): any;
    protected abstract parseQueryResult(queryResultCursor: Promise<any>, date: Date): Promise<any>;
    dispose(): void;
}
