#pragma once

#include "ShaderTypes.h"

#include <filesystem>
#include <map>
#include <string>
#include <vector>

class ShaderPackageRegistry
{
public:
	explicit ShaderPackageRegistry(unsigned maxTemporalHistoryFrames);

	bool Scan(
		const std::filesystem::path& shaderRoot,
		std::map<std::string, ShaderPackage>& packagesById,
		std::vector<std::string>& packageOrder,
		std::vector<ShaderPackageStatus>& packageStatuses,
		std::string& error) const;
	bool ParseManifest(const std::filesystem::path& manifestPath, ShaderPackage& shaderPackage, std::string& error) const;

private:
	unsigned mMaxTemporalHistoryFrames;
};
