type Kebab = T extends `${infer F}${infer R}` ? Kebab ? "" : "-"}${Lowercase}`> : A; export type KebabKeys = { [K in keyof T as K extends string ? Kebab : K]: T[K]; }; export type ValueOf = T[keyof T]; export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] : T[P] extends Record ? RecursivePartial : T[P]; }; export type RecursiveRequired = Required<{ [P in keyof T]: T[P] extends Record | undefined ? RecursiveRequired> : T[P]; }>; export type RequireAtLeastOne = { [P in K]: Required> & Partial>; }[K]; export {};