/** Deep-readonly version of a structural type. */ export type DeepReadonly = T extends (infer U)[] ? ReadonlyArray> : T extends Map ? ReadonlyMap, DeepReadonly> : T extends Set ? ReadonlySet> : T extends object ? { readonly [K in keyof T]: DeepReadonly } : T