import {Property, PropertyID} from "./property"; import {IDictionary, ParsableType} from "./common"; import {ImparsableConstructor} from "./parsing/json/Imparsable"; import {IValidator} from "./validation/validator"; export interface TypeDescription { type: ImparsableConstructor; } export interface ParsingSchema extends TypeDescription { toParsable(property?: T): ParsableType; validators?: IValidator[]; factory(obj: any): T; } export interface ModelTypeDescription extends TypeDescription { properties: IDictionary; } export interface ModelParsingSchema extends ParsingSchema, ModelTypeDescription { properties: IDictionary>; } export interface CollectionTypeDescription extends TypeDescription { itemProperty: TypeDescription; } export interface CollectionParsingDescription extends ParsingSchema, CollectionTypeDescription { itemProperty: ParsingSchema; } export interface CollectionProperty extends CollectionParsingDescription, PropertyID { }