import { Constructor, GenericCallback } from "../models.mjs"; //#region src/value/clone.d.ts /** * Clone any kind of value _(shallowly)_ * * @param value Value to clone * @param flat Clone only the value itself, without cloning nested values * @returns Cloned value */ declare function clone(value: Value, flat: true): Value; /** * Clone any kind of value _(deeply, if needed)_ * * @param value Value to clone * @returns Cloned value */ declare function clone(value: Value): Value; declare namespace clone { var handlers: { deregister(constructor: Constructor): void; handle(value: unknown, ...parameters: unknown[]): any; register(constructor: Constructor, handler?: string | GenericCallback): void; }; var deregister: typeof deregisterCloner; var register: typeof registerCloner; } /** * Copy any kind of value * * - Clones the value shallowly, without cloning nested values * - To copy a value deeply, use `clone` instead * * @param value Value to copy * @returns Copied value */ declare function copy(value: Value): Value; /** * Deregister a clone handler for a specific class * * _Available as `deregisterCloner` and `template.deregister`_ * * @param constructor Class constructor */ declare function deregisterCloner(constructor: Constructor): void; /** * Register a clone handler for a specific class * * _Available as `registerCloner` and `template.register`_ * * @param constructor Class constructor * @param handler Method name or clone function _(defaults to method name `clone`)_ */ declare function registerCloner(constructor: Constructor, handler?: string | ((value: Instance) => Instance)): void; //#endregion export { clone, copy, deregisterCloner, registerCloner };