/** * Map that stringifies the key objects in order to leverage * the javascript native Map and preserve key uniqueness. */ export declare abstract class StringifyingMap { private map; private keyMap; has(key: K): boolean; get(key: K): V | undefined; set(key: K, value: V): StringifyingMap; /** * Puts new key/value if key is absent. * @param key key * @param defaultValue default value factory */ putIfAbsent(key: K, defaultValue: () => V): boolean; keys(): IterableIterator; keyList(): K[]; values(): IterableIterator; valueList(): V[]; delete(key: K): boolean; clear(): void; size(): number; get length(): number; forEach(callbackfn: (value: V, key: string, map: Map) => void, thisArg?: unknown): void; /** * Turns the `key` object to a primitive `string` for the underlying `Map` * @param key key to be stringified */ protected abstract stringifyKey(key: K): string; }