import type { Primitive } from './literal.js'; export type DeepWriteable = T extends Primitive ? T : T extends ReadonlyArray ? DeepWriteableArray : T extends ReadonlyMap ? DeepWriteableMap : T extends ReadonlySet ? DeepWriteableSet : DeepWriteableObject; type DeepWriteableArray = Array>; type DeepWriteableMap = Map, DeepWriteable>; type DeepWriteableSet = Set>; type DeepWriteableObject = { -readonly [K in keyof T]: DeepWriteable }; export type Writeable = T extends Primitive ? T : T extends ReadonlyArray ? Array : T extends ReadonlyMap ? Map : T extends ReadonlySet ? Set : { -readonly [K in keyof T]: T[K] };