UNPKG

@rimbu/bimap

Version:

A bidirectional immutable Map of keys and values for TypeScript

74 lines (73 loc) 3.7 kB
import type { BiMapContext } from '@rimbu/bimap/custom'; import type { BiMap } from '@rimbu/bimap'; import type { RMap } from '@rimbu/collection-types/map'; import { EmptyBase, NonEmptyBase } from '@rimbu/collection-types/map-custom'; import { type ArrayNonEmpty, OptLazy, type RelatedTo, type ToJSON, TraverseState, Update } from '@rimbu/common'; import { Stream, type StreamSource } from '@rimbu/stream'; export declare class BiMapEmpty<K = any, V = any> extends EmptyBase implements BiMap<K, V> { readonly context: BiMapContext<K, V>; _NonEmptyType: BiMap.NonEmpty<K, V>; constructor(context: BiMapContext<K, V>); get size(): 0; get keyValueMap(): RMap<K, V>; get valueKeyMap(): RMap<V, K>; hasKey(): false; hasValue(): false; getValue<_, O>(key: K, otherwise?: OptLazy<O>): O; getKey<_, O>(value: V, otherwise?: OptLazy<O>): O; set(key: K, value: V): BiMap.NonEmpty<K, V>; addEntry(entry: readonly [K, V]): BiMap.NonEmpty<K, V>; addEntries(entries: StreamSource<readonly [K, V]>): BiMap.NonEmpty<K, V>; removeKey(): this; removeKeyAndGet(): undefined; removeKeys(): this; removeValue(): this; removeValueAndGet(): undefined; removeValues(): this; updateKeyAtValue(): this; updateValueAtKey(): this; streamKeys(): Stream<K>; streamValues(): Stream<V>; toBuilder(): BiMap.Builder<K, V>; toString(): string; toJSON(): ToJSON<(readonly [K, V])[], this['context']['typeTag']>; } export declare class BiMapNonEmptyImpl<K, V> extends NonEmptyBase<readonly [K, V]> implements BiMap.NonEmpty<K, V> { readonly context: BiMapContext<K, V>; readonly keyValueMap: RMap.NonEmpty<K, V>; readonly valueKeyMap: RMap.NonEmpty<V, K>; _NonEmptyType: BiMap.NonEmpty<K, V>; constructor(context: BiMapContext<K, V>, keyValueMap: RMap.NonEmpty<K, V>, valueKeyMap: RMap.NonEmpty<V, K>); copy(keyValueMap?: RMap.NonEmpty<K, V>, valueKeyMap?: RMap.NonEmpty<V, K>): BiMap.NonEmpty<K, V>; copyE(keyValueMap?: RMap<K, V>, valueKeyMap?: RMap<V, K>): BiMap<K, V>; get size(): number; asNormal(): this; stream(): Stream.NonEmpty<readonly [K, V]>; streamKeys(): Stream.NonEmpty<K>; streamValues(): Stream.NonEmpty<V>; hasKey<UK>(key: RelatedTo<K, UK>): boolean; hasValue<UV>(value: RelatedTo<V, UV>): boolean; getValue<UK, O>(key: RelatedTo<K, UK>, otherwise?: OptLazy<O>): V | O; getKey<UV, O>(value: RelatedTo<V, UV>, otherwise?: OptLazy<O>): K | O; set(key: K, value: V): BiMap.NonEmpty<K, V>; addEntry(entry: readonly [K, V]): BiMap.NonEmpty<K, V>; addEntries(entries: StreamSource<readonly [K, V]>): BiMap.NonEmpty<K, V>; removeKey<UK>(key: RelatedTo<K, UK>): BiMap<K, V>; removeKeyAndGet<UK>(key: RelatedTo<K, UK>): [BiMap<K, V>, V] | undefined; removeKeys<UK>(keys: Stream<RelatedTo<K, UK>>): BiMap<K, V>; removeValue<UV>(value: RelatedTo<V, UV>): BiMap<K, V>; removeValueAndGet<UV>(value: RelatedTo<V, UV>): [BiMap<K, V>, K] | undefined; removeValues<UV>(values: Stream<RelatedTo<V, UV>>): BiMap<K, V>; updateValueAtKey(key: K, valueUpdate: Update<V>): BiMap.NonEmpty<K, V>; updateKeyAtValue(keyUpdate: Update<K>, value: V): BiMap.NonEmpty<K, V>; forEach(f: (entry: readonly [K, V], index: number, halt: () => void) => void, options?: { state?: TraverseState; }): void; filter(pred: (entry: readonly [K, V], index: number, halt: () => void) => boolean, options?: { negate?: boolean; }): BiMap<K, V>; toBuilder(): BiMap.Builder<K, V>; toArray(): ArrayNonEmpty<readonly [K, V]>; toString(): string; toJSON(): ToJSON<(readonly [K, V])[], this['context']['typeTag']>; }