#pragma once

#include <cstdint>
#include <string>

//--------------------------------------------------------------
class IHttpServer
{
  public:
  IHttpServer()                                      = default;     // Default constructor
  virtual ~IHttpServer()                             = default;     // Default destructor
  IHttpServer(const IHttpServer &obj)                = delete;      // Copy constructor
  IHttpServer(IHttpServer &&obj) noexcept            = delete;      // Move constructor
  IHttpServer &operator=(const IHttpServer &obj)     = delete;      // Copy assignment operator
  IHttpServer &operator=(IHttpServer &&obj) noexcept = delete;      // Move assignment operator

  // Server control methods
  virtual void               enable(const std::string &listenAddresses, uint16_t listenPort) = 0;     // Start the server and listen on the specified address and port
  virtual void               disable()                                                       = 0;     // Stop the server and clean up resources
  virtual [[nodiscard]] bool isEnabled()                                                     = 0;     // Check if the server is currently enabled
};
//--------------------------------------------------------------
