import { BaseObservableMap } from "."; export declare class JoinedMap extends BaseObservableMap { protected _sources: BaseObservableMap[]; private _subscriptions?; constructor(sources: BaseObservableMap[]); onAdd(source: BaseObservableMap, key: K, value: V): void; onRemove(source: BaseObservableMap, key: K, value: V): void; onUpdate(source: BaseObservableMap, key: K, value: V, params: any): void; onReset(): void; onSubscribeFirst(): void; _isKeyAtSourceOccluded(source: BaseObservableMap, key: K): boolean; _getValueFromOccludedSources(source: BaseObservableMap, key: K): V | undefined; onUnsubscribeLast(): void; [Symbol.iterator](): JoinedIterator; get size(): number; get(key: K): V | undefined; } declare class JoinedIterator implements Iterator<[K, V]> { private _sources; private _sourceIndex; private _encounteredKeys; private _currentIterator?; constructor(sources: { [Symbol.iterator](): Iterator<[K, V]>; }[]); next(): IteratorYieldResult<[K, V]> | IteratorReturnResult; } export declare function tests(): { "joined iterator": (assert: any) => void; "prevent key collision during iteration": (assert: any) => void; "adding occluded key doesn't emit add": (assert: any) => void; "updating occluded key doesn't emit update": (assert: any) => void; "removal of occluding key emits add after remove": (assert: any) => void; "adding occluding key emits remove first": (assert: any) => void; }; export {};