export type DeepReadonly = T extends (...args: any) => any ? T : { readonly [P in keyof T]: DeepReadonly };