type SchemaProperties = Readonly>; type RequiredPropertyNames = Schema extends { readonly required: readonly (infer Name)[]; } ? Extract : never; type ObjectFromSchema = { -readonly [Name in RequiredPropertyNames]-?: InferSchema; } & { -readonly [Name in Exclude>]?: InferSchema; }; type InferNonNullableSchema = Schema extends { readonly enum: readonly (infer Value)[]; } ? Value : Schema extends { readonly type: 'string'; } ? string : Schema extends { readonly type: 'integer' | 'number'; } ? number : Schema extends { readonly type: 'boolean'; } ? boolean : Schema extends { readonly type: 'array'; readonly items: infer Item; } ? InferSchema[] : Schema extends { readonly type: 'object'; readonly properties: infer Properties extends SchemaProperties; } ? ObjectFromSchema : Schema extends { readonly type: 'object'; readonly additionalProperties: true; } ? Record : unknown; export type InferSchema = Schema extends { readonly nullable: true; } ? InferNonNullableSchema | null : InferNonNullableSchema; export {}; //# sourceMappingURL=schema-types.d.ts.map