@rimbu/bimap
Version:
A bidirectional immutable Map of keys and values for TypeScript
34 lines (33 loc) • 1.72 kB
text/typescript
import type { BiMapContext, BiMapNonEmptyImpl } from '@rimbu/bimap/custom';
import type { BiMap } from '@rimbu/bimap';
import type { RMap } from '@rimbu/collection-types/map';
import { OptLazy, type RelatedTo, TraverseState } from '@rimbu/common';
import { type StreamSource } from '@rimbu/stream';
export declare class BiMapBuilder<K, V> implements BiMap.Builder<K, V> {
readonly context: BiMapContext<K, V>;
source?: BiMapNonEmptyImpl<K, V> | undefined;
constructor(context: BiMapContext<K, V>, source?: BiMapNonEmptyImpl<K, V> | undefined);
_keyValueMap?: RMap.Builder<K, V>;
_valueKeyMap?: RMap.Builder<V, K>;
_lock: number;
checkLock(): void;
get keyValueMap(): RMap.Builder<K, V>;
get valueKeyMap(): RMap.Builder<V, K>;
get size(): number;
get isEmpty(): boolean;
getValue: <UK, O>(key: RelatedTo<K, UK>, otherwise?: OptLazy<O>) => V | O;
hasKey: <UK>(key: RelatedTo<K, UK>) => boolean;
getKey: <UV, O>(value: RelatedTo<V, UV>, otherwise?: OptLazy<O>) => K | O;
hasValue: <UV>(value: RelatedTo<V, UV>) => boolean;
set: (key: K, value: V) => boolean;
addEntry: (entry: readonly [K, V]) => boolean;
addEntries: (source: StreamSource<readonly [K, V]>) => boolean;
removeKey: <UK, O>(key: RelatedTo<K, UK>, otherwise?: OptLazy<O>) => V | O;
removeKeys: <UK>(keys: StreamSource<RelatedTo<K, UK>>) => boolean;
removeValue: <UV, O>(value: RelatedTo<V, UV>, otherwise?: OptLazy<O>) => K | O;
removeValues: <UV>(values: StreamSource<RelatedTo<V, UV>>) => boolean;
forEach: (f: (entry: readonly [K, V], index: number, halt: () => void) => void, options?: {
state?: TraverseState;
}) => void;
build: () => BiMap<K, V>;
}