interface EncodedTrieNode {
    c?: Record<string, EncodedTrieNode>;
    l?: number[];
}
export declare class Trie {
    root: EncodedTrieNode;
    createNode(): EncodedTrieNode;
    constructor();
    insert(word: string, lineNumber: number, isNormalize?: boolean): void;
    findPrefix(query: string): EncodedTrieNode | null;
    findLastNodeMatch(query: string): {
        currentNode: EncodedTrieNode;
        i: number;
    };
    autocomplete(query: string, maxResultCount?: number): Set<number>;
    /**
     * collects line numbers in `resultSet`
     *
     * @param {TrieNode} currentNode
     * @param {Set<number>} resultSet
     * @param {number} [maxResultCount=10]
     */
    collectLineNumbersWithBFS(currentNode: EncodedTrieNode, resultSet: Set<number>, maxResultCount?: number): void;
    searchPrefix(query: string): number[] | null;
    /**
     * built Trie data structure from gzipped JSON serialization
     *
     * @async
     * @param {string} filePath
     * @returns {*}
     */
    loadFromJson(filePath: string): Promise<void>;
    static buildTrieFromTSV(tsvFilePath: string): Trie;
    static trieToJson(trie: Trie): EncodedTrieNode;
    static convertDataToGzippedTrieJSON(): Promise<void>;
}
export {};
