import { Cluster } from './cluster';
import { ObservableRequestHandler } from './observabilityhandler';
import { ObservabilityInstruments } from './observabilitytypes';
import { SearchQuery } from './searchquery';
import { SearchMetaData, SearchQueryOptions, SearchRequest, SearchResult, SearchRow } from './searchtypes';
import { StreamableRowPromise } from './streamablepromises';
import { CppSearchResponse } from './binding';
/**
 * @internal
 */
export declare class SearchExecutor {
    private _cluster;
    private _bucketName;
    private _scopeName;
    /**
     * @internal
     */
    constructor(cluster: Cluster, bucketName?: string, scopeName?: string);
    /**
     * @internal
     */
    get observabilityInstruments(): ObservabilityInstruments;
    /**
     * @internal
     */
    static _processSearchResponse(emitter: StreamableRowPromise<SearchResult, SearchRow, SearchMetaData>, err: Error | null, resp: CppSearchResponse, obsReqHandler?: ObservableRequestHandler): void;
    /**
     * @internal
     */
    static executePromise(searchPromise: Promise<[Error | null, CppSearchResponse]>, obsReqHandler: ObservableRequestHandler): StreamableRowPromise<SearchResult, SearchRow, SearchMetaData>;
    /**
     * @internal
     */
    query(indexName: string, query: SearchQuery | SearchRequest, options: SearchQueryOptions): StreamableRowPromise<SearchResult, SearchRow, SearchMetaData>;
}
