#pragma once #include "mining_pool_interface.hpp" #include #include #include "noderunners/noderunners_pool.hpp" #include "braiins/brains_pool.hpp" #include "ocean/ocean_pool.hpp" #include "satoshi_radio/satoshi_radio_pool.hpp" #include "public_pool/public_pool.hpp" #include "gobrrr_pool/gobrrr_pool.hpp" class PoolFactory { public: static std::unique_ptr createPool(const std::string& poolName); static std::vector getAvailablePools() { return { MINING_POOL_NAME_OCEAN, MINING_POOL_NAME_NODERUNNERS, MINING_POOL_NAME_SATOSHI_RADIO, MINING_POOL_NAME_BRAIINS, MINING_POOL_NAME_PUBLIC_POOL, MINING_POOL_NAME_GOBRRR_POOL }; } static std::string getAvailablePoolsAsString() { const auto pools = getAvailablePools(); std::string result; for (size_t i = 0; i < pools.size(); ++i) { result += pools[i]; if (i < pools.size() - 1) { result += ", "; } } return result; } private: static const char* MINING_POOL_NAME_OCEAN; static const char* MINING_POOL_NAME_NODERUNNERS; static const char* MINING_POOL_NAME_BRAIINS; static const char* MINING_POOL_NAME_SATOSHI_RADIO; static const char* MINING_POOL_NAME_PUBLIC_POOL; static const char* MINING_POOL_NAME_GOBRRR_POOL; };