@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
78 lines (77 loc) • 4.45 kB
TypeScript
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;