export type JsonSchema = NumericJsonSchema | StringJsonSchema | ArrayJsonSchema | ObjectJsonSchema | JsonSchemaReference | EmptyJsonSchema; export interface EmptyJsonSchema { } export interface JsonSchemaReference { $ref: string; } export interface BaseJsonSchema { $id?: string; $schema?: string; title?: string; description?: string; deprecationMessage?: string; markdownDeprecationMessage?: string; definitions?: { [name: string]: JsonSchema; }; enum?: unknown[]; format?: string | Format; if?: JsonSchema; then?: JsonSchema; else?: JsonSchema; allOf?: JsonSchema[]; anyOf?: JsonSchema[]; oneOf?: JsonSchema[]; not?: JsonSchema; } export type Format = typeof Format.dateTime | typeof Format.date | typeof Format.time | typeof Format.email | typeof Format.idnEmail | typeof Format.hostname | typeof Format.idnHostname | typeof Format.ipv4 | typeof Format.ipv6 | typeof Format.uri | typeof Format.uriReference | typeof Format.iri | typeof Format.iriReference | typeof Format.uriTemplate | typeof Format.jsonPointer | typeof Format.relativeJsonPointer | typeof Format.regex; export declare namespace Format { const dateTime = "date-time"; const date = "date"; const time = "time"; const email = "email"; const idnEmail = "idn-email"; const hostname = "hostname"; const idnHostname = "idn-hostname"; const ipv4 = "ipv4"; const ipv6 = "ipv6"; const uri = "uri"; const uriReference = "uri-reference"; const iri = "iri"; const iriReference = "iri-reference"; const uriTemplate = "uri-template"; const jsonPointer = "json-pointer"; const relativeJsonPointer = "relative-json-pointer"; const regex = "regex"; } export interface NumericJsonSchema extends BaseJsonSchema { type: JsonSchemaType.Numeric | JsonSchemaType[]; multipleOf?: number; maximum?: number; exclusiveMaximum?: boolean; minimum?: number; exclusiveMinimum?: boolean; } export interface StringJsonSchema extends BaseJsonSchema { type: typeof JsonSchemaType.string | JsonSchemaType[]; maxLength?: number; minLength?: number; pattern?: string; } export interface ArrayJsonSchema extends BaseJsonSchema { type: typeof JsonSchemaType.array | JsonSchemaType[]; items?: JsonSchema | JsonSchema[]; additionalItems?: JsonSchema; maxItems?: number; minItems?: number; uniqueItems?: boolean; contains: JsonSchema; } export interface ObjectJsonSchema extends BaseJsonSchema { type: typeof JsonSchemaType.object | JsonSchemaType[]; maxProperties?: number; minProperties?: number; required?: string[]; properties?: { [name: string]: JsonSchema; }; patternProperties?: { [name: string]: JsonSchema; }; additionalProperties?: JsonSchema; dependencies?: { [name: string]: JsonSchema | string[]; }; } declare namespace JsonSchemaType { const number = "number"; const integer = "integer"; const array = "array"; const object = "object"; const string = "string"; type Numeric = typeof number | typeof integer; } export type JsonSchemaType = 'null' | 'boolean' | typeof JsonSchemaType.object | typeof JsonSchemaType.array | typeof JsonSchemaType.string | JsonSchemaType.Numeric; export {}; //# sourceMappingURL=jsonSchema.d.ts.map