import * as metadata from "contract-metadata"; import { Field, Type } from "visitor-as/as"; /** * TypeInfo contains some type infos needed for metadata types */ export declare abstract class TypeInfo { readonly type: Type | null; readonly index: number; readonly kind: metadata.TypeKind; constructor(type: Type | null, index: number, kind: metadata.TypeKind); } export declare class CompositeTypeInfo extends TypeInfo { readonly fields: Field[] | Type[]; constructor(type: Type | null, index: number, fields: Field[] | Type[]); } /** * AssemblyScript has no native fixed array. So we define these types by hand. */ export declare class ArrayTypeInfo extends TypeInfo { readonly elem: Type; readonly len: number; constructor(type: Type, index: number, elem: Type, len: number); } /** * string and arrays in AssemblyScript are SequenceTypeInfo types. */ export declare class SequenceTypeInfo extends TypeInfo { readonly elem: Type | Type[]; constructor(type: Type, index: number, elem: Type | Type[]); } export declare class PrimitiveTypeInfo extends TypeInfo { readonly primitiveName: metadata.PrimitiveType; constructor(type: Type, index: number, primitiveName: metadata.PrimitiveType); }