import { characters } from "./characters"; import { Comparator } from "./collections"; import { AVLTree } from "./avltree"; export declare class TrieFactory { readonly comparator: Comparator; constructor(comparator?: Comparator); get avlTree(): AVLTree>; get empty(): Trie; create(value?: V, children?: AVLTree>): Trie; construct(key: K[], value: V): Trie; } export declare class Trie { readonly factory: TrieFactory; readonly value?: V | undefined; readonly children: AVLTree>; constructor(factory?: TrieFactory, value?: V | undefined, children?: AVLTree>); contains(key: K[]): boolean; get isEmpty(): boolean; lookup(key: K[]): V | undefined; match(key: K[]): V[]; insert(key: K[], value: V): Trie; delete(key: K[]): Trie; entries(): Iterable>; keys(): Iterable; values(): Iterable; get height(): number; toString(): string; } export declare type Pair = [K, V]; export declare function pair(key: K, value: V): Pair; export declare const DEFAULT_COMPARATOR: (x: string, y: string) => number; export declare class PrefixTree { private converter; private comparator; private trie; constructor(converter?: typeof characters, comparator?: Comparator, trie?: Trie); contains(value: string): boolean; get isEmpty(): boolean; match(key: string): V[]; lookup(key: string): V | undefined; insert(key: string, value?: V): PrefixTree; delete(value: string): PrefixTree; entries(): Iterable>; keys(): Iterable; values(): Iterable; get height(): number; search(key: string, maxDist: number): Result[]; } export declare class Row { keys: K[]; values: number[]; private comparator; private constructor(); static create(keys: K[], comparator: Comparator): Row; next(key: K): Row; get distance(): number; get minimal(): number; } export interface Result { value: V; distance: number; }