import { AllowedCodes, DecodedMsg, MessageTree, TraceContext, TraceType } from "../types";
import { ContractWithArtifacts } from "../../../types";
import { TracingInternal } from "../tracingInternal";
import * as nt from "nekoton-wasm";
export declare class Trace<Abi = any> {
    private readonly tracing;
    readonly msg: MessageTree;
    private readonly srcTrace;
    private readonly context;
    outTraces: Array<Trace>;
    error: null | {
        phase: "compute" | "action";
        code: number | null;
        ignored?: boolean;
        reason: nt.TrComputeSkippedReason | undefined;
    };
    transactionTrace: nt.EngineTraceInfo[] | undefined;
    type: TraceType | null;
    contract: ContractWithArtifacts;
    decodedMsg: DecodedMsg | undefined;
    hasErrorInTree: boolean;
    constructor(tracing: TracingInternal, msg: MessageTree, srcTrace: Trace | null, context: TraceContext);
    buildTree(allowedCodes?: AllowedCodes): Promise<void>;
    checkForErrors(allowedCodes?: AllowedCodes): void;
    decodeMsg(contract?: ContractWithArtifacts | null): Promise<{
        decoded: DecodedMsg;
        finalType: TraceType | null;
    } | undefined>;
    decode(contract: ContractWithArtifacts<Abi> | undefined): Promise<void>;
    setMsgType(): void;
}
