import { CockatooOptions } from "./cockatooOptions";
import { DamerauLevenshtein } from "./damerauLevenshtein";
import { Match } from "./match";
import { TokenMatch } from "./tokenMatch";
export declare class Cockatoo<T> {
    damLev: DamerauLevenshtein;
    elementsList: T[];
    options: CockatooOptions;
    searchableValuesList: string[][];
    searchableTokensList: string[][];
    originalValuesList: string[][];
    originalTokensList: string[][];
    cache: {
        [key: string]: {
            results: Match<T>[];
            date: Date;
        };
    };
    maxCacheElements: number;
    /**
     * Create a Cockatoo.js instance
     */
    constructor(elementsList: T[], options: CockatooOptions, maxCacheElements?: number);
    search(searchText: string, filter?: (element: T) => boolean): Promise<Match<T>[]>;
    getScore(search: string, patterns: string[], options: CockatooOptions): {
        score: number;
        patternMatch: string;
    };
    getTokenScore(tokens: string[], patternTokens: string[], originalTokens: string[], originalPatternTokens: string[]): {
        tokenScore: number;
        tokenMatches: TokenMatch[];
    };
    getMinDistance(search: string, pattern: string, options: CockatooOptions): number;
    private getMatch;
    private generateValuesList;
    private generateTokensList;
    private getTokensFromText;
}
