// eslint-disable-next-line @typescript-eslint/no-explicit-any type Any = any; type NonArraySchemaObjectType = 'boolean' | 'object' | 'number' | 'string' | 'integer'; type ArraySchemaObjectType = 'array'; type SchemaObject = ArraySchemaObject | NonArraySchemaObject; interface ExternalDocumentationObject { description?: string; url: string; } interface ArraySchemaObject extends BaseSchemaObject { type: ArraySchemaObjectType; items: ReferenceObject | SchemaObject; } interface NonArraySchemaObject extends BaseSchemaObject { type?: NonArraySchemaObjectType; } interface BaseSchemaObject { title?: string; description?: string; format?: string; default?: Any; multipleOf?: number; maximum?: number; exclusiveMaximum?: boolean; minimum?: number; exclusiveMinimum?: boolean; maxLength?: number; minLength?: number; pattern?: string; additionalProperties?: boolean | ReferenceObject | SchemaObject; maxItems?: number; minItems?: number; uniqueItems?: boolean; maxProperties?: number; minProperties?: number; required?: string[]; enum?: Any[]; properties?: { [name: string]: ReferenceObject | SchemaObject; }; allOf?: (ReferenceObject | SchemaObject)[]; oneOf?: (ReferenceObject | SchemaObject)[]; anyOf?: (ReferenceObject | SchemaObject)[]; not?: ReferenceObject | SchemaObject; nullable?: boolean; discriminator?: DiscriminatorObject; readOnly?: boolean; writeOnly?: boolean; xml?: XMLObject; externalDocs?: ExternalDocumentationObject; example?: Any; deprecated?: boolean; } interface DiscriminatorObject { propertyName: string; mapping?: { [value: string]: string; }; } interface XMLObject { name?: string; namespace?: string; prefix?: string; attribute?: boolean; wrapped?: boolean; } interface ReferenceObject { $ref: string; } // eslint-disable-next-line @typescript-eslint/no-explicit-any export declare function jsonSchema(schema: SchemaObject): any; export { };