/** * Marks object as having a type defined. */ export interface Typed extends Object { readonly $type: string; readonly $descriptor?: Descriptor; } /** * Describes a specific type of object */ export declare abstract class Descriptor { readonly type: string; make(props?: Partial): T; protected fill?(obj: T): void; } export interface Descriptable extends Typed { readonly $descriptor?: TDescriptor; }