import { MinimalEthereumJsVm } from "hardhat/internal/hardhat-network/provider/vm/minimal-vm";
import { TransactionTrace } from "./transaction-trace";
import { AwaitedItem, TracerEnv } from "./types";
import { MinimalEVMResult, MinimalInterpreterStep, MinimalMessage } from "hardhat/internal/hardhat-network/provider/vm/types";
export declare class TraceRecorder {
    vm: MinimalEthereumJsVm;
    previousTraces: TransactionTrace[];
    printIndex: number;
    previousTracesMap: Map<string, TransactionTrace>;
    trace: TransactionTrace | undefined;
    previousOpcode: string | undefined;
    tracerEnv: TracerEnv;
    awaitedItems: Array<AwaitedItem<any>>;
    addressStack: {
        value: string;
    }[];
    constructor(vm: MinimalEthereumJsVm, tracerEnv: TracerEnv);
    storeLastTrace(txHash: string): void;
    getTrace(txHash: string): TransactionTrace | undefined;
    handleBeforeTx(resolve?: ((result?: any) => void) | undefined): void;
    handleBeforeMessage(message: MinimalMessage, resolve: ((result?: any) => void) | undefined): void;
    newContract(contractAddress: string, resolve?: ((result?: any) => void) | undefined): void;
    handleStep(step: MinimalInterpreterStep, resolve: ((result?: any) => void) | undefined): void;
    handleAfterMessage(evmResult: MinimalEVMResult, resolve: ((result?: any) => void) | undefined): void;
    handleAfterTx(resolve?: ((result?: any) => void) | undefined): void;
}
//# sourceMappingURL=trace-recorder.d.ts.map