import { StructLog } from 'ethereum-types'; export interface LineColumn { line: number; column: number; } export interface SourceRange { location: SingleFileSourceRange; fileName: string; } export interface SingleFileSourceRange { start: LineColumn; end: LineColumn; } export interface OffsetToLocation { [offset: number]: LineColumn; } export interface FunctionDescription { name: string; line: number; loc: SingleFileSourceRange; skip?: boolean; } export type StatementDescription = SingleFileSourceRange; export interface BranchDescription { line: number; type: 'if' | 'switch' | 'cond-expr' | 'binary-expr'; locations: SingleFileSourceRange[]; } export interface FnMap { [functionId: string]: FunctionDescription; } export interface BranchMap { [branchId: string]: BranchDescription; } export interface StatementMap { [statementId: string]: StatementDescription; } export interface LineCoverage { [lineNo: number]: number; } export interface FunctionCoverage { [functionId: string]: number; } export interface StatementCoverage { [statementId: string]: number; } export interface BranchCoverage { [branchId: string]: number[]; } export interface Coverage { [fineName: string]: { l?: LineCoverage; f: FunctionCoverage; s: StatementCoverage; b: BranchCoverage; fnMap: FnMap; branchMap: BranchMap; statementMap: StatementMap; path: string; }; } export interface SourceCodes { [sourceId: number]: string; } export interface Sources { [sourceId: number]: string; } export interface ContractData { bytecode: string; sourceMap: string; runtimeBytecode: string; sourceMapRuntime: string; sourceCodes: SourceCodes; sources: Sources; } // Part of the trace executed within the same context export type Subtrace = StructLog[]; export interface TraceInfoBase { subtrace: Subtrace; txHash: string; } export interface TraceInfoNewContract extends TraceInfoBase { address: 'NEW_CONTRACT'; bytecode: string; } export interface TraceInfoExistingContract extends TraceInfoBase { address: string; runtimeBytecode: string; } export type TraceInfo = TraceInfoNewContract | TraceInfoExistingContract; export enum BlockParamLiteral { Latest = 'latest', } export interface EvmCallStackEntry { structLog: StructLog; address: string; } export type EvmCallStack = EvmCallStackEntry[]; export interface SourceSnippet { source: string; fileName: string; range: SingleFileSourceRange; }