/** Narrow to a non-array object literal. Excludes arrays and `null`, unlike a bare `typeof === object`. */ export declare function isPlainObject(value: unknown): value is Record; /** * Recursively merge `source` into `target`, returning a new object. Nested plain objects merge; * arrays and scalars from `source` replace the target wholesale (a source array overrides, never * extends). Inputs are not mutated. * * A `__proto__` key in `source` is skipped: plain assignment would invoke the inherited * `__proto__` setter and hand the returned object an attacker-controlled prototype, so * `deepMerge(defaults, JSON.parse(userInput))` could resolve absent keys through it. Sibling * keys like `constructor` need no guard here — `result` is a fresh object at every level * (`{ ...target }`), so assigning them shadows an own property rather than mutating * `Object.prototype`. */ export declare function deepMerge(target: Record, source: Record): Record; /** * Flatten a nested object into dot-delimited keys with JSON-stringified leaf values — e.g. * `{ a: { b: 1 } }` → `{ "a.b": "1" }`. Inverse of {@link deFlattenKeys}. */ export declare function flattenKeys(obj: Record, prefix?: string): Record; /** * Rebuild a nested object from dot-delimited keys, parsing each leaf as JSON (falling back to the * raw string). Inverse of {@link flattenKeys}. */ export declare function deFlattenKeys(entries: Record): Record; //# sourceMappingURL=object.d.ts.map