export interface DeepCopyOptions { /** * Called before an array is copied. If an array is returned, * copy it instead. If anything else is returned, substitute * it for the array, without modification. */ onArray?: (this: void, array: unknown[], jsonPath: string) => unknown; /** * Called before a non-copyable value is included. If a plain * object is returned, copy it instead. If anything else is * returned, substitute it for the instance without modification. */ onInstance?: (this: void, instance: object, jsonPath: string) => unknown; /** * Modify the keys of an object before they are copied. Return * null or undefined to use the original, unmodified keys. Provides * an opportunity to modify the insertion order of the keys in the * copy. */ onKeys?: (this: void, keys: (string | symbol)[], obj: object, jsonPath: string) => ((string | symbol)[] | undefined); /** * Called before a plain object is copied. If a plain object * is returned, copy it instead. If anything else is returned, * substitute it without modification. */ onPlainObject?: (this: void, obj: object, jsonPath: string) => unknown; } /** * Create a deep copy of an object. This is not a particularly * robust check, and won't copy things like class instances. */ export declare const deepCopy: (source: T, options?: DeepCopyOptions) => T; //# sourceMappingURL=deep-copy.d.ts.map