#pragma once

#include "adapters/config/ChamsConfigAdapter.h"
#include "adapters/unity/chams/EftChamsGateway.h"
#include "features/chams/ChamsFeature.h"
#include "bootstrap/modules/ModulePorts.h"

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

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

    private:
        ta::adapters::config::ChamsConfigAdapter settings_;
        ta::adapters::unity::chams::EftChamsGateway gateway_;
        ta::features::chams::ChamsFeature feature_;
        ModulePorts ports_;
    };
}
