import { DataResult, DataSource, ExecuteOptions, RequestParameter, ExportOptions } from '@vulcan-sql/core';
import { Query, Job, BigQueryOptions } from '@google-cloud/bigquery';
import bigquery from '@google-cloud/bigquery/build/src/types';
export interface BQCache {
    bucketName: string;
}
export interface BQOptions extends BigQueryOptions {
    chunkSize?: number;
    location?: string;
    cache?: BQCache;
}
export declare class BQDataSource extends DataSource<any, BQOptions> {
    private logger;
    private bqMapping;
    onActivate(): Promise<void>;
    export({ sql: statement, profileName, directory, }: ExportOptions): Promise<void>;
    execute({ statement: sql, bindParams, profileName, operations, }: ExecuteOptions): Promise<DataResult>;
    prepare({ parameterIndex }: RequestParameter): Promise<string>;
    private getResultFromQueryJob;
    fetchJobResult(queryJob: Job, chunkSize: number, nextQuery?: Query | null | undefined): Promise<{
        rows: any[];
        nextQuery: Query | null | undefined;
        apiResponse: bigquery.IGetQueryResultsResponse | null | undefined;
    }>;
    private checkProfileExist;
    private runJobAndWait;
}
