#pragma once

#include <maps/wikimap/mapspro/services/mrc/libs/keypoints_matcher/include/matcher.h>

#include <maps/wikimap/mapspro/services/mrc/libs/common/include/keypoints.h>
#include <maps/wikimap/mapspro/libs/tf_inferencer/tf_inferencer.h>

#include <utility>
#include <vector>

namespace maps::mrc::keypoints_matcher {

class SuperglueMatcher: public IKeypointsMatcher
{
public:
    SuperglueMatcher(double confThreshold);

    /*
        Дескрипторы должны соответствовать тем, на которых натренирована сеть
    */
    MatchedPairs match(const common::Keypoints &kpts0, const common::Keypoints &kpts1) const override;
private:
    double confThreshold_;
    maps::wiki::tf_inferencer::TensorFlowInferencer inferencer_;
};

} // maps::mrc::keypoints_matcher