import type { IObjectOf, Maybe, Pair } from "@thi.ng/api";
export declare class TrieMap<T> {
    protected next: IObjectOf<TrieMap<T>>;
    protected val?: T;
    protected n: number;
    constructor(pairs?: Iterable<Pair<string, T>>);
    [Symbol.iterator](): Generator<(string | (T & ({} | null)))[], void, unknown>;
    keys(prefix?: string): Generator<string, void, unknown>;
    values(): Generator<T & ({} | null), void, unknown>;
    suffixes(prefix: string, withPrefix?: boolean): Generator<string, void, unknown>;
    clear(): void;
    has(key: string): boolean;
    hasPrefix(prefix: string): boolean;
    get(key: string, notFound?: T): Maybe<T>;
    find(key: string): TrieMap<T> | undefined;
    /**
     * Returns longest known prefix for `key`. Returns undefined if given key
     * has no partial matches.
     *
     * @param key -
     */
    knownPrefix(key: string): string | undefined;
    hasKnownPrefix(key: string): boolean;
    set(key: string, val: T): void;
    into(pairs: Iterable<Pair<string, T>>): void;
    delete(prefix: string): boolean;
    protected queueChildren(queue: [string, TrieMap<T>][], prefix: string): void;
}
export declare const defTrieMap: <T>(pairs?: Iterable<Pair<string, T>>) => TrieMap<T>;
//# sourceMappingURL=trie-map.d.ts.map