UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

78 lines (77 loc) 4.45 kB
import ts from 'typescript'; import { ScriptBuilder } from '../sb'; import { VisitOptions } from '../types'; export declare enum BuiltinType { Value = "Value", ValueObject = "ValueObject", MemberValue = "MemberValue", InstanceMemberValue = "InstanceMemberValue", Call = "Call", MemberCall = "MemberCall", InstanceMemberCall = "InstanceMemberCall", Template = "Template", MemberTemplate = "MemberTemplate", InstanceMemberTemplate = "InstanceMemberTemplate", InstanceOf = "InstanceOf", Interface = "Interface", New = "New" } export interface Builtin { readonly types: Set<BuiltinType>; } export interface BuiltinInterface extends Builtin { readonly canImplement: boolean; } export declare function isBuiltinInterface(value: Builtin): value is BuiltinInterface; export interface BuiltinValue extends Builtin { readonly emitValue: (sb: ScriptBuilder, node: ts.Identifier, options: VisitOptions) => void; } export declare function isBuiltinValue(value: Builtin): value is BuiltinValue; export declare type MemberLikeExpression = ts.PropertyAccessExpression | ts.ElementAccessExpression | ts.BindingElement; export interface BuiltinMemberValue extends Builtin { readonly emitValue: (sb: ScriptBuilder, node: MemberLikeExpression, options: VisitOptions) => void; } export declare function isBuiltinMemberValue(value: Builtin): value is BuiltinMemberValue; export interface BuiltinInstanceMemberValue extends Builtin { readonly emitValue: (sb: ScriptBuilder, node: MemberLikeExpression, options: VisitOptions, visited: boolean) => void; } export declare function isBuiltinInstanceMemberValue(value: Builtin): value is BuiltinInstanceMemberValue; export interface BuiltinCall extends Builtin { readonly emitCall: (sb: ScriptBuilder, node: ts.CallExpression, options: VisitOptions) => void; } export declare function isBuiltinCall(value: Builtin): value is BuiltinCall; export interface BuiltinTemplate extends Builtin { readonly emitCall: (sb: ScriptBuilder, node: ts.TaggedTemplateExpression, options: VisitOptions) => void; } export declare function isBuiltinTemplate(value: Builtin): value is BuiltinTemplate; export declare type CallMemberLikeExpression = ts.PropertyAccessExpression | ts.ElementAccessExpression; export interface BuiltinMemberTemplate extends Builtin { readonly emitCall: (sb: ScriptBuilder, func: CallMemberLikeExpression, node: ts.TaggedTemplateExpression, options: VisitOptions) => void; } export declare function isBuiltinMemberTemplate(value: Builtin): value is BuiltinMemberTemplate; export interface BuiltinInstanceMemberTemplate extends Builtin { readonly canCall: (sb: ScriptBuilder, func: CallMemberLikeExpression, node: ts.TaggedTemplateExpression, options: VisitOptions) => boolean; readonly emitCall: (sb: ScriptBuilder, func: CallMemberLikeExpression, node: ts.TaggedTemplateExpression, options: VisitOptions, visited: boolean) => void; } export declare function isBuiltinInstanceMemberTemplate(value: Builtin): value is BuiltinInstanceMemberTemplate; export interface BuiltinMemberCall extends Builtin { readonly emitCall: (sb: ScriptBuilder, func: CallMemberLikeExpression, node: ts.CallExpression, options: VisitOptions) => void; } export declare function isBuiltinMemberCall(value: Builtin): value is BuiltinMemberCall; export interface BuiltinInstanceMemberCall extends Builtin { readonly canCall: (sb: ScriptBuilder, func: CallMemberLikeExpression, node: ts.CallExpression, options: VisitOptions) => boolean; readonly emitCall: (sb: ScriptBuilder, func: CallMemberLikeExpression, node: ts.CallExpression, options: VisitOptions, visited: boolean) => void; } export declare function isBuiltinInstanceMemberCall(value: Builtin): value is BuiltinInstanceMemberCall; export interface BuiltinInstanceOf extends Builtin { readonly emitInstanceOf: (sb: ScriptBuilder, node: ts.Expression, options: VisitOptions) => void; } export declare function isBuiltinInstanceOf(value: Builtin): value is BuiltinInstanceOf; export interface BuiltinNew extends BuiltinInstanceOf { readonly emitNew: (sb: ScriptBuilder, node: ts.NewExpression, options: VisitOptions) => void; } export declare function isBuiltinNew(value: Builtin): value is BuiltinNew; export interface BuiltinValueObject extends Builtin { readonly type: string; } export declare function isBuiltinValueObject(value: Builtin): value is BuiltinValueObject;