import { ComponentDefinition } from './component'; /** * @public */ export type DeepReadonlyMap = ReadonlyMap>; /** * @public */ export type DeepReadonlySet = ReadonlySet>; /** * @public */ export type DeepReadonlyObject = { readonly [K in keyof T]: DeepReadonly; }; /** * @public */ export type ReadonlyPrimitive = number | string | number[] | string[] | boolean | boolean[]; /** * @public */ export type ReadonlyComponentSchema, ...ComponentDefinition[]]> = { [K in keyof T]: T[K] extends ComponentDefinition ? ReturnType : never; }; /** * @public */ export type DeepReadonly = T extends ReadonlyPrimitive ? T : T extends Array ? ReadonlyArray> : T extends Map ? DeepReadonlyMap : T extends Set ? DeepReadonlySet : DeepReadonlyObject;