declare const ENTRY = 0; declare const ARRAY_NODE = 1; declare const INDEX_NODE = 2; declare const COLLISION_NODE = 3; /** @internal */ export type Node = ArrayNode | CollisionNode | IndexNode; type Entry = { k: K; type: typeof ENTRY; v: V; }; type ArrayNode = { array: (Entry | Node | undefined)[]; size: number; type: typeof ARRAY_NODE; }; /** @internal */ export type IndexNode = { array: (Entry | Node)[]; bitmap: number; type: typeof INDEX_NODE; }; type CollisionNode = { array: Entry[]; hash: number; type: typeof COLLISION_NODE; }; type Flag = { val: boolean; }; /** @internal */ export declare const createEmptyNode: () => IndexNode; /** * Mask the hash to get only the bucket corresponding to shift * @internal */ export declare function mask(hash: number, shift: number): number; /** * Set only the Nth bit where N is the masked hash * @internal */ export declare function bitpos(hash: number, shift: number): number; /** * Associate a node with a new entry, creating a new node * @internal */ export declare function assoc(root: Node, shift: number, hash: number, key: K, val: V, addedLeaf: Flag): Node; /** * Return the found entry or undefined if not present in the root * @internal */ export declare function find(root: Node, shift: number, hash: number, key: K): Entry | undefined; /** * Remove an entry from the root, returning the updated root. * Returns undefined if the node should be removed from the parent. * @internal */ export declare function without(root: Node, shift: number, hash: number, key: K): Node | undefined; /** @internal */ export declare function forEach(root: Node | undefined, fn: (value: V, key: K) => void): void; /** @internal */ export declare function toArray(root: Node | undefined): [K, V][]; export {};