import '../../assert/js/assert.js';
import '../../globals.js';
type TEnumeration<T> = {
    enumeration: {
        values: T[];
    };
};
declare class EnumerationMap<T, U> {
    private readonly _enumeration;
    private _map;
    private _values;
    /**
     * @param enumeration
     * @param factory - function( {TEnumeration.*} ) => {*}, maps an enumeration value to any value.
     */
    constructor(enumeration: TEnumeration<T>, factory: (t: T) => U);
    /**
     * Returns the value associated with the given enumeration entry.
     */
    get(entry: T): U;
    /**
     * Sets the value associated with the given enumeration entry.
     */
    set(entry: T, value: U): void;
    /**
     * Returns a new EnumerationMap with mapped values.
     *
     * @param mapFunction - function( {*}, {TEnumeration.*} ): {*}
     * @returns With the mapped values
     */
    map(mapFunction: (u: U, t: T) => U): EnumerationMap<T, U>;
    /**
     * Calls the callback on each item of the enumeration map.
     *
     * @param callback - function(value:*, enumerationValue:*)
     */
    forEach(callback: (u: U, t: T) => void): void;
    /**
     * Returns the values stored in the map, as an array
     *
     */
    values(): U[];
}
export default EnumerationMap;
//# sourceMappingURL=EnumerationMap.d.ts.map