from typing import Any

from typing import overload

class CDirectedTree_mrpt_nav_TMoveEdgeSE2_TP_t:
    edges_to_children: Any
    root: int
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: CDirectedTree_mrpt_nav_TMoveEdgeSE2_TP_t) -> None: ...
    def assign(self) -> CDirectedTree_mrpt_nav_TMoveEdgeSE2_TP_t: ...
    @overload
    def clear(self) -> None: ...
    @overload
    def clear() -> void: ...
    def getAsTextDescription(self) -> str: ...

class ScalarFactorGraph:
    class BinaryFactorVirtualBase(ScalarFactorGraph.FactorBase):
        node_id_i: int
        node_id_j: int
        @overload
        def __init__(self, arg0: ScalarFactorGraph.BinaryFactorVirtualBase) -> None: ...
        @overload
        def __init__(self) -> None: ...
        def assign(self) -> ScalarFactorGraph.BinaryFactorVirtualBase: ...
        def evalJacobian(self, dr_dxi: float, dr_dxj: float) -> None: ...

    class FactorBase:
        @overload
        def __init__(self, arg0: ScalarFactorGraph.FactorBase) -> None: ...
        @overload
        def __init__(self) -> None: ...
        def assign(self) -> ScalarFactorGraph.FactorBase: ...
        @overload
        def evaluateResidual(self) -> float: ...
        @overload
        def evaluateResidual() -> double: ...
        @overload
        def getInformation(self) -> float: ...
        @overload
        def getInformation() -> double: ...

    class UnaryFactorVirtualBase(ScalarFactorGraph.FactorBase):
        node_id: int
        @overload
        def __init__(self, arg0: ScalarFactorGraph.UnaryFactorVirtualBase) -> None: ...
        @overload
        def __init__(self) -> None: ...
        def assign(self) -> ScalarFactorGraph.UnaryFactorVirtualBase: ...
        def evalJacobian(self, dr_dx: float) -> None: ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: ScalarFactorGraph) -> None: ...
    @overload
    def addConstraint(self, listOfConstraints) -> None: ...
    @overload
    def addConstraint(conststructmrpt) -> void: ...
    @overload
    def addConstraint(self, listOfConstraints) -> None: ...
    @overload
    def addConstraint(conststructmrpt) -> void: ...
    def assign(self) -> ScalarFactorGraph: ...
    @overload
    def clear(self) -> None: ...
    @overload
    def clear() -> void: ...
    @overload
    def clearAllConstraintsByType_Binary(self) -> None: ...
    @overload
    def clearAllConstraintsByType_Binary() -> void: ...
    @overload
    def clearAllConstraintsByType_Unary(self) -> None: ...
    @overload
    def clearAllConstraintsByType_Unary() -> void: ...
    @overload
    def enableProfiler(self) -> None: ...
    @overload
    def enableProfiler(self, enable: bool) -> None: ...
    @overload
    def enableProfiler(bool) -> void: ...
    @overload
    def eraseConstraint(self, c) -> bool: ...
    @overload
    def eraseConstraint(conststructmrpt) -> bool: ...
    @overload
    def initialize(self, nodeCount: int) -> None: ...
    @overload
    def initialize(size_t) -> void: ...
    @overload
    def isProfilerEnabled(self) -> bool: ...
    @overload
    def isProfilerEnabled() -> bool: ...
    @overload
    def updateEstimation(self, solved_x_inc) -> None: ...
    @overload
    def updateEstimation(self, solved_x_inc, solved_variances) -> None: ...
