/// <reference types="node" />
import { DfpClient } from './dfpClient';
import { ReportDownloadOptions } from './types/reportDownloadOptions';
import { ReportJob } from './types/reportJob';
import { ReportService } from './types/reportService';
import * as stream from 'stream';
export declare class DataDownloader {
    protected dfpClient: DfpClient;
    timeout: number;
    protected reportService?: Promise<ReportService>;
    constructor(dfpClient: DfpClient, timeout?: number);
    protected _getReportService(): Promise<ReportService>;
    downloadReport(reportJobId: number, options?: ReportDownloadOptions): Promise<stream.Readable>;
    downloadReport(reportJobId: number, options: ReportDownloadOptions, cb: (err: Error, stream: stream.Readable) => void): void;
    downloadReportToFile(reportJobId: number, outFile: string, options?: ReportDownloadOptions): Promise<void>;
    downloadReportToFile(reportJobId: number, outFile: string, options: ReportDownloadOptions, cb: (err: Error) => void): Promise<void>;
    waitForReport(reportJob: ReportJob | number): Promise<number>;
    waitForReport(reportJob: ReportJob | number, cb: (err: Error, reportJobId: number) => void): void;
    protected _waitForReport(service: ReportService, reportJobId: number): Promise<number>;
}
