import type { Mutable, TruthyObject } from '../helpers/utility-types.js'; /****************************************************************************** Types ******************************************************************************/ type CollapseType = { [K in keyof T]: T[K]; } & {}; type CopyReturn = O extends { mutable: false; } ? T : Mutable; interface CopyOptions { resetDates?: boolean; deepCloneAll?: boolean; mutable?: boolean; } /****************************************************************************** Functions ******************************************************************************/ /** * Deep clones ONLY plain-objects (incl. null-prototype). * * - Root value must be a plain-object. * - Recursion descends only into plain-objects and arrays. * - Nested Date values are copied by epoch. * - `resetDates` resets all nested Date values to current time. * - Other nested non-plain objects are shallow-cloned by default. * - `deepCloneAll` deep-clones all nested object values. */ declare function copy(value: T, options?: O): CollapseType>; /****************************************************************************** Functions ******************************************************************************/ export default copy;