import type { BiMultiMapBase, ContextTypesImpl } from '@rimbu/bimultimap/custom'; import type { WithKeyValue } from '@rimbu/collection-types/map-custom'; import { TraverseState, type RelatedTo } from '@rimbu/common'; import type { MultiMap } from '@rimbu/multimap'; import { type StreamSource } from '@rimbu/stream'; export declare class BiMultiMapBuilder = WithKeyValue> implements BiMultiMapBase.Builder { readonly context: TpG['context']; source?: TpG["nonEmpty"] | undefined; _lock: number; constructor(context: TpG['context'], source?: TpG["nonEmpty"] | undefined); _keyValueMultiMap?: MultiMap.Builder; _valueKeyMultiMap?: MultiMap.Builder; get keyValueMultiMap(): MultiMap.Builder; get valueKeyMultiMap(): MultiMap.Builder; checkLock(): void; get size(): number; get isEmpty(): boolean; hasKey: (key: RelatedTo) => boolean; hasValue: (value: RelatedTo) => boolean; hasEntry: (key: RelatedTo, value: RelatedTo) => boolean; getValues: (key: RelatedTo) => WithKeyValue["keyMultiMapValues"]; getKeys: (value: RelatedTo) => WithKeyValue["valueMultiMapValues"]; setValues: (key: K, values: StreamSource) => boolean; setKeys: (value: V, keys: StreamSource) => boolean; add: (key: K, value: V) => boolean; addEntries: (entries: StreamSource) => boolean; removeKey: (key: RelatedTo) => boolean; removeKeys: (keys: StreamSource>) => boolean; removeValue: (value: RelatedTo) => boolean; removeValues: (values: StreamSource>) => boolean; removeEntry: (key: RelatedTo, value: RelatedTo) => boolean; removeEntries: (entries: StreamSource<[RelatedTo, RelatedTo]>) => boolean; forEach: (f: (entry: [K, V], index: number, halt: () => void) => void, options?: { state?: TraverseState; }) => void; build: () => WithKeyValue["normal"]; }