#pragma once

/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/

// Package: TypedElementFramework

#include "Basic.hpp"

#include "CoreUObject_classes.hpp"


namespace SDK
{

// Class TypedElementFramework.TypedElementDataStorageCompatibilityInterface
// 0x0000 (0x0000 - 0x0000)
class ITypedElementDataStorageCompatibilityInterface final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementDataStorageCompatibilityInterface")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementDataStorageCompatibilityInterface")
	}
	static class ITypedElementDataStorageCompatibilityInterface* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITypedElementDataStorageCompatibilityInterface>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITypedElementDataStorageCompatibilityInterface;

// Class TypedElementFramework.TypedElementDataStorageFactory
// 0x0000 (0x0028 - 0x0028)
class UTypedElementDataStorageFactory final : public UObject
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementDataStorageFactory")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementDataStorageFactory")
	}
	static class UTypedElementDataStorageFactory* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTypedElementDataStorageFactory>();
	}
};
DUMPER7_ASSERTS_UTypedElementDataStorageFactory;

// Class TypedElementFramework.TypedElementDataStorageInterface
// 0x0000 (0x0000 - 0x0000)
class ITypedElementDataStorageInterface final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementDataStorageInterface")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementDataStorageInterface")
	}
	static class ITypedElementDataStorageInterface* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITypedElementDataStorageInterface>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITypedElementDataStorageInterface;

// Class TypedElementFramework.TypedElementDataStorageUiInterface
// 0x0000 (0x0000 - 0x0000)
class ITypedElementDataStorageUiInterface final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementDataStorageUiInterface")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementDataStorageUiInterface")
	}
	static class ITypedElementDataStorageUiInterface* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITypedElementDataStorageUiInterface>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITypedElementDataStorageUiInterface;

// Class TypedElementFramework.TypedElementHandleLibrary
// 0x0000 (0x0028 - 0x0028)
class UTypedElementHandleLibrary final : public UObject
{
public:
	static bool Equal(const struct FScriptTypedElementHandle& LHS, const struct FScriptTypedElementHandle& RHS);
	static bool IsSet(const struct FScriptTypedElementHandle& ElementHandle);
	static bool NotEqual(const struct FScriptTypedElementHandle& LHS, const struct FScriptTypedElementHandle& RHS);
	static void Release(struct FScriptTypedElementHandle& ElementHandle);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementHandleLibrary")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementHandleLibrary")
	}
	static class UTypedElementHandleLibrary* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTypedElementHandleLibrary>();
	}
};
DUMPER7_ASSERTS_UTypedElementHandleLibrary;

// Class TypedElementFramework.TypedElementListLibrary
// 0x0000 (0x0028 - 0x0028)
class UTypedElementListLibrary final : public UObject
{
public:
	static bool Add(const struct FScriptTypedElementListProxy& ElementList, const struct FScriptTypedElementHandle& ElementHandle);
	static void Append(const struct FScriptTypedElementListProxy& ElementList, const TArray<struct FScriptTypedElementHandle>& ElementHandles);
	static void AppendList(const struct FScriptTypedElementListProxy& ElementList, const struct FScriptTypedElementListProxy& OtherElementList);
	static struct FScriptTypedElementListProxy Clone(const struct FScriptTypedElementListProxy& ElementList);
	static bool Contains(const struct FScriptTypedElementListProxy& ElementList, const struct FScriptTypedElementHandle& ElementHandle);
	static int32 CountElements(const struct FScriptTypedElementListProxy& ElementList, const TSubclassOf<class IInterface> BaseInterfaceType);
	static int32 CountElementsOfType(const struct FScriptTypedElementListProxy& ElementList, const class FName ElementTypeName);
	static struct FScriptTypedElementListProxy CreateScriptElementList(class UTypedElementRegistry* Registry);
	static void Empty(const struct FScriptTypedElementListProxy& ElementList, const int32 Slack);
	static struct FScriptTypedElementHandle GetElementHandleAt(const struct FScriptTypedElementListProxy& ElementList, const int32 Index_0);
	static TArray<struct FScriptTypedElementHandle> GetElementHandles(const struct FScriptTypedElementListProxy& ElementList, const TSubclassOf<class IInterface> BaseInterfaceType);
	static class UObject* GetElementInterface(const struct FScriptTypedElementListProxy& ElementList, const struct FScriptTypedElementHandle& ElementHandle, const TSubclassOf<class IInterface> BaseInterfaceType);
	static bool HasElements(const struct FScriptTypedElementListProxy& ElementList, const TSubclassOf<class IInterface> BaseInterfaceType);
	static bool HasElementsOfType(const struct FScriptTypedElementListProxy& ElementList, const class FName ElementTypeName);
	static bool IsValidIndex(const struct FScriptTypedElementListProxy& ElementList, const int32 Index_0);
	static int32 Num(const struct FScriptTypedElementListProxy& ElementList);
	static bool Remove(const struct FScriptTypedElementListProxy& ElementList, const struct FScriptTypedElementHandle& ElementHandle);
	static void Reserve(const struct FScriptTypedElementListProxy& ElementList, const int32 Size);
	static void Reset(const struct FScriptTypedElementListProxy& ElementList);
	static void Shrink(const struct FScriptTypedElementListProxy& ElementList);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementListLibrary")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementListLibrary")
	}
	static class UTypedElementListLibrary* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTypedElementListLibrary>();
	}
};
DUMPER7_ASSERTS_UTypedElementListLibrary;

// Class TypedElementFramework.TypedElementCounterInterface
// 0x0000 (0x0000 - 0x0000)
class ITypedElementCounterInterface final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementCounterInterface")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementCounterInterface")
	}
	static class ITypedElementCounterInterface* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITypedElementCounterInterface>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITypedElementCounterInterface;

// Class TypedElementFramework.TypedElementRegistry
// 0x0950 (0x0978 - 0x0028)
class UTypedElementRegistry final : public UObject
{
public:
	uint8                                         Pad_28[0x950];                                     // 0x0028(0x0950)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UTypedElementRegistry* GetInstance();

	class UObject* GetElementInterface(const struct FScriptTypedElementHandle& InElementHandle, const TSubclassOf<class IInterface> InBaseInterfaceType) const;

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TypedElementRegistry")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TypedElementRegistry")
	}
	static class UTypedElementRegistry* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTypedElementRegistry>();
	}
};
DUMPER7_ASSERTS_UTypedElementRegistry;

// Class TypedElementFramework.TestTypedElementInterfaceA
// 0x0000 (0x0000 - 0x0000)
class ITestTypedElementInterfaceA final
{
public:
	class FText GetDisplayName(const struct FScriptTypedElementHandle& InElementHandle);
	bool SetDisplayName(const struct FScriptTypedElementHandle& InElementHandle, const class FText& InNewName, bool bNotify);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TestTypedElementInterfaceA")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TestTypedElementInterfaceA")
	}
	static class ITestTypedElementInterfaceA* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITestTypedElementInterfaceA>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITestTypedElementInterfaceA;

// Class TypedElementFramework.TestTypedElementInterfaceB
// 0x0000 (0x0000 - 0x0000)
class ITestTypedElementInterfaceB final
{
public:
	bool MarkAsTested(const struct FScriptTypedElementHandle& InElementHandle);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TestTypedElementInterfaceB")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TestTypedElementInterfaceB")
	}
	static class ITestTypedElementInterfaceB* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITestTypedElementInterfaceB>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITestTypedElementInterfaceB;

// Class TypedElementFramework.TestTypedElementInterfaceC
// 0x0000 (0x0000 - 0x0000)
class ITestTypedElementInterfaceC final
{
public:
	bool GetIsTested(const struct FScriptTypedElementHandle& InElementHandle) const;

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TestTypedElementInterfaceC")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TestTypedElementInterfaceC")
	}
	static class ITestTypedElementInterfaceC* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITestTypedElementInterfaceC>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITestTypedElementInterfaceC;

// Class TypedElementFramework.TestTypedElementInterfaceA_ImplTyped
// 0x0008 (0x0030 - 0x0028)
class UTestTypedElementInterfaceA_ImplTyped final : public UObject
{
public:
	uint8                                         Pad_28[0x8];                                       // 0x0028(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TestTypedElementInterfaceA_ImplTyped")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TestTypedElementInterfaceA_ImplTyped")
	}
	static class UTestTypedElementInterfaceA_ImplTyped* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTestTypedElementInterfaceA_ImplTyped>();
	}
};
DUMPER7_ASSERTS_UTestTypedElementInterfaceA_ImplTyped;

// Class TypedElementFramework.TestTypedElementInterfaceA_ImplUntyped
// 0x0008 (0x0030 - 0x0028)
class UTestTypedElementInterfaceA_ImplUntyped final : public UObject
{
public:
	uint8                                         Pad_28[0x8];                                       // 0x0028(0x0008)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TestTypedElementInterfaceA_ImplUntyped")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TestTypedElementInterfaceA_ImplUntyped")
	}
	static class UTestTypedElementInterfaceA_ImplUntyped* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTestTypedElementInterfaceA_ImplUntyped>();
	}
};
DUMPER7_ASSERTS_UTestTypedElementInterfaceA_ImplUntyped;

// Class TypedElementFramework.TestTypedElementInterfaceBAndC_Typed
// 0x0010 (0x0038 - 0x0028)
class UTestTypedElementInterfaceBAndC_Typed final : public UObject
{
public:
	uint8                                         Pad_28[0x10];                                      // 0x0028(0x0010)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TestTypedElementInterfaceBAndC_Typed")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TestTypedElementInterfaceBAndC_Typed")
	}
	static class UTestTypedElementInterfaceBAndC_Typed* GetDefaultObj()
	{
		return GetDefaultObjImpl<UTestTypedElementInterfaceBAndC_Typed>();
	}
};
DUMPER7_ASSERTS_UTestTypedElementInterfaceBAndC_Typed;

}

