import type { Feature } from "../../data/Feature.js";
import type { FeatureSource } from "../../data/FeatureSource.js";
import type { CountResult } from "../CountResult.js";
import { SearchOptions } from "./SearchOptions.js";
import type { SearchProvider } from "./SearchProvider.js";
import type { SearchSuggestion } from "./SearchSuggestion.js";
/**
 * A base implementation of {@link tasks/search/SearchProvider!SearchProvider}.
 */
export declare abstract class SearchProviderBase implements SearchProvider {
    /**
     * @inheritDoc
     */
    abstract isSupported(source: FeatureSource): boolean;
    /**
     * @inheritDoc
     */
    search(source: FeatureSource | FeatureSource[], searchText: string, options?: SearchOptions): AsyncIterable<Feature>;
    /**
     * @inheritDoc
     */
    suggest(source: FeatureSource | FeatureSource[], searchText: string, options?: SearchOptions): Promise<SearchSuggestion[]>;
    /**
     * @inheritDoc
     */
    count(source: FeatureSource | FeatureSource[], searchText: string, options?: SearchOptions): Promise<CountResult[]>;
    /**
     * Invoked to perform the actual work for {@link search}. Derived classes
     * should override this method rather than search().
     *
     * @param source The source to search.
     * @param searchText The text to search for.
     * @param options Options that affect the search.
     */
    protected abstract _search(source: FeatureSource | FeatureSource[], searchText: string, options: SearchOptions): AsyncIterable<Feature>;
    /**
     * Invoked to perform the actual work for {@link suggest}. Derived classes
     * should override this method rather than suggest().
     *
     * @param source The source to search.
     * @param searchText The text to search for.
     * @param options Options that affect the search.
     */
    protected abstract _suggest(source: FeatureSource | FeatureSource[], searchText: string, options: SearchOptions): Promise<SearchSuggestion[]>;
    /**
     * Invoked to perform the actual work for {@link count}. Derived classes
     * should override this method rather than count().
     *
     * @param source The source to search.
     * @param searchText The text to search for.
     * @param options Options that affect the search.
     */
    protected abstract _count(source: FeatureSource | FeatureSource[], searchText: string, options: SearchOptions): Promise<CountResult[]>;
}
