#pragma once

#include "adapters/config/AimbotConfigAdapter.h"
#include "adapters/eft/aimbot/EftAimbotGateway.h"
#include "adapters/windows/input/AimbotInputAdapter.h"
#include "features/aimbot/AimbotFeature.h"
#include "bootstrap/modules/ModulePorts.h"

namespace ta::bootstrap::modules
{
    class AimbotModule final
    {
    public:
        explicit AimbotModule(ta::adapters::eft::runtime::EftGameContext& context);

        [[nodiscard]] const ModulePorts& ports() const noexcept { return ports_; }

    private:
        ta::adapters::config::AimbotConfigAdapter settings_;
        ta::adapters::windows::input::AimbotInputAdapter input_;
        ta::adapters::eft::aimbot::EftAimbotGateway gateway_;
        ta::features::aimbot::AimbotFeature feature_;
        ModulePorts ports_;
    };
}
