"""Problem graph extension points."""

from calibrex.graph.factors import (
    FactorPlugin,
    get_factor_plugin,
    list_factor_plugins,
    register_factor,
)
from calibrex.graph.joint_factors import (
    JointDepthPointToPlaneMeasurement,
    JointPointToPlaneMeasurement,
    JointRadarDopplerMeasurement,
    JointTrilinearXYZPairMeasurement,
    JointTrilinearXYZPointToPlaneMeasurement,
    estimate_xyz_lattice_local_rotations,
    make_joint_depth_point_to_plane_factor,
    make_joint_point_to_plane_factor,
    make_joint_prior_factor,
    make_joint_radar_doppler_factor,
    make_joint_trilinear_xyz_pair_factor,
    make_joint_trilinear_xyz_point_to_plane_factor,
    make_joint_xyz_lattice_rigid_gauge_factor,
    make_joint_xyz_lattice_shape_factor,
    regular_lattice_control_points,
    se3_from_tangent,
)
from calibrex.graph.joint_optimization import (
    BackendNeutralJointOptimizer,
    JointFactorFamilyDiagnostic,
    JointFactorWhitening,
    JointKnownBadProbe,
    JointLinearSolver,
    JointObservabilityEvaluation,
    JointOptimizerIteration,
    JointOptimizerOptions,
    JointOptimizerResult,
    JointParameterBlock,
    JointResidualBlock,
    JointSchurRole,
    SquareRootInformation,
    evaluate_joint_observability,
    split_joint_factors,
)
from calibrex.graph.joint_reassociation import (
    BackendNeutralJointReassociation,
    JointReassociationCallback,
    JointReassociationIteration,
    JointReassociationOptions,
    JointReassociationProbe,
    JointReassociationProbeEvaluation,
    JointReassociationProbeOptions,
    JointReassociationResult,
    JointReassociationState,
    evaluate_joint_reassociation_probes,
)
from calibrex.graph.problem import CalibrationProblemSpec, build_problem

__all__ = [
    "BackendNeutralJointOptimizer",
    "BackendNeutralJointReassociation",
    "CalibrationProblemSpec",
    "FactorPlugin",
    "JointDepthPointToPlaneMeasurement",
    "JointFactorFamilyDiagnostic",
    "JointFactorWhitening",
    "JointKnownBadProbe",
    "JointLinearSolver",
    "JointObservabilityEvaluation",
    "JointOptimizerIteration",
    "JointOptimizerOptions",
    "JointOptimizerResult",
    "JointParameterBlock",
    "JointPointToPlaneMeasurement",
    "JointRadarDopplerMeasurement",
    "JointReassociationCallback",
    "JointReassociationIteration",
    "JointReassociationOptions",
    "JointReassociationProbe",
    "JointReassociationProbeEvaluation",
    "JointReassociationProbeOptions",
    "JointReassociationResult",
    "JointReassociationState",
    "JointResidualBlock",
    "JointSchurRole",
    "JointTrilinearXYZPairMeasurement",
    "JointTrilinearXYZPointToPlaneMeasurement",
    "SquareRootInformation",
    "build_problem",
    "estimate_xyz_lattice_local_rotations",
    "evaluate_joint_observability",
    "evaluate_joint_reassociation_probes",
    "get_factor_plugin",
    "list_factor_plugins",
    "make_joint_depth_point_to_plane_factor",
    "make_joint_point_to_plane_factor",
    "make_joint_prior_factor",
    "make_joint_radar_doppler_factor",
    "make_joint_trilinear_xyz_pair_factor",
    "make_joint_trilinear_xyz_point_to_plane_factor",
    "make_joint_xyz_lattice_rigid_gauge_factor",
    "make_joint_xyz_lattice_shape_factor",
    "register_factor",
    "regular_lattice_control_points",
    "se3_from_tangent",
    "split_joint_factors",
]
