import { KnownRecord } from "./record"; type Bit = 0 | 1; type ProjectObj = K extends string ? Record // Project : T extends (infer U)[] ? Bit // ProjectItem : Bit; type ProjectArr = U extends boolean | number | string ? Bit : Record; type ProjectObj2 = T extends (infer U)[] ? ProjectArr : Record; type ProjectType = T extends boolean | number | string ? Bit : ProjectObj2; export type Project = { [K in keyof T]: ProjectType; };