import type { ZodTypeAny } from 'zod'; export type Serializable = { [key: string]: Serializable; } | Serializable[] | string | number | boolean | null; export type JsonSchema = JsonSchemaObject | boolean; export type JsonSchemaObject = { type?: string | string[]; properties?: { [key: string]: JsonSchema; }; additionalProperties?: JsonSchema; unevaluatedProperties?: JsonSchema; patternProperties?: { [key: string]: JsonSchema; }; minProperties?: number; maxProperties?: number; required?: string[] | boolean; propertyNames?: JsonSchema; items?: JsonSchema | JsonSchema[]; additionalItems?: JsonSchema; minItems?: number; maxItems?: number; uniqueItems?: boolean; minLength?: number; maxLength?: number; pattern?: string; format?: string; minimum?: number; maximum?: number; exclusiveMinimum?: number | boolean; exclusiveMaximum?: number | boolean; multipleOf?: number; anyOf?: JsonSchema[]; allOf?: JsonSchema[]; oneOf?: JsonSchema[]; if?: JsonSchema; then?: JsonSchema; else?: JsonSchema; const?: Serializable; enum?: Serializable[]; errorMessage?: { [key: string]: string | undefined; }; description?: string; default?: Serializable; readOnly?: boolean; not?: JsonSchema; contentEncoding?: string; nullable?: boolean; }; export type ParserSelector = (schema: JsonSchemaObject, refs: Refs) => ZodTypeAny; export type ParserOverride = (schema: JsonSchemaObject, refs: Refs) => ZodTypeAny | undefined; export type JsonSchemaToZodOptions = { withoutDefaults?: boolean; withoutDescribes?: boolean; parserOverride?: ParserOverride; depth?: number; }; export type Refs = JsonSchemaToZodOptions & { path: Array; seen: Map; };