export interface Hashable { hash(): number; equals(other: T): boolean; } declare type PrimitiveType = string | number | boolean | null | undefined | symbol | bigint; export declare type HashableType = PrimitiveType | Hashable; /** * An implementation of the standard Map interface that supports custom * hashable objects. */ export declare class HashMap, Value> { private store; private _size; constructor(iterable?: Iterable<[Key, Value]>); get size(): number; private _hash; private _equals; get(key: Key): Value | undefined; has(key: Key): boolean; set(key: Key, value: Value): this; delete(key: Key): boolean; clear(): void; entries(): IterableIterator<[Key, Value]>; forEach(cb: (this: ThisArg, value: Value, key: Key, map: HashMap) => void, thisArg: ThisArg): void; forEach(cb: (value: Value, key: Key, map: HashMap) => void): void; [Symbol.iterator](): IterableIterator<[Key, Value]>; keys(): Iterable; values(): Iterable; } /** * A variant of HashMap that allows multiple values per key. */ export declare class HashMultiMap, Value> { private _storage; private _size; constructor(elements?: Iterable<[Key, Value]>); keys(): Iterable; values(): Iterable; [Symbol.iterator](): IterableIterator<[Key, Value]>; entries(): Iterable<[Key, Value]>; get size(): number; clear(): void; delete(key: Key): void; deleteValue(key: Key, value: Value): void; forEach(callback: (this: T, value: Value, key: Key, map: this) => void, thisArg: T): void; get(key: Key): readonly Value[]; has(key: Key): boolean; put(key: Key, value: Value): number; } export {};