export type DeepFreezeOptions = {
    /**
     * Detects circular references in objects and avoids infinite recursion.
     *
     * Default is `false`.
     */
    mindCircularReferences?: boolean;
};
/**
 * Recursively freezes **arr** and all of its items & other properties.
 *
 * @param arr The 3-dimensional array to freeze.
 * @param options Options to change the behavior of `deepFreeze`.
 *
 * @returns **arr**, deeply frozen.
 */
declare function deepFreeze<T>(arr: readonly (readonly (readonly T[])[])[], options?: Readonly<DeepFreezeOptions>): readonly (readonly (readonly Readonly<T>[])[])[];
/**
 * Recursively freezes **arr** and all of its items & other properties.
 *
 * @param arr The 2-dimensional array to freeze.
 * @param options Options to change the behavior of `deepFreeze`.
 *
 * @returns **arr**, deeply frozen.
 */
declare function deepFreeze<T>(arr: readonly (readonly T[])[], options?: Readonly<DeepFreezeOptions>): readonly (readonly Readonly<T>[])[];
/**
 * Recursively freezes **arr** and all of its items & other properties.
 *
 * @param arr The 1-dimensional array to freeze.
 * @param options Options to change the behavior of `deepFreeze`.
 *
 * @returns **arr**, deeply frozen.
 */
declare function deepFreeze<T>(arr: readonly T[], options?: Readonly<DeepFreezeOptions>): readonly Readonly<T>[];
/**
 * Recursively freezes **obj** and all of its properties.
 *
 * @param obj The object to freeze.
 * @param options Options to change the behavior of `deepFreeze`.
 *
 * @returns **obj**, deeply frozen.
 */
declare function deepFreeze<T>(obj: T, options?: Readonly<DeepFreezeOptions>): Readonly<T>;
export { deepFreeze };
