export type PlainObject = Record export type Prettify = { [K in keyof T]: T[K] } & {} type Primitive = string | number | bigint | boolean | symbol | null | undefined export type DeepReadonly = T extends Primitive ? T : T extends (infer R)[] ? ReadonlyArray> : T extends object ? { readonly [K in keyof T]: DeepReadonly } : T