import type { EventedCallback, EventNames } from "@arcgis/core/core/Evented.js";
import { type IHandle } from "../support/observableUtils.js";
import { ObservableMap, type MapEvents } from "./ObservableMap.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> {
    /**
     * @deprecated Do not directly reference this property. Use EventNames and
     *   EventTypes helpers from @arcgis/core/Evented.
     */
    "@eventTypes": MapEvents<K, V>;
    /**
     * The underlying map that this object is delegating to.
     */
    protected readonly _originalMap: ObservableMap<K, V>;
    constructor(originalMap: ObservableMap<K, V>);
    emit<Type extends EventNames<this>>(type: Type, event?: this["@eventTypes"][Type]): boolean;
    clear(): void;
    delete(key: K): boolean;
    set(key: K, value: V): this;
    on<Type extends EventNames<this>>(type: Type, listener: EventedCallback<this["@eventTypes"][Type]>): IHandle;
}
