export type DeepReadonly = T extends (infer R)[] ? DeepReadonlyArray : T extends Function ? T : T extends object ? DeepReadonlyObject : T; interface DeepReadonlyArray extends ReadonlyArray> { } type DeepReadonlyObject = { readonly [P in keyof T]: DeepReadonly; }; export declare const deepReadonly: (object: TObject) => DeepReadonly; export {};