export declare class Type { value: any; constructor(value: any); isOptional(): boolean; getValue(): any; toString(): string; rtype(): Type; psize(): number; ptype(index: number): Type; equals(ty: Type): boolean; accept(ty: Type, update: boolean): boolean; realType(): Type; hasAlpha(): boolean; toVarType(map: any): Type; isPattern(): boolean; } export declare class BaseType extends Type { private name; constructor(name: string, value?: any); toString(): string; accept(ty: Type, update: boolean): boolean; isPattern(): boolean; hasAlpha(): boolean; toVarType(map: any): any; } declare class VoidType extends BaseType { constructor(); accept(ty: Type, update: boolean): boolean; } declare class AnyType extends BaseType { constructor(); accept(ty: Type, update: boolean): boolean; isPattern(): boolean; hasAlpha(): boolean; toVarType(map: any): VarType; } declare class FuncType extends Type { private types; constructor(...types: Type[]); toString(): string; rtype(): Type; psize(): number; ptype(index: number): Type; accept(ty: Type, update: boolean): boolean; isPattern(): boolean; hasAlpha(): boolean; toVarType(map: any): FuncType; } declare class ListType extends Type { private param; constructor(param: Type, isOptional?: any); toString(): string; psize(): number; ptype(index: number): Type; realType(): Type; accept(ty: Type, update: boolean): boolean; isPattern(): boolean; hasAlpha(): boolean; toVarType(map: any): ListType; } declare class UnionType extends Type { private types; constructor(...types: Type[]); toString(): string; psize(): number; ptype(index: number): Type; accept(ty: Type, update: boolean): boolean; isPattern(): boolean; hasAlpha(): boolean; toVarType(map: any): UnionType; } declare class VarType extends Type { private varMap; private varid; private ref; constructor(env: any, ref: any); toString(): string; realType(): Type; accept(ty: Type, update: boolean): boolean; must(ty: Type, update: boolean): boolean; hasAlpha(): boolean; } declare class OptionType extends Type { constructor(options?: any); toString(): string; accept(ty: Type): boolean; isPattern(): boolean; hasAlpha(): boolean; toVarType(map: any): this; } export declare class Types { static Any: AnyType; static Void: VoidType; static Bool: BaseType; static Int: BaseType; static Float: BaseType; static String: BaseType; static A: BaseType; static ListA: ListType; static ListInt: ListType; static ListAny: ListType; static Matter: BaseType; static Object: BaseType; static Vec: BaseType; static Module: BaseType; static Compr: Type; static Color: BaseType; static Option: OptionType; static func(...types: Type[]): FuncType; static isFuncType(ty: Type): boolean; static union(...types: Type[]): UnionType; static list(ty: Type): ListType; static isListType(ty: Type): boolean; static var(env: any, tree: any): VarType; static isVarType(ty: Type): boolean; static isUnionType(ty: Type): boolean; } export {};