#ifndef AUTHENTICATOR_HPP_
#define AUTHENTICATOR_HPP_

#include <string>

#include <Utilities/Socket.hpp>

/**
 * @brief Base class for client authenticators.
 */
class Authenticator
{
public:
    virtual ~Authenticator() = default;

    /**
     * @brief Send the payload containing the login greeting.
     * 
     * @param socket The socket to send over.
     * @return true If sent successfully.
     * @return false If an error occured.
     */
    virtual bool sendGreetingPayload(SOCKET socket) = 0;

    /**
     * @brief Get the user name that we are logging in as.
     */
    virtual std::string getUserName() = 0;
};

#endif