import { ExternalDocumentation } from './common/ExternalDocumentation';
import { IExternalDocumentationParent } from './common/IExternalDocumentationParent';
import { Info } from './common/Info';
import { Tag } from './common/Tag';
import { IVisitor } from '../visitors/IVisitor';
import { ExtensibleNode } from './ExtensibleNode';
/**
 * Constructor.
 * @class
 * @extends ExtensibleNode
 * @author eric.wittmann@gmail.com
 */
export declare abstract class Document extends ExtensibleNode implements IExternalDocumentationParent {
    info: Info;
    tags: Array<Tag>;
    externalDocs: ExternalDocumentation;
    constructor();
    /**
     * Called to get the type of document.
     * @return {DocumentType}
     */
    abstract getDocumentType(): DocumentType;
    /**
     * @see io.apicurio.datamodels.core.models.Node#accept(io.apicurio.datamodels.core.visitors.IVisitor)
     * @param {*} visitor
     */
    accept(visitor: IVisitor): void;
    /**
     * Creates an Info node.
     * @return {Info}
     */
    abstract createInfo(): Info;
    /**
     * Creates a Tag node.
     * @return {Tag}
     */
    abstract createTag(): Tag;
    /**
     * Adds a tag.
     * @param {string} name
     * @param {string} description
     * @return {Tag}
     */
    addTag(name: string, description: string): Tag;
    /**
     * Creates an External Documentation node.
     * @return {ExternalDocumentation}
     */
    abstract createExternalDocumentation(): ExternalDocumentation;
    setExternalDocumentation$io_apicurio_datamodels_core_models_common_ExternalDocumentation(externalDocs: ExternalDocumentation): void;
    setExternalDocumentation$java_lang_String$java_lang_String(description: string, url: string): ExternalDocumentation;
    /**
     * Sets the external documentation information.
     * @param {string} description
     * @param {string} url
     * @return {ExternalDocumentation}
     */
    setExternalDocumentation(description?: any, url?: any): any;
    /**
     *
     * @return {boolean}
     */
    isAttached(): boolean;
}
import { DocumentType } from './DocumentType';
