import { ExternalDocumentation } from '../../core/models/common/ExternalDocumentation';
import { IExternalDocumentationParent } from '../../core/models/common/IExternalDocumentationParent';
import { Schema } from '../../core/models/common/Schema';
/**
 * Models an OpenAPI schema.
 * @author eric.wittmann@gmail.com
 * @class
 * @extends Schema
 */
export declare abstract class OasSchema extends Schema implements IExternalDocumentationParent {
    format: string;
    title: string;
    description: string;
    default_: any;
    multipleOf: number;
    maximum: number;
    exclusiveMaximum: boolean;
    minimum: number;
    exclusiveMinimum: boolean;
    maxLength: number;
    minLength: number;
    pattern: string;
    maxItems: number;
    minItems: number;
    uniqueItems: boolean;
    maxProperties: number;
    minProperties: number;
    required: Array<string>;
    enum_: Array<string>;
    type: string;
    items: any;
    allOf: Array<OasSchema>;
    properties: any;
    additionalProperties: any;
    readOnly: boolean;
    xml: OasXML;
    externalDocs: ExternalDocumentation;
    example: any;
    /**
     * Creates a child external documentation model.
     * @return {ExternalDocumentation}
     */
    abstract createExternalDocumentation(): ExternalDocumentation;
    /**
     * @see io.apicurio.datamodels.core.models.common.IExternalDocumentationParent#setExternalDocumentation(io.apicurio.datamodels.core.models.common.ExternalDocumentation)
     * @param {ExternalDocumentation} externalDocs
     */
    setExternalDocumentation(externalDocs: ExternalDocumentation): void;
    /**
     * Creates a child XML model.
     * @return {OasXML}
     */
    abstract createXML(): OasXML;
    /**
     * Creates a child schema model.
     * @return {OasSchema}
     */
    abstract createAllOfSchema(): OasSchema;
    /**
     * Creates a child schema model.
     * @return {OasSchema}
     */
    abstract createItemsSchema(): OasSchema;
    /**
     * Creates a child schema model.
     * @return {OasSchema}
     */
    abstract createAdditionalPropertiesSchema(): OasSchema;
    /**
     * Creates a child schema model.
     * @param {string} propertyName
     * @return {OasSchema}
     */
    abstract createPropertySchema(propertyName: string): OasSchema;
    /**
     * Gets a list of all property names.
     * @return {string[]}
     */
    getPropertyNames(): Array<string>;
    /**
     * Gets a list of all the properties.
     * @return {OasSchema[]}
     */
    getProperties(): Array<OasSchema>;
    /**
     * Add a property.
     * @param {string} propertyName
     * @param {OasSchema} schema
     * @return {OasSchema}
     */
    addProperty(propertyName: string, schema: OasSchema): OasSchema;
    /**
     * Removes a property by name.
     * @param {string} propertyName
     * @return {OasSchema}
     */
    removeProperty(propertyName: string): OasSchema;
    /**
     * Gets a single property.
     * @param {string} propertyName
     * @return {OasSchema}
     */
    getProperty(propertyName: string): OasSchema;
    /**
     * Returns true if there is a single items schema.
     * @return {boolean}
     */
    hasItemsSchema(): boolean;
    /**
     * Returns true if there is a list of items schemas.  Even if there is only one schema in the list.
     * @return {boolean}
     */
    hasItemsSchemas(): boolean;
    /**
     * Returns true if there is an additional properties schema.
     * @return {boolean}
     */
    hasAdditionalPropertiesSchema(): boolean;
    /**
     * Returns true if there is an "additionalProperties" property that is a boolean value and not a schema.
     * @return {boolean}
     */
    hasAdditionalPropertiesBoolean(): boolean;
    /**
     * Adds an AllOf schema.
     * @param {OasSchema} schema
     */
    addAllOfSchema(schema: OasSchema): void;
    /**
     * Removes a allOf schema.
     * @param {OasSchema} schema
     */
    removeAllOfSchema(schema: OasSchema): void;
    constructor();
}
import { OasXML } from './OasXML';
