/** @internal NOTE: Internal APIs. Subject to change. Use of these APIs in production applications is not supported. */
import '../MapExtensions';
/** Biderctional map. Its a normal map but by using the {@link reverse} property it is possible to perform lookups
 *  in the "reverse" direction.
 */
export declare class BidirectionalMap<K, T> implements Map<K, T> {
    private _byKey;
    private _byVal;
    private readonly _reverse;
    constructor(parent?: BidirectionalMap<T, K>);
    get reverse(): Map<T, K>;
    getOrAdd(key: K, factory: (key: K) => T): T;
    /** See {@link Map} */
    clear(): void;
    /** See {@link Map} */
    delete(key: K): boolean;
    /** See {@link Map} */
    forEach(callbackfn: (value: T, key: K, map: Map<K, T>) => void, thisArg?: any): void;
    /** See {@link Map} */
    get(key: K): T | undefined;
    /** See {@link Map} */
    has(key: K): boolean;
    /** See {@link Map} */
    set(key: K, value: T): this;
    /** See {@link Map} */
    get size(): number;
    /** See {@link Map} */
    [Symbol.iterator](): MapIterator<[K, T]>;
    /** See {@link Map} */
    entries(): MapIterator<[K, T]>;
    /** See {@link Map} */
    keys(): MapIterator<K>;
    /** See {@link Map} */
    values(): MapIterator<T>;
    /** See {@link Map} */
    get [Symbol.toStringTag](): string;
}
//# sourceMappingURL=bidirectional-map.d.ts.map