import { PromisedMapItem } from './item';
export declare class PromisedMap<K, V> {
    private map;
    /**
     * Returns map size.
     */
    get size(): number;
    /**
     * Sets key/data pair and creates related promise.
     * If key already exists in map - it will be replaced with new data and new promise.
     */
    set(key: K, data?: V): Promise<unknown>;
    /**
     * Returns data for key.
     */
    get(key: K): V | undefined;
    /**
     * Checks if key exists.
     */
    has(key: K): boolean;
    /**
     * Deletes key from map.
     * Caution: previously returned promise will no be resolved or rejected.
     */
    delete(key: K): boolean;
    /**
     * Resolves promise in map by key and removes key from map.
     * If no such key in map - nothing happens.
     */
    resolve(key: K, value: unknown): void;
    /**
     * Rejects promise in map by key and removes key from map.
     * If no such key in map - nothing happens.
     */
    reject(key: K, reason: any): void;
    /**
     * Resolves all promise in map and removes all keys.
     */
    resolveAll(value: unknown): void;
    /**
     * Rejects all promise in map and removes all keys.
     */
    rejectAll(reason: any): void;
    /**
     * Iterate map.
     */
    forEach(fn: (item: V, key: K, map: Map<K, PromisedMapItem<V>>) => void): void;
    /**
     * Clears map.
     */
    clear(): void;
    private createMapItem;
}
