import type { Primitive } from './literal.js'; export type DeepReadonly = T extends Primitive ? T : T extends Array ? DeepReadonlyArray : T extends Map ? DeepReadonlyMap : T extends Set ? DeepReadonlySet : DeepReadonlyObject; type DeepReadonlyArray = ReadonlyArray>; type DeepReadonlyMap = ReadonlyMap, DeepReadonly>; type DeepReadonlySet = ReadonlySet>; type DeepReadonlyObject = { readonly [K in keyof T]: DeepReadonly };