/**
 * Synapse REST API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
/**
 * The JSON schema is defined by: <a href="https://json-schema.org/">json-schema.org</a>, specifically draft-07.  Only features listed here are currently supported.
 * @export
 * @interface JsonSchema
 */
export interface JsonSchema {
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.8.1.1">The "$schema" Keyword</a>
     * @type {string}
     * @memberof JsonSchema
     */
    $schema?: string;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.8.2.2">The "$id" Keyword</a>
     * @type {string}
     * @memberof JsonSchema
     */
    $id?: string;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.8.2.4.1">Direct References with "$ref"</a>
     * @type {string}
     * @memberof JsonSchema
     */
    $ref?: string;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.4.2.1">Instance Data Model</a>
     * @type {string}
     * @memberof JsonSchema
     */
    type?: JsonSchemaTypeEnum;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    items?: JsonSchema;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.9.3.2.1">properties</a>
     * @type {{ [key: string]: JsonSchema; }}
     * @memberof JsonSchema
     */
    properties?: {
        [key: string]: JsonSchema;
    };
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-hypermedia.html#rfc.section.6.5.1">title</a>
     * @type {string}
     * @memberof JsonSchema
     */
    title?: string;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-hypermedia.html#rfc.section.6.5.2">description</a>
     * @type {string}
     * @memberof JsonSchema
     */
    description?: string;
    /**
     * Use allOf to 'extend' or 'implement' one or more schemas.  See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.9.2.1.1">allOf</a>
     * @type {Array<JsonSchema>}
     * @memberof JsonSchema
     */
    allOf?: Array<JsonSchema>;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.9.2.1.2">anyOf</a>
     * @type {Array<JsonSchema>}
     * @memberof JsonSchema
     */
    anyOf?: Array<JsonSchema>;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.9.2.1.3">oneOf</a>
     * @type {Array<JsonSchema>}
     * @memberof JsonSchema
     */
    oneOf?: Array<JsonSchema>;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    not?: JsonSchema;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.7.3">Defined Formats</a>
     * @type {string}
     * @memberof JsonSchema
     */
    format?: string;
    /**
     * In an effor to support draft-07 implementations, we are using 'definitions' instead of '$defs'.  See: <a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.appendix.A">Appendix A</a>
     * @type {{ [key: string]: JsonSchema; }}
     * @memberof JsonSchema
     */
    definitions?: {
        [key: string]: JsonSchema;
    };
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.1.2">enum</a>
     * @type {Array<any>}
     * @memberof JsonSchema
     */
    _enum?: Array<any>;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.1.3">const</a>
     * @type {any}
     * @memberof JsonSchema
     */
    _const?: any | null;
    /**
     * Used to indicate that this schema is derived from another object/schema.  The value should be a URL reference to the original work.  The 'source' is solely descriptive and should have no impact on validation.
     * @type {string}
     * @memberof JsonSchema
     */
    source?: string;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.6.5.3">required</a>
     * @type {Array<string>}
     * @memberof JsonSchema
     */
    required?: Array<string>;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.3.1">maxLength</a>
     * @type {number}
     * @memberof JsonSchema
     */
    maxLength?: number;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.3.2">minLength</a>
     * @type {number}
     * @memberof JsonSchema
     */
    minLength?: number;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.4.1">maxItems</a>
     * @type {number}
     * @memberof JsonSchema
     */
    maxItems?: number;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.4.2">minItems</a>
     * @type {number}
     * @memberof JsonSchema
     */
    minItems?: number;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.4.3">uniqueItems</a>
     * @type {boolean}
     * @memberof JsonSchema
     */
    uniqueItems?: boolean;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.3.3">pattern</a>
     * @type {string}
     * @memberof JsonSchema
     */
    pattern?: string;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    _if?: JsonSchema;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    then?: JsonSchema;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    _else?: JsonSchema;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.2.2">maximum</a>
     * @type {number}
     * @memberof JsonSchema
     */
    maximum?: number;
    /**
     * See: <a href="https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#section-6.2.4">minimum</a>
     * @type {number}
     * @memberof JsonSchema
     */
    minimum?: number;
    /**
     * See: <a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9.2">default</a>
     * @type {any}
     * @memberof JsonSchema
     */
    _default?: any | null;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    contains?: JsonSchema;
    /**
     *
     * @type {JsonSchema}
     * @memberof JsonSchema
     */
    additionalProperties?: JsonSchema;
}
/**
 * @export
 */
export declare const JsonSchemaTypeEnum: {
    readonly null: "null";
    readonly boolean: "boolean";
    readonly object: "object";
    readonly array: "array";
    readonly number: "number";
    readonly string: "string";
    readonly integer: "integer";
};
export type JsonSchemaTypeEnum = typeof JsonSchemaTypeEnum[keyof typeof JsonSchemaTypeEnum];
/**
 * Check if a given object implements the JsonSchema interface.
 */
export declare function instanceOfJsonSchema(value: object): value is JsonSchema;
export declare function JsonSchemaFromJSON(json: any): JsonSchema;
export declare function JsonSchemaFromJSONTyped(json: any, ignoreDiscriminator: boolean): JsonSchema;
export declare function JsonSchemaToJSON(json: any): JsonSchema;
export declare function JsonSchemaToJSONTyped(value?: JsonSchema | null, ignoreDiscriminator?: boolean): any;
