import Base from 'advanced-map-base';
import { FindingResult } from 'convenient-typescript-utilities';
import { IterableMapLike, MapLikeConstructor, EqualFunc } from 'advanced-map-types';
/**
 * This class allows one to alter equality comparision
 */
declare class AlteredEqual<Key, Value, Data extends IterableMapLike<Key, Value> = Map<Key, Value>> extends Base<Key, Value, Data> {
    private readonly equal;
    /**
     * @param Map A constructor (a.k.a class) that creates an iterable Map-like object
     * @param equal Function that compares keys, default to `Object.is`
     */
    constructor(Map: MapLikeConstructor<Data>, equal?: EqualFunc<Key>);
    find(key: Key): AlteredEqual.Find.Result<Key, Value>;
    has(key: Key): boolean;
    get(key: Key): Value | undefined;
    set(key: Key, value: Value): this;
    delete(key: Key): boolean;
}
declare namespace AlteredEqual {
    namespace Find {
        type Result<Key, Value> = FindingResult<Entry<Key, Value>>;
    }
    interface Entry<Key, Value> {
        readonly key: Key;
        readonly value: Value;
    }
}
export = AlteredEqual;
