#pragma once

#include <asl/status_or.hpp>
#include <asl/box.hpp>

struct SDL_Window;

namespace gpu
{

class Gpu
{
public:
    Gpu() = default;
    ASL_DELETE_COPY_MOVE(Gpu);
    virtual ~Gpu() = default;

    virtual void destroy() = 0;
};

asl::status_or<asl::box<Gpu>> init(SDL_Window* window);

} // namespace gpu