import { Type, IType } from "../Type"; import { IContext, IValidationResult } from "../type-checker"; import { INode } from '../../core/interface'; import { ObjectNode } from "../../core/ObjectNode"; export declare class Late extends Type { readonly definition: () => IType; private _subType; readonly flags: number; readonly shouldAttachNode: boolean; readonly valueType: IType; readonly subType: IType; constructor(name: string, definition: () => IType); instantiate(parent: ObjectNode | null, subpath: string, environment: any, snapshot: any): INode; reconcile(current: INode, newValue: any): INode; describe(): string; isValidSnapshot(value: any, context: IContext): IValidationResult; isAssignableFrom(type: IType): boolean; } export declare type ILateType = () => IType; export declare function late(type: ILateType): IType; export declare function late(name: string, type: ILateType): IType;