import { Node } from './Node';
/**
 * All data models that can be extended using the "x-*" approach to adding vendor extension
 * properties must extend this class.
 * @author eric.wittmann@gmail.com
 * @class
 * @extends Node
 */
export declare abstract class ExtensibleNode extends Node {
    _extensions: any;
    /**
     * @see io.apicurio.datamodels.core.models.Node#isExtensible()
     * @return {boolean}
     */
    isExtensible(): boolean;
    /**
     * Called to create an extension child.
     * @return {Extension}
     */
    createExtension(): Extension;
    /**
     * Called to add a named extension to this node.
     * @param {string} name
     * @param {Extension} extension
     */
    addExtension(name: string, extension: Extension): void;
    /**
     * Returns all of the extensions defined on this node.
     * @return {Extension[]}
     */
    getExtensions(): Array<Extension>;
    /**
     * Gets a single extension by name.
     * @param {string} name
     * @return {Extension}
     */
    getExtension(name: string): Extension;
    /**
     * Removes a single extension by name.
     * @param {string} name
     */
    removeExtension(name: string): void;
    /**
     * Removes all extensions from this node.
     */
    clearExtensions(): void;
    constructor();
}
import { Extension } from './Extension';
