@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
44 lines (43 loc) • 1.63 kB
TypeScript
/// <reference types="node" />
import { ABI } from '@neo-one/client-common';
import { ContractRegister } from '@neo-one/client-full-core';
import { RawSourceMap } from 'source-map';
import ts from 'typescript';
import { Context } from '../Context';
import { DebugInfo } from '../contract';
import { ProgramCounter } from './pc';
import { Name } from './scope';
export interface LinkedContracts {
readonly [filePath: string]: {
readonly [smartContractClass: string]: string;
};
}
export declare type HandleSuperConstruct = (expression: ts.CallExpression, superExpression: ts.SuperExpression, options: VisitOptions) => void;
export interface VisitOptions {
readonly pushValue?: boolean | undefined;
readonly setValue?: boolean | undefined;
readonly catchPC?: ProgramCounter | undefined;
readonly breakPC?: ProgramCounter | undefined;
readonly continuePC?: ProgramCounter | undefined;
readonly finallyPC?: ProgramCounter | undefined;
readonly switchExpressionType?: ts.Type | undefined;
readonly cast?: ts.Type | undefined;
readonly superClass?: Name | undefined;
readonly handleSuperConstruct?: HandleSuperConstruct;
}
export interface Features {
readonly storage: boolean;
readonly dynamicInvoke: boolean;
}
export interface ScriptBuilderResult {
readonly code: Buffer;
readonly features: Features;
readonly sourceMap: Promise<RawSourceMap>;
}
export interface CompileResult {
readonly contract: ContractRegister;
readonly abi: ABI;
readonly context: Context;
readonly sourceMap: Promise<RawSourceMap>;
readonly debugInfo: DebugInfo;
}