export interface JSONSchemaPropertyBase { title?: string; description?: string; default?: unknown; } export type JSONSchemaProperty = JSONSchemaObject | JSONSchemaArray | JSONSchemaString | JSONSchemaFieldString | JSONSchemaNumber | JSONSchemaBoolean | JSONSchemaOneOf; export interface JSONSchemaObject extends JSONSchemaPropertyBase { type: 'object'; properties: Record; required?: readonly string[]; additionalProperties?: boolean; } export interface JSONSchemaArray extends JSONSchemaPropertyBase { type: 'array'; items: JSONSchemaProperty; } export interface JSONSchemaString extends JSONSchemaPropertyBase { type: 'string'; enum?: readonly string[]; } export interface JSONSchemaFieldString extends JSONSchemaString { subtype: 'field'; fieldTypes?: readonly string[]; } export interface JSONSchemaNumber extends JSONSchemaPropertyBase { type: 'number'; minimum?: number; maximum?: number; } export interface JSONSchemaBoolean extends JSONSchemaPropertyBase { type: 'boolean'; } export interface JSONSchemaOneOf extends JSONSchemaPropertyBase { type: 'oneOf'; oneOf: JSONSchemaProperty[]; }