export interface BasicSchema { type: string; description?: string; } export interface StringSchema extends BasicSchema { type: "string"; enum?: string[]; maxLength?: number; minLength?: number; pattern?: string; } export interface NumberSchema extends BasicSchema { type: "number" | "integer"; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; } export interface BooleanSchema extends BasicSchema { type: "boolean"; } export interface ArraySchema extends BasicSchema { type: "array"; items: JsonSchema; maxItems?: number; minItems?: number; uniqueItems?: boolean; } export interface ObjectSchema extends BasicSchema { type: "object"; properties: Record; required?: string[]; maxProperties?: number; minProperties?: number; } export type JsonSchema = | StringSchema | NumberSchema | BooleanSchema | ArraySchema | ObjectSchema;