// based on https://github.com/sindresorhus/type-fest/blob/master/source/readonly-deep.d.ts export type Basic = null | undefined | string | number | boolean | symbol | bigint export type DateInstanceType = Date export type MarkReadOnlyDeep = T extends Basic | ((...args: any[]) => unknown) ? T : T extends ReadonlyMap ? ReadOnlyMapDeep : T extends ReadonlySet ? ReadOnlySetDeep : T extends {} ? ReadOnlyObjectDeep : unknown /** Same as `ReadonlyDeep`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `ReadonlyDeep`. */ type ReadOnlyMapDeep = ReadonlyMap, MarkReadOnlyDeep> /** Same as `ReadonlyDeep`, but accepts only `ReadonlySet`s as inputs. Internal helper for `ReadonlyDeep`. */ type ReadOnlySetDeep = ReadonlySet> /** Same as `ReadonlyDeep`, but accepts only `object`s as inputs. Internal helper for `ReadonlyDeep`. */ type ReadOnlyObjectDeep = { readonly [KeyType in keyof ObjectType]: MarkReadOnlyDeep }