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

#pragma once

#include "ISCW_FEdGraphPinType.h"
#include <memory>
#include <string>

using std::shared_ptr;
using std::wstring;

namespace Sourcify
{
	struct SCW_FGuid
	{
		uint32_t A = 0;
		uint32_t B = 0;
		uint32_t C = 0;
		uint32_t D = 0;
	};

	class ISCW_FBPVariableDescription
	{
	public:
		virtual ~ISCW_FBPVariableDescription() = default;

		virtual wstring DefaultValue() const = 0;

		virtual void SetDefaultValue(const wstring& InDefaultValue) = 0;

		virtual SCW_FGuid GetVarGuid() const = 0;

		virtual ISCW_FEdGraphPinTypePtr GetVarType() const = 0;

		virtual wstring VarName() const = 0;
	};

	using ISCW_FBPVariableDescriptionConstPtr = shared_ptr<const ISCW_FBPVariableDescription>;
	using ISCW_FBPVariableDescriptionPtr = shared_ptr<ISCW_FBPVariableDescription>;
} // namespace Sourcify