/**
 * @author WMXPY
 * @namespace Variable_Trace
 * @description Trace
 */
import * as EST from "estree";
import { MarkedDebugBreakPointController } from "../../debug/break-point/controller";
import { ScriptLocation } from "../../declare/script-location";
import { ITrace } from "../../declare/variable";
import { BaseSourceMapLocationFinder } from "../../source-map/location-finder/base";
export declare class Trace implements ITrace {
    static init(scriptLocation: ScriptLocation, locationFinder: BaseSourceMapLocationFinder, breakPointController?: MarkedDebugBreakPointController): Trace;
    protected readonly _scriptLocation: ScriptLocation;
    protected readonly _parent: Trace | null;
    protected readonly _node: EST.Node | null;
    protected readonly _locationFinder: BaseSourceMapLocationFinder | null;
    protected readonly _breakPointController: MarkedDebugBreakPointController | null;
    protected _label: string | null;
    protected constructor(scriptLocation: ScriptLocation, node: EST.Node | null, parent?: Trace, locationFinder?: BaseSourceMapLocationFinder, breakPointController?: MarkedDebugBreakPointController);
    get scriptLocation(): ScriptLocation;
    hasBreakPointController(): boolean;
    ensureBreakPointController(): MarkedDebugBreakPointController;
    ensureLocationFinder(): BaseSourceMapLocationFinder;
    getNode(): EST.Node | null;
    getParent(): Trace | null;
    hasLabel(): boolean;
    getLabel(): string | null;
    ensureLabel(): string;
    stack(node: EST.Node): Trace;
    stackWithLabel(node: EST.Node, label: string): Trace;
}
