import type { Feature } from "../../data/Feature.js";
import type { FeatureSource } from "../../data/FeatureSource.js";
import type { CountResult } from "../CountResult.js";
import { QueryService } from "../query/QueryService.js";
import { SearchOptions } from "./SearchOptions.js";
import { SearchProviderBase } from "./SearchProviderBase.js";
import type { SearchSuggestion } from "./SearchSuggestion.js";
/**
 * A search provider for sources that support querying.
 */
export declare class QuerySearchProvider extends SearchProviderBase {
    /**
     * The query service that will be used to perform the search.
     */
    queryService: QueryService;
    /**
     * Regex to capture quoted search terms.
     */
    private readonly quotedTermsRegex;
    /**
     * @inheritDoc
     */
    isSupported(source: FeatureSource): boolean;
    /**
     * Generate search terms from the search text and tokenizer.
     *
     * @param searchText The original search text.
     * @param tokenizer The elasticlunr tokenizing function.
     */
    getSearchTerms(searchText: string, tokenizer: (s: string) => string[]): string[];
    /**
     * @inheritDoc
     */
    protected _search(sources: FeatureSource[], searchText: string, options: SearchOptions): AsyncIterable<Feature>;
    /**
     * @inheritDoc
     */
    protected _count(sources: FeatureSource[], searchText: string, options: SearchOptions): Promise<CountResult[]>;
    /**
     * @inheritDoc
     */
    protected _suggest(_source: FeatureSource, _searchText: string, _options: SearchOptions): Promise<SearchSuggestion[]>;
}
