#pragma once

#include "Web_Plot_Session.h"

#include <memory>
#include <optional>

namespace renderive::web {

class Gallery_Plot_Session final {
public:
    Gallery_Plot_Session();
    explicit Gallery_Plot_Session(bool automatic_low_latency);
    ~Gallery_Plot_Session();
    Gallery_Plot_Session(const Gallery_Plot_Session&) = delete;
    Gallery_Plot_Session& operator=(const Gallery_Plot_Session&) = delete;

    [[nodiscard]] std::optional<Web_Response> handle(const Web_Event& event);

private:
    struct Impl;
    std::unique_ptr<Impl> impl_;
};

} // namespace renderive::web
