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 { }