namespace mrpt::graphs::detail

namespace detail {

// structs

template <class GRAPH_T>
struct THypothesis;

struct TMRSlamEdgeAnnotations;
struct TMRSlamNodeAnnotations;
struct TNodeAnnotations;
struct TNodeAnnotationsEmpty;

template <>
struct TPosePDFHelper<CPose3D>;

template <class POSE_PDF>
struct TPosePDFHelper;

template <>
struct TPosePDFHelper<CPose2D>;

struct edge_annotations_empty;

template <class graph_t>
struct graph_ops;

// classes

template <
    class CPOSE,
    class MAPS_IMPLEMENTATION,
    class NODE_ANNOTATIONS = mrpt::graphs::detail::TMRSlamNodeAnnotations,
    class EDGE_ANNOTATIONS = mrpt::graphs::detail::edge_annotations_empty
    >
class CMRVisualizer;

template <class CPOSE, class MAPS_IMPLEMENTATION, class EDGE_ANNOTATIONS>
class CMRVisualizer<CPOSE, MAPS_IMPLEMENTATION, TMRSlamNodeAnnotations, EDGE_ANNOTATIONS>;

template <
    class CPOSE,
    class MAPS_IMPLEMENTATION,
    class NODE_ANNOTATIONS = mrpt::graphs::detail::TNodeAnnotations,
    class EDGE_ANNOTATIONS = mrpt::graphs::detail::edge_annotations_empty
    >
class CVisualizer;

class NotConnectedGraph;

} // namespace detail