import ControlFlowEdge from "../../edge/ControlFlowEdge.js";
import FlowNode from "../FlowNode.js";
import BaseNode from "../../../graph/BaseNode.js";
import { NodeBuilder, NodeTypeGuard } from "../../../graph/Node.js";
import { Joinpoint } from "../../../../../../Joinpoints.js";
declare namespace ConditionNode {
    class Class<D extends Data = Data, S extends ScratchData = ScratchData> extends FlowNode.Class<D, S> {
        get trueEdge(): ControlFlowEdge.Class;
        get trueNode(): FlowNode.Class;
        set trueNode(node: FlowNode.Class);
        get falseEdge(): ControlFlowEdge.Class;
        get falseNode(): FlowNode.Class;
        set falseNode(node: FlowNode.Class);
    }
    class Builder extends FlowNode.Builder implements NodeBuilder<Data, ScratchData> {
        #private;
        constructor(type: Type, truePath: ControlFlowEdge.Class, falsePath: ControlFlowEdge.Class, $jp?: Joinpoint);
        buildData(data: BaseNode.Data): Data;
        buildScratchData(scratchData: BaseNode.ScratchData): ScratchData;
    }
    const TypeGuard: NodeTypeGuard<Data, ScratchData>;
    interface Data extends FlowNode.Data {
        trueEdgeId: string;
        falseEdgeId: string;
        flowNodeType: FlowNode.Type.CONDITION;
        conditionFlowNodeType: Type;
    }
    interface ScratchData extends FlowNode.ScratchData {
    }
    enum Type {
        IF_COMPARISON = "if_comparison",
        SWITCH_CASE = "switch_case",
        TRY_CATCH = "try_catch"
    }
}
export default ConditionNode;
//# sourceMappingURL=ConditionNode.d.ts.map