BareGit
#pragma once

#include "server_config.hpp"

#include <filesystem>
#include <string>

namespace nethack_mcp
{

/// Records settings whose explicit values are required for public mode.
struct ConfigExplicitSettings
{
    /// Whether the canonical public URL was specified.
    bool public_base_url = false;
    /// Whether the active game limit was specified.
    bool max_active_games = false;
    /// Whether the game creation quota was specified.
    bool new_games_per_client = false;
    /// Whether the game creation quota window was specified.
    bool new_game_rate_window = false;
    /// Whether the client tracking capacity was specified.
    bool max_rate_limit_clients = false;
    /// Whether the HTTP worker capacity was specified.
    bool max_concurrent_requests = false;
    /// Whether the HTTP connection capacity was specified.
    bool max_open_connections = false;
    /// Whether the worker output limit was specified.
    bool max_worker_output_bytes = false;
};

/// Loads TOML settings into the existing server configuration.
bool readConfigFile(const std::filesystem::path& path,
                    ServerConfig& config,
                    ConfigExplicitSettings& explicit_settings,
                    std::string& error);

} // namespace nethack_mcp