import { FuzzyParameters, MongooseCallback, MongooseCriteria, MongooseModel, Query, QueryFuzzyParameters, QueryFuzzyReturn, SearchableModel, StaticFuzzyParameters, StaticFuzzyReturn } from "../../types";
export declare const confidenceScore: {
    confidenceScore: {
        $meta: string;
    };
};
export declare const sort: {
    sort: {
        confidenceScore: {
            $meta: string;
        };
    };
};
declare abstract class FuzzySearch<T extends FuzzyParameters, U> {
    private _query;
    private _options;
    protected abstract initializeParameter(...args: T): U;
    abstract search(model: MongooseModel): any;
    private getQueryArgs;
    private buildQuery;
    protected find(model: SearchableModel, options: any): any;
    protected get searchQuery(): MongooseCriteria;
    protected set query(query: Query);
    protected get query(): Query;
    protected set options(options: MongooseCriteria);
    protected get options(): MongooseCriteria;
}
export declare class StaticFuzzySearch extends FuzzySearch<StaticFuzzyParameters, StaticFuzzyReturn> {
    private callback?;
    constructor(...args: any[]);
    protected initializeParameter(...args: any[]): {
        query: Query;
        options: MongooseCriteria;
        callback?: MongooseCallback | undefined;
    };
    search(model: SearchableModel): any;
}
export declare class QueryFuzzySearch extends FuzzySearch<QueryFuzzyParameters, QueryFuzzyReturn> {
    constructor(...args: QueryFuzzyParameters);
    protected initializeParameter(...args: QueryFuzzyParameters): {
        query: Query;
        options: MongooseCriteria;
    };
    search(model: SearchableModel): any;
}
export {};
