import { ExternalDocumentation } from '../../../core/models/common/ExternalDocumentation';
import { INamed } from '../../../core/models/common/INamed';
import { IVisitor } from '../../../core/visitors/IVisitor';
import { IOasPropertySchema } from '../../models/IOasPropertySchema';
import { OasSchema } from '../../models/OasSchema';
import { OasXML } from '../../models/OasXML';
/**
 * Models an OpenAPI 3.0.x schema.
 * @author eric.wittmann@gmail.com
 * @class
 * @extends OasSchema
 */
export declare class Oas30Schema extends OasSchema {
    oneOf: Array<OasSchema>;
    anyOf: Array<OasSchema>;
    not: OasSchema;
    discriminator: Oas30Discriminator;
    nullable: boolean;
    writeOnly: boolean;
    deprecated: boolean;
    /**
     * Creates a child Discriminator model.
     * @return {Oas30Discriminator} {Oas30Discriminator}
     */
    createDiscriminator(): Oas30Discriminator;
    /**
     * @see io.apicurio.datamodels.openapi.models.OasSchema#createExternalDocumentation()
     * @return {ExternalDocumentation}
     */
    createExternalDocumentation(): ExternalDocumentation;
    /**
     * @see io.apicurio.datamodels.openapi.models.OasSchema#createXML()
     * @return {OasXML}
     */
    createXML(): OasXML;
    /**
     * @see io.apicurio.datamodels.openapi.models.OasSchema#createAllOfSchema()
     * @return {OasSchema}
     */
    createAllOfSchema(): OasSchema;
    /**
     * @see io.apicurio.datamodels.openapi.models.OasSchema#createItemsSchema()
     * @return {OasSchema}
     */
    createItemsSchema(): OasSchema;
    /**
     * @see io.apicurio.datamodels.openapi.models.OasSchema#createAdditionalPropertiesSchema()
     * @return {OasSchema}
     */
    createAdditionalPropertiesSchema(): OasSchema;
    /**
     * @see io.apicurio.datamodels.openapi.models.OasSchema#createPropertySchema(java.lang.String)
     * @param {string} propertyName
     * @return {OasSchema}
     */
    createPropertySchema(propertyName: string): OasSchema;
    /**
     * Creates a child schema model.
     * @return {Oas30Schema.Oas30OneOfSchema}
     */
    createOneOfSchema(): Oas30Schema.Oas30OneOfSchema;
    /**
     * Creates a child schema model.
     * @return {Oas30Schema.Oas30AnyOfSchema}
     */
    createAnyOfSchema(): Oas30Schema.Oas30AnyOfSchema;
    /**
     * Creates a child schema model.
     * @return {Oas30Schema.Oas30NotSchema}
     */
    createNotSchema(): Oas30Schema.Oas30NotSchema;
    /**
     * Adds a OneOf schema.
     * @param {Oas30Schema.Oas30OneOfSchema} schema
     */
    addOneOfSchema(schema: Oas30Schema.Oas30OneOfSchema): void;
    /**
     * Adds an AnyOf schema.
     * @param {Oas30Schema.Oas30AnyOfSchema} schema
     */
    addAnyOfSchema(schema: Oas30Schema.Oas30AnyOfSchema): void;
    /**
     * Removes a oneOf schema.
     * @param {Oas30Schema.Oas30OneOfSchema} schema
     */
    removeOneOfSchema(schema: Oas30Schema.Oas30OneOfSchema): void;
    /**
     * Removes a anyOf schema.
     * @param {Oas30Schema.Oas30AnyOfSchema} schema
     */
    removeAnyOfSchema(schema: Oas30Schema.Oas30AnyOfSchema): void;
    constructor();
}
export declare namespace Oas30Schema {
    class Oas30AdditionalPropertiesSchema extends Oas30Schema {
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
        constructor();
    }
    class Oas30ItemsSchema extends Oas30Schema {
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
        constructor();
    }
    class Oas30AllOfSchema extends Oas30Schema {
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
        constructor();
    }
    class Oas30NotSchema extends Oas30Schema {
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
        constructor();
    }
    class Oas30OneOfSchema extends Oas30Schema {
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
        constructor();
    }
    class Oas30AnyOfSchema extends Oas30Schema {
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
        constructor();
    }
    /**
     * Constructor.
     * @param {string} propertyName
     * @class
     * @extends Oas30Schema
     */
    class Oas30PropertySchema extends Oas30Schema implements IOasPropertySchema, INamed {
        _propertyName: string;
        constructor(propertyName: string);
        /**
         * @see io.apicurio.datamodels.openapi.models.IOasPropertySchema#getPropertyName()
         * @return {string}
         */
        getPropertyName(): string;
        /**
         *
         * @return {string}
         */
        getName(): string;
        /**
         * @see io.apicurio.datamodels.openapi.models.IOasPropertySchema#rename(java.lang.String)
         * @param {string} newName
         */
        rename(newName: string): void;
        /**
         * @see io.apicurio.datamodels.core.models.common.Schema#accept(io.apicurio.datamodels.core.visitors.IVisitor)
         * @param {*} visitor
         */
        accept(visitor: IVisitor): void;
    }
}
import { Oas30Discriminator } from './Oas30Discriminator';
