type Primitive = string | number | boolean | bigint | null | undefined;
/**
 * Recursively freezes an object and all its properties to make it immutable.
 * This function also handles circular references by using a `WeakSet` to track visited objects.
 *
 * @param obj - The object to freeze.
 * @param visitedObjects - A `WeakSet` to track objects that have already been visited (used internally).
 */
export declare function deepFreeze(obj: any, visitedObjects?: WeakSet<object>): void;
/**
 * Customizer function for `cloneDeepWith` to handle specific cloning rules.
 *
 * - Properties starting with `_` are not deeply cloned; their references are copied instead.
 * - Properties flagged with `ignoreCloneSymbol` are not cloned.
 *
 * @param value - The value being cloned.
 * @param prop - The property name or index of the value being cloned.
 * @param target - The target object containing the property being cloned.
 * @returns The value to use for the cloned property, or `undefined` to use the default cloning behavior.
 */
export declare function deepCloneCustomizer(value: any, prop?: string | number, target?: object): any;
/**
 * Creates a deep clone of an object, applying custom cloning rules defined in `deepCloneCustomizer`.
 *
 * @param obj - The object to clone.
 * @returns A deep clone of the input object.
 */
export declare function deepClone(obj: object): any;
/**
 * Determines if a value is a primitive type.
 *
 * @param value - The value to check.
 * @returns `true` if the value is a primitive type, otherwise `false`.
 */
export declare function isPrimitive(value: any): value is Primitive;
/**
 * Determines if a value is a function.
 *
 * @param value - The value to check.
 * @returns `true` if the value is a function, otherwise `false`.
 */
export declare function isFunction(value: any): value is Function;
/**
 * Checks if a property name represents a virtual property.
 * Virtual properties are identified by the prefix `__brain`.
 *
 * @param prop - The property name to check.
 * @returns `true` if the property is a virtual property, otherwise `false`.
 */
export declare function isVirtualProperty(prop: string): boolean;
/**
 * Checks if a function name represents a constructor.
 *
 * @param prop - The property name to check.
 * @returns `true` if the property is a virtual property, otherwise `false`.
 */
export declare function isConstructor(prop: string): boolean;
/**
 * Checks if a property should be ignored during certain operations.
 * Ignored properties are either symbols or start with `_` (unless they are virtual properties).
 *
 * @param prop - The property name or symbol to check.
 * @returns `true` if the property should be ignored, otherwise `false`.
 */
export declare function isIgnoredProperty(target: any, prop: string | symbol): boolean;
/**
 * Checks if a property on a target object is flagged to be ignored during cloning.
 *
 * @param target - The object containing the property.
 * @param prop - The property name or index to check.
 * @returns `true` if the property is flagged to be ignored, otherwise `false`.
 */
export declare function isFlagedIgnoreClone(target: any, prop?: string | number): any;
/**
 * Checks if a property on a target object is flagged to be totally ignored by brain.
 *
 * @param target - The object containing the property.
 * @param prop - The property name or index to check.
 * @returns `true` if the property is flagged to be ignored, otherwise `false`.
 */
export declare function isFlagedIgnore(target: any, prop?: string | number): any;
/**
 * Determines if a value is of a supported type.
 * Unsupported types include `WeakMap`, `WeakSet`, `Map`, and `Set`.
 *
 * @param value - The value to check.
 * @returns `true` if the value is of a supported type, otherwise `false`.
 */
export declare function isTypeSupported(value: any): boolean;
/**
 * Checks if a target object implements the iterator protocol.
 *
 * @param target - The object to check.
 * @returns `true` if the target is an iterator, otherwise `false`.
 */
export declare function isIterator(target: any): boolean;
export {};
