import { CppError, CppQueryResponse } from './binding';
import { Cluster } from './cluster';
import { ObservableRequestHandler } from './observabilityhandler';
import { ObservabilityInstruments } from './observabilitytypes';
import { QueryMetaData, QueryOptions, QueryResult } from './querytypes';
import { StreamableRowPromise } from './streamablepromises';
/**
 * @internal
 */
export declare class QueryExecutor {
    private _cluster;
    /**
     * @internal
     */
    constructor(cluster: Cluster);
    /**
     * @internal
     */
    get observabilityInstruments(): ObservabilityInstruments;
    /**
     * @internal
     */
    static _processQueryResponse<TRow>(emitter: StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>, err: Error | null, resp: CppQueryResponse, obsReqHandler?: ObservableRequestHandler): void;
    /**
     * @internal
     *
     * Used by transactions (observability currently not available for transactions)
     */
    static execute<TRow = any>(exec: (callback: (err: CppError | null, resp: CppQueryResponse) => void) => void): StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>;
    /**
     * @internal
     */
    static executePromise<TRow = any>(queryPromise: Promise<[Error | null, CppQueryResponse]>, obsReqHandler: ObservableRequestHandler): StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>;
    /**
     * @internal
     */
    query<TRow = any>(query: string, options: QueryOptions): StreamableRowPromise<QueryResult<TRow>, TRow, QueryMetaData>;
}
