export declare class KVMap<K, V> {
    readonly [Symbol.toStringTag]: string;
    private kvMap;
    private vkMap;
    constructor();
    get size(): number;
    get keySize(): number;
    get valueSize(): number;
    clear(): void;
    delete(key: K): boolean;
    deleteKey(key: K): boolean;
    deleteValue(value: V): boolean;
    forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
    forEachKV(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
    forEachVKs(callbackfn: (keys: K[], value: V, map: Map<V, K[]>) => void, thisArg?: any): void;
    get(key: K): V | undefined;
    getValue(key: K): V | undefined;
    getKeys(value: V): K[];
    has(key: K): boolean;
    hasKey(key: K): boolean;
    hasValue(value: V): boolean;
    set(key: K, value: V): this;
    [Symbol.iterator](): IterableIterator<[K, V]>;
    entries(): IterableIterator<[K, V]>;
    kvEntries(): IterableIterator<[K, V]>;
    vkEntries(): IterableIterator<[V, K[]]>;
    keys(): IterableIterator<K>;
    values(): IterableIterator<V>;
}
export declare namespace KVMap {
    function fromMap<K, V>(map: Map<K, V>): KVMap<K, V>;
}
