import { CppDocumentViewResponse } from './binding';
import { Bucket } from './bucket';
import { Cluster } from './cluster';
import { ObservableRequestHandler } from './observabilityhandler';
import { ObservabilityInstruments } from './observabilitytypes';
import { StreamableRowPromise } from './streamablepromises';
import { ViewMetaData, ViewQueryOptions, ViewResult, ViewRow } from './viewtypes';
/**
 * @internal
 */
export declare class ViewExecutor {
    private _bucket;
    /**
     * @internal
     */
    constructor(bucket: Bucket);
    /**
    @internal
    */
    get _cluster(): Cluster;
    /**
     * @internal
     */
    get observabilityInstruments(): ObservabilityInstruments;
    /**
     * @internal
     */
    static _processViewResponse<TValue = any, TKey = any>(emitter: StreamableRowPromise<ViewResult<TValue, TKey>, ViewRow<TValue, TKey>, ViewMetaData>, err: Error | null, resp: CppDocumentViewResponse, obsReqHandler?: ObservableRequestHandler): void;
    /**
     * @internal
     */
    static executePromise<TValue = any, TKey = any>(viewPromise: Promise<[Error | null, CppDocumentViewResponse]>, obsReqHandler: ObservableRequestHandler): StreamableRowPromise<ViewResult<TValue, TKey>, ViewRow<TValue, TKey>, ViewMetaData>;
    /**
     * @internal
     */
    query<TValue = any, TKey = any>(designDoc: string, viewName: string, options: ViewQueryOptions): StreamableRowPromise<ViewResult<TValue, TKey>, ViewRow<TValue, TKey>, ViewMetaData>;
}
