import type { DeepMerge } from '@stacksjs/types'; /** * Map key/value pairs for an object, and construct a new one * * * @category Object * * Transform: * @example * ``` * objectMap({ a: 1, b: 2 }, (k, v) => [k.toString().toUpperCase(), v.toString()]) * // { A: '1', B: '2' } * ``` * * Swap key/value: * @example * ``` * objectMap({ a: 1, b: 2 }, (k, v) => [v, k]) * // { 1: 'a', 2: 'b' } * ``` * * Filter keys: * @example * ``` * objectMap({ a: 1, b: 2 }, (k, v) => k === 'a' ? undefined : [k, v]) * // { b: 2 } * ``` */ export declare function objectMap(obj: Record, fn: (key: K, value: V) => [NK, NV] | undefined): Record; /** * Type guard for any key, `k`. * Marks `k` as a key of `T` if `k` is in `obj`. * * @category Object * @param obj object to query for key `k` * @param k key to check existence in `obj` */ export declare function isKeyOf(obj: T, k: keyof any): k is keyof T; /** * Strict typed `Object.keys` * * @category Object */ export declare function objectKeys(obj: T): void; /** * Strict typed `Object.entries` * * @category Object */ export declare function objectEntries(obj: T): void; /** * Deep merge :P * * @category Object */ export declare function deepMerge(target: T, ...sources: S[]): DeepMerge; /** * Create a new subset object by providing keys. * * @category Object */ export declare function objectPick(obj: O, keys: T[], omitUndefined?: boolean): Pick; /** * Clear undefined fields from an object. It mutates the object. * * @category Object */ export declare function clearUndefined(obj: T): T; /** * Determines whether an object has a property with the specified name * * @category Object */ export declare function hasOwnProperty(obj: T, v: PropertyKey): boolean;