#ifndef _HF_TEYAKU_
#define _HF_TEYAKU_

#include <stdbool.h>

#include "card.h"

typedef enum SetTeyaku {
  SET_TEYAKU_NONE,
  TRIPLET,
  STANDING_TRIPLET,
  TWO_TRIPLETS,
  TRIPLET_AND_STANDING_TRIPLET,
  TWO_STANDING_TRIPLETS,
  THREE_PAIRS,
  FOUR_OF_A_KIND,
  TRIPLET_AND_TWO_PAIRS,
  ONE_TWO_FOUR,
  FOUR_THREE,
} SetTeyaku;

typedef enum ChaffTeyaku {
  CHAFF_TEYAKU_NONE,
  CHAFF_TEYAKU_RED,
  ONE_RIBBON,
  ONE_ANIMAL,
  ONE_BRIGHT,
  EMPTY_HAND,
} ChaffTeyaku;

typedef struct Teyaku {
  ChaffTeyaku chaff;
  SetTeyaku set;
  bool calculated;
} Teyaku;

void calculate_teyaku(const Hand h, Teyaku *t);
void teyaku_to_string(Teyaku *t, char *str);

#endif
