#ifndef PROFILE_HPP_INCLUDED
#define PROFILE_HPP_INCLUDED

#include "../../Core/Types/Timer.hpp"
#include <cstdint>
#include <string>

/** @addtogroup Tools
* @{ */
class Profile
{
    public:


        static std::string GetUsername();
        static std::string GetPassword();
        static std::string GetBankPin();
        static std::int32_t GetWorld();
        static void SetWorld(std::int32_t World);

        static bool GetIsMember();
        static bool GetHasPin();

        static std::int32_t GetInteractableMean();
        static double GetInteractableDeviation();

        static std::int32_t GetMoveMean();
        static double GetMoveDeviation();

        static std::int32_t GetMouseDownMean();
        static double GetMouseDownDeviation();

        static std::int32_t GetMouseUpMean();
        static double GetMouseUpDeviation();

        static std::int32_t GetKeyDownMean();
        static double GetKeyDownDeviation();

        static std::int32_t GetKeyUpMean();
        static double GetKeyUpDeviation();

        static std::int32_t GetScrollAmount();
        static double GetScrollAmountDeviation();
        static std::int32_t GetScrollGapMean();
        static double GetScrollGapDeviation();
        static std::int32_t GetScrollDelayMean();
        static double GetScrollDelayDeviation();

        static double GetStandardDeviationX();
        static double GetStandardDeviationY();

        static double GetBoxProbabilityX();
        static double GetBoxProbabilityY();

        static double GetConvexProbabilityX();
        static double GetConvexProbabilityY();

        static double GetItemProbabilityX();
        static double GetItemProbabilityY();

        static double GetMenuProbabilityX();
        static double GetMenuProbabilityY();

        static double GetWidgetProbabilityX();
        static double GetWidgetProbabilityY();

        static double GetPointGenAccuracy();

        static double GetFatigue();
        static double GetFatigueGain();
        static double GetFatigueLoss();
        static double GetFatigueMax();

        static bool GetMiniBreakEnabled();
        static double GetMiniBreakEvery();
        static double GetMiniBreakEveryDeviation();
        static double GetMiniBreakFor();
        static double GetMiniBreakForDeviation();

        static bool GetShortBreakEnabled();
        static double GetShortBreakEvery();
        static double GetShortBreakEveryDeviation();
        static double GetShortBreakFor();
        static double GetShortBreakForDeviation();

        static bool GetLongBreakEnabled();
        static double GetLongBreakEvery();
        static double GetLongBreakEveryDeviation();
        static double GetLongBreakFor();
        static double GetLongBreakForDeviation();

        static bool UseProxy();
        static std::string GetProxyHost();
        static std::string GetProxyPort();
        static std::string GetProxyUsername();
        static std::string GetProxyPassword();

        static void SetRawInteractableMean(std::int32_t Mean);
        static std::int32_t GetRawInteractableMean();
        static void SetRawInteractableDeviation(double Deviation);
        static double GetRawInteractableDeviation();

        static void SetRawMoveMean(std::int32_t Mean);
        static std::int32_t GetRawMoveMean();
        static void SetRawMoveDeviation(double Deviation);
        static double GetRawMoveDeviation();

        static void SetRawMouseDownMean(std::int32_t Mean);
        static std::int32_t GetRawMouseDownMean();
        static void SetRawMouseDownDeviation(double Deviation);
        static double GetRawMouseDownDeviation();

        static void SetRawMouseUpMean(std::int32_t Mean);
        static std::int32_t GetRawMouseUpMean();
        static void SetRawMouseUpDeviation(double Deviation);
        static double GetRawMouseUpDeviation();

        static void SetRawKeyDownMean(std::int32_t Mean);
        static std::int32_t GetRawKeyDownMean();
        static void SetRawKeyDownDeviation(double Deviation);
        static double GetRawKeyDownDeviation();

        static void SetRawKeyUpMean(std::int32_t Mean);
        static std::int32_t GetRawKeyUpMean();
        static void SetRawKeyUpDeviation(double Deviation);
        static double GetRawKeyUpDeviation();

};

/** @} */

#endif // PROFILE_HPP_INCLUDED
