import { MetaModel } from '../../main/models/metaModel'; import { Model } from '../../main/models/model'; import { DefinitionModel } from '../../main/models/definitionModel'; /** * This function can be used to let a value model extends another * value model or to let an object model extends another object model. * Notice that this function cannot be used with class model objects. * Notice that this extend function will not return a new model and * does change the model instance directly. * * Value models will inherit all the properties of another value model. * But it's able to overwrite properties. * * In the case of normal object models, the sub-model will inherit all properties, * with the possibility to overwrite them. * It also affects the prototype, * because the sub-object model prototype will get the super-model prototype as a prototype. * Also, the super-model constructor-functions will be called * before the constructor-functions of the sub-object model. * In addition, the convert-function will also be called * with the result of the super convert function. * @param subModel * @param superModel */ export declare function $extends(subModel: S, superModel: Model): S extends DefinitionModel | MetaModel ? S : any;