import { DefinitionModel } from './definitionModel'; declare const metaModelSymbol: unique symbol; export interface ModelMetaData { /** * Indicates if the inner model is optional. */ optional?: boolean; /** * Indicates the default value when the data for the model * is not provided by the client. */ default?: any; /** * Indicates if the inner model can be null. */ canBeNull?: boolean; } export interface MetaModel extends ModelMetaData { /** * The inner wrapped definition model. */ definitionModel: T; /** * A symbol that indicates that the object is a MetaModel. */ [metaModelSymbol]: true; } export declare function createMetaModel(model: T): MetaModel; export declare function isMetaModel(value: any): value is MetaModel; export declare function getModelMetaData(model: T): ModelMetaData; export declare function isOptionalMetaModel(value: any): boolean; export declare function addNewMetaToModel(model: T, meta: ModelMetaData): T extends DefinitionModel ? MetaModel : T; export declare function unwrapIfMetaModel(value: T): DefinitionModel; export {};