#ifndef _STATE_H
#define _STATE_H

#include "definitions.hpp"
#include <array>
#include <string>
#include <vector>

class GameState {
public:
  enum matchType { NO_MATCH, MATCH, EXACT_MATCH };
  typedef std::array<matchType, WORD_LENGTH> guessResultT;
  struct guess {
    std::string guess;
    guessResultT result;
  };

private:
  std::string word;
  uint8_t tries;
  std::vector<std::string> guesses;

public:
  GameState();
  GameState(const std::string &word);
  void setWord(const std::string &);
  guessResultT guess(const std::string &);
};
#endif // _STATE_H