#pragma once

#include <utils/error.hpp>
#include <utils/types.hpp>
#include <utils/unique_fd.hpp>

namespace hv::kvm {

	class VM;

	class Accelerant {
		/// The fd of the KVM device.
		util::UniqueFd deviceFd;

		Accelerant(util::UniqueFd&& fd);

	   public:

		/// Creates a new instance of the accelerant.
		static util::Ref<Accelerant> create();

		/// Create a VM instance.
		util::Ref<VM> createVM();
	};

} // namespace kvm
