import type { CloneObjectOptions, DeleteObjectPropertiesOptions, FlattenObjectOptions, OmitObjectPropertiesOptions, PickObjectPropertiesOptions } from '../definitions/interfaces.js'; import type { DeleteObjectPropertiesPredicate, KeyOf, OmitObjectPropertiesPredicate, PickObjectPropertiesPredicate } from '../definitions/types.js'; /** * Creates a copy of an object. * Optionally the copy can be deep. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function cloneObject(object: T, options?: CloneObjectOptions): T; /** * Copies a property from one object to another. The key supports bracket and dot notation. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function copyObjectProperty(source: T, key: KeyOf.Deep, target: T): void | Error; export declare function copyObjectProperty(source: T, key: string, target: T): void | Error; /** * Deletes a property from an object. The key supports bracket and dot notation. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function deleteObjectProperty(object: T, key: KeyOf.Deep): void; export declare function deleteObjectProperty(object: T, key: string): void; /** * Deletes the properties of an object that either match the predicate or are in the list of keys. The keys support bracket and dot notation. * Optionally deletes deep properties as well. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function deleteObjectProperties(object: T, predicate: DeleteObjectPropertiesPredicate, options: DeleteObjectPropertiesOptions & { deep: true; }): void; export declare function deleteObjectProperties(object: T, predicate: DeleteObjectPropertiesPredicate, options?: DeleteObjectPropertiesOptions): void; export declare function deleteObjectProperties(object: T, keys: KeyOf.Deep[]): void; export declare function deleteObjectProperties(object: T, keys: KeyOf.Shallow[]): void; export declare function deleteObjectProperties(object: T, keys: string[]): void; /** * Flattens an object into a single-depth object with dot notation keys. * Optionally flattens arrays as well. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function flattenObject(object: T, options?: FlattenObjectOptions, parents?: string[]): Record; /** * Returns a property from an object. The key supports bracket and dot notation. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function getObjectProperty(object: T, key: KeyOf.Deep): U | undefined; export declare function getObjectProperty(object: T, key: KeyOf.Deep, fallback: U): U; export declare function getObjectProperty(object: T, key: string): U | undefined; export declare function getObjectProperty(object: T, key: string, fallback: U): U; /** * Merges two or more objects into a single object. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function mergeObjects(target: T, ...sources: Record[]): U; /** * Returns a new object without the properties that match the predicate or are in the list of keys. The keys support bracket and dot notation. * Optionally omits deep properties as well. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function omitObjectProperties(object: T, predicate: OmitObjectPropertiesPredicate, options: OmitObjectPropertiesOptions & { deep: true; }): U; export declare function omitObjectProperties(object: T, predicate: OmitObjectPropertiesPredicate, options?: OmitObjectPropertiesOptions): U; export declare function omitObjectProperties = KeyOf.Deep>(object: T, keys: K[]): Omit; export declare function omitObjectProperties = KeyOf.Shallow>(object: T, keys: K[]): Omit; export declare function omitObjectProperties(object: T, keys: string[]): U; /** * Returns a new object with only the properties that match the predicate or are in the list of keys. The keys support bracket and dot notation. * Optionally picks deep properties as well. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function pickObjectProperties(object: T, predicate: PickObjectPropertiesPredicate, options: PickObjectPropertiesOptions & { deep: true; }): U; export declare function pickObjectProperties(object: T, predicate: PickObjectPropertiesPredicate, mode?: PickObjectPropertiesOptions): U; export declare function pickObjectProperties = KeyOf.Deep>(object: T, keys: K[]): Pick; export declare function pickObjectProperties = KeyOf.Shallow>(object: T, keys: K[]): Pick; export declare function pickObjectProperties(object: T, keys: string[]): U; /** * Sets a property on an object. The key supports bracket and dot notation. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function setObjectProperty(object: T, key: KeyOf.Deep, value: U): void | Error; export declare function setObjectProperty(object: T, key: string, value: U): void | Error; /** * Checks if an object has a property. The key supports bracket and dot notation. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function hasObjectProperty(object: T, key: KeyOf.Deep): boolean; export declare function hasObjectProperty(object: T, key: string): boolean; /** * Checks if an unknown value is an object. A value is considered an object if it is typeof "object", not null and not an array. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function isObject(value: unknown): value is T; /** * Checks if an object is clonable. An object is considered clonable if it is an array or a plain object. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function isObjectClonable(object: T): boolean; /** * Checks if an object is flattenable. An object is considered flattenable if it is an array or a plain object. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function isObjectFlattenable(object: T, options?: FlattenObjectOptions): boolean; /** * Checks if an object has keys. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function isObjectKeysPopulated(object: T): boolean; /** * Checks if an object has values. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function isObjectValuesPopulated(object: T): boolean; /** * Checks if an unknown value is a plain object. A value is considered a plain object if it matches the default object prototype, it is typeof "object" and not null. * * [Aracna Reference](https://aracna.dariosechi.it/core/utils/object) */ export declare function isPlainObject(value: unknown): value is T;