import { $mobx, IEnhancer, IInterceptable, IInterceptor, IListenable, Lambda, ObservableValue, IAtom } from "../internal"; export interface IKeyValueMap { [key: string]: V; } export type IMapEntry = [K, V]; export type IReadonlyMapEntry = readonly [K, V]; export type IMapEntries = IMapEntry[]; export type IReadonlyMapEntries = readonly IReadonlyMapEntry[]; export type IMapDidChange = { observableKind: "map"; debugObjectName: string; } & ({ object: ObservableMap; name: K; type: "update"; newValue: V; oldValue: V; } | { object: ObservableMap; name: K; type: "add"; newValue: V; } | { object: ObservableMap; name: K; type: "delete"; oldValue: V; }); export interface IMapWillChange { object: ObservableMap; type: "update" | "add" | "delete"; name: K; newValue?: V; } export declare const ADD = "add"; export declare const DELETE = "delete"; export type IObservableMapInitialValues = IMapEntries | IReadonlyMapEntries | IKeyValueMap | Map; export declare class ObservableMap implements Map, IInterceptable>, IListenable { enhancer_: IEnhancer; name_: string; [$mobx]: {}; data_: Map>; hasMap_: Map>; keysAtom_: IAtom; interceptors_: any; changeListeners_: any; dehancer: any; constructor(initialData?: IObservableMapInitialValues, enhancer_?: IEnhancer, name_?: string); private has_; has(key: K): boolean; set(key: K, value: V): this; delete(key: K): boolean; private updateValue_; private addValue_; get(key: K): V | undefined; private dehanceValue_; keys(): MapIterator; values(): MapIterator; entries(): MapIterator>; [Symbol.iterator](): MapIterator>; forEach(callback: (value: V, key: K, object: Map) => void, thisArg?: any): void; /** Merge another object into this object, returns this. */ merge(other?: IObservableMapInitialValues): ObservableMap; clear(): void; replace(values: IObservableMapInitialValues): ObservableMap; get size(): number; toString(): string; toJSON(): [K, V][]; get [Symbol.toStringTag](): string; /** * Observes this object. Triggers for the events 'add', 'update' and 'delete'. * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe * for callback details */ observe_(listener: (changes: IMapDidChange) => void, fireImmediately?: boolean): Lambda; intercept_(handler: IInterceptor>): Lambda; } export declare var isObservableMap: (thing: any) => thing is ObservableMap;