#ifndef MOVES_H
#define MOVES_H

#include "global.h"

/*
    functions
*/
int check_legal(state_s *s, move_s *move);
int in_check(state_s *s);
int movegen(state_s *s, move_s *moves);
move_s* add_move(move_s *move, int Pfrom, int Ptarget, int Ppromoted);
move_s* add_capture(move_s *move, int Pfrom, int Ptarget, int Pcaptured, int Ppromoted, int Pep);
move_s* push_king_castle(state_s *s, move_s *move, int Pfrom, int Ptarget, int Pcastle_type);
move_s* push_knight(state_s *s, move_s *move, int from, int target);
move_s* push_king(state_s *s, move_s *move, int from, int target);
move_s* push_pawn(state_s *s, move_s *move, int from, int target, int is_ep);
move_s* push_slide(state_s *s, move_s *move, int from, int target);
move_s* push_pawn_simple(state_s *s, move_s *move, int from, int target);

#endif
