// Copyright (c) 2026 Codemongous LLC. All Rights Reserved.

#pragma once
#include "ISCW_EngineVersionComparison.h"
#if ISCW_UE_VERSION_NEWER_THAN_OR_EQUAL(5,5,0)

#include "ISCW_UObject.h"

#include <string>
#include <vector>

using std::vector;
using std::wstring;

namespace Sourcify
{
	class ISCW_FInstancedPropertyBag
	{
	public:
		virtual ~ISCW_FInstancedPropertyBag() = default;

		virtual vector<ISCW_UObjectPtr> GetDescriptorTypeObjects() const = 0;
		virtual void ReplaceDescriptorType(ISCW_UObjectConstPtr oldType, ISCW_UObjectPtr newType) = 0;
		virtual vector<wstring> GetPropertyNamesWithType(ISCW_UObjectConstPtr typeObject) const = 0;
		virtual wstring GetPropertyValueAsString(const wstring& propertyName) const = 0;
		virtual void SetPropertyValueFromString(const wstring& propertyName, const wstring& value) = 0;
	};
} // namespace Sourcify

#endif // ISCW_UE_VERSION_NEWER_THAN_OR_EQUAL(5,5,0)