export = deepFreeze; declare function deepFreeze(a: T[]): ReadonlyArray>; declare function deepFreeze(f: T): T; declare function deepFreeze(o: T): deepFreeze.DeepReadonly; declare namespace deepFreeze { type DeepReadonly = T extends (...args: any) => any ? T : { readonly [P in keyof T]: DeepReadonly }; }