/** * Merges multiple objects into one, with later objects overwriting earlier ones. * @param objects - The objects to merge. * @returns A new object with combined properties. */ export declare function merge(...objects: T[]): T; /** * Flattens a nested object into a single level object with dot notation for nested keys. * @param obj - The nested object to flatten. * @param prefix - The prefix for the current level (used internally for recursion). * @returns A flattened object with dot notation keys. */ export declare function flattenObject(obj: T, prefix?: string): Record; /** * UnFlattens a dot notation object into a nested object. * @param obj - The flattened object with dot notation keys. * @returns The nested object. */ export declare function unFlattenObject(obj: Record): Record; /** * Deeply merges multiple objects into one, with later objects overwriting earlier ones. * @param objects - The objects to merge. * @returns A new object with combined properties. */ export declare function deepMerge(...objects: T[]): T; /** * Gets the value of a deeply nested property in an object. * @param obj - The object to search. * @param path - An array of strings representing the path to the property. * @returns The value of the nested property or undefined if not found. */ export declare function getNestedValue(obj: any, path: string[]): T | undefined; /** * Sets a deeply nested property in an object. * @param obj - The object to modify. * @param path - An array of strings representing the path to the property. * @param value - The value to set. * @returns The modified object. */ export declare function setNestedValue(obj: any, path: string[], value: any): any; /** * Removes a property from an object based on a key or path. * @param obj - The object to modify. * @param path - An array of strings representing the path to the property or a single key. * @returns The modified object. */ export declare function removeProperty(obj: any, path: string[]): any; /** * Creates an object that behaves like an array and also has object properties. * @param entries - An array of entries where each entry is a tuple [key, value]. * @param properties - An object containing additional properties to add to the resulting object. * @returns An object that behaves like an array with the given entries and properties. */ export declare function objectArray(entries: [number, T][], properties?: Record): Record & Record; /** * Creates a new object by omitting specific properties from the original object. * @param obj - The original object. * @param keys - The keys to omit. * @returns A new object without the specified properties. */ export declare function omit, K extends keyof T>(obj: T, keys: K[]): Omit; /** * Creates a new object by picking specific properties from the original object. * @param obj - The original object. * @param keys - The keys to pick. * @returns A new object with only the specified properties. */ export declare function pick, K extends keyof T>(obj: T, keys: K[]): Pick;