///
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 { 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;
}
export interface CompileResult {
readonly contract: ContractRegister;
readonly abi: ABI;
readonly context: Context;
readonly sourceMap: Promise;
}