import type { EventHandler } from "../support/esri.js";
import { ObservableMap, type MapChangeEvent } from "./ObservableMap.js";
import type { AfterItemChangeEvent } from "./collection.js";
/**
 * A map that is read-only and delegates operations to an underlying
 * {@link ObservableMap}.
 *
 * @augments {ObservableMap<K, V>}
 * @template K - The type of the keys in the map.
 * @template V - The type of the values in the map.
 */
export declare class ReadOnlyMap<K, V> extends ObservableMap<K, V> {
    /**
     * The underlying map that this object is delegating to.
     */
    protected readonly _originalMap: ObservableMap<K, V>;
    constructor(originalMap: ObservableMap<K, V>);
    emit(type: string, event?: unknown): boolean;
    clear(): void;
    delete(key: K): boolean;
    set(key: K, value: V): this;
    on(name: "change", callback: (event: MapChangeEvent<K, V>) => void): IHandle;
    on(name: "after-add", callback: (event: AfterItemChangeEvent<ObservableMap<K, V>, [K, V]>) => void): IHandle;
    on(name: "after-remove", callback: (event: AfterItemChangeEvent<ObservableMap<K, V>, [K, V]>) => void): IHandle;
    on(name: string, callback: EventHandler): IHandle;
}
