#ifndef ARC_INPUT_H_
#define ARC_INPUT_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "arc/input/keyboard.h"
#include "arc/input/mouse.h"
#include "arc/std/bool.h"

/**
 * @brief predefien ARC_EngineData so as not to get circular reference
*/
typedef struct ARC_EngineData ARC_EngineData;

typedef struct ARC_Input ARC_Input;

void ARC_Input_CreateWithEngineData(ARC_Input **input, ARC_EngineData *data);

void ARC_Input_Destroy(ARC_Input *input);

ARC_Bool ARC_Input_Update(ARC_Input *input);

ARC_Keyboard *ARC_Input_GetKeyboard(ARC_Input *input);

ARC_Mouse *ARC_Input_GetMouse(ARC_Input *input);

#ifdef __cplusplus
}
#endif

#endif // !ARC_INPUT_H_
