/** * Maps each entry of a Map based on a provided key-generating function. * * This function takes a Map and a function that generates a key from each value-key pair. * It returns a new Map where the keys are generated by the key function and the values are * the corresponding values from the original map. If multiple entries produce the same key, * the last value encountered will be used. * * @template K - The type of keys in the original Map. * @template V - The type of values in the original Map. * @template K2 - The type of keys to produce in the returned Map. * @param {Map} map - The map of entries to be mapped. * @param {(value: V, key: K, object: Map) => K2} getKeyFromEntry - A function that generates a key from a value-key pair. * @returns {Map} A Map where the generated keys are mapped to each entry's value. * * @example * const map = new Map([ * ['x', { type: 'fruit', name: 'apple' }], * ['y', { type: 'fruit', name: 'banana' }], * ['z', { type: 'vegetable', name: 'carrot' }] * ]); * const result = keyBy(map, item => item.type); * // result will be: * // Map(2) { * // 'fruit' => { type: 'fruit', name: 'banana' }, * // 'vegetable' => { type: 'vegetable', name: 'carrot' } * // } */ declare function keyBy(map: Map, getKeyFromEntry: (value: V, key: K, object: Map) => K2): Map; export { keyBy };