import { Compilation } from "@truffle/codec/dist/lib/compilations"; export interface Breakpoint { compilationId: string; sourcePath: string; line: number } export enum Command { Initialize = "initialize", StepOver = "stepOver", StepInto = "stepInto", StepOut = "stepOut", StepNext = "stepNext", StepInstruction = "stepInstruction", AddBreakpoint = "setBreakpoint", RemoveBreakpoint = "removeBreakpoint", ContinueUntilBreakpoint = "continueUntilBreakpoint", RemoveAllBreakpoints = "removeAllBreakpoints", Variables = "variables", Stacktrace = "stacktrace", Reset = "reset", RunToEnd = "runToEnd", Evaluate = "evaluate", Step = "step", CallTrace = "callTrace", } export interface InitArguments { providerURL: string; txnHash: string; chainId: string; shimmedCompilations: Compilation[] storageLookup: boolean disableOptimizer: boolean codeOverrides?: Record } export interface Location { lines?: Lines; compilationId?: string; length?: number; sourcePath?: string; instructionIndex: number; } export interface Variables { builtin: Variable[]; global: Variable[]; contract: Variable[]; local: Variable[]; } export interface Variable { name: string; raw: any; } export interface Stackframe { functionName?: string, contractName: string, address: string, isConstructor: boolean, type: string, location: { source: { id: string, sourcePath: string, internal: boolean } sourceRange: { start: number, length: number, lines: Lines }, node: { id: number } } } export interface Lines { start: Line, end: Line } export interface Line { line: number, column: number, } export interface TransactionInfo { block: any; chainID: number; code: any; transaction: any; transactionReceipt: any; } export interface Instruction { pc: number; opcode: string; gas_left: number; } export interface CallTrace { calls: Call[] } export interface ExternalCall { from: string, to: string, op: string, pc: number, // index: number, location?: Location, functionName?: string, inputs: any[], calls: Call[], returnValue?: any, contractName?: string, gas?: number, error?: string, depth: number, } export interface InternalCall { op: string, pc: number, // index: number, location?: Location, functionName?: string, inputs: any[], calls: Call[], returnValue?: any, depth: number } export type Call = ExternalCall | InternalCall;