#ifndef CLASSIFIER__H
#define CLASSIFIER__H

#include <string>
#include "TransitionSet.hpp"
#include "NeuralNetwork.hpp"

class Classifier
{
  private :

  std::string name;
  std::unique_ptr<TransitionSet> transitionSet;
  std::shared_ptr<NeuralNetworkImpl> nn;

  private :

  void initNeuralNetwork(const std::vector<std::string> & definition);
  void initLSTM(const std::vector<std::string> & definition, std::size_t & curIndex);

  public :

  Classifier(const std::string & name, std::filesystem::path path, std::vector<std::string> definition);
  TransitionSet & getTransitionSet();
  NeuralNetwork & getNN();
  const std::string & getName() const;
};

#endif