export type DeepReadonly = T extends (infer R)[] ? DeepReadonlyArray : T extends Function ? T : T extends object ? DeepReadonlyObject : T; type DeepReadonlyArray = readonly DeepReadonly[]; type DeepReadonlyObject = { readonly [P in keyof T]: DeepReadonly; }; export {};