import { AFM, Execution } from "@gooddata/typings";
import { IDataSource } from "../interfaces/DataSource";
export { IDataSource };
export declare type ExecFactory<T> = (resultSpec: AFM.IResultSpec) => Promise<T>;
export declare class DataSource<T> implements IDataSource<T> {
    private execFactory;
    private afm;
    private fingerprint?;
    private responseFactory?;
    private resultFactory?;
    private executionPromises;
    constructor(execFactory: ExecFactory<T>, afm: AFM.IAfm, fingerprint?: string | undefined, responseFactory?: ((resultSpec: AFM.IResultSpec) => Promise<Execution.IExecutionResponse>) | undefined, resultFactory?: ((executionResultUri: string, limit: number[], offset: number[]) => Promise<Execution.IExecutionResult | null>) | undefined);
    getData(resultSpec: AFM.IResultSpec): Promise<T>;
    getPage(resultSpec: AFM.IResultSpec, limit?: number[], offset?: number[]): Promise<Execution.IExecutionResponses>;
    getAfm(): AFM.IAfm;
    getFingerprint(): string;
}
