#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "HyperTwistTraining/HyperTwistTrainingControlPlaneLibrary.h"
#include "HyperTwistTraining/HyperTwistTrainingKnowledgeLibrary.h"
#include "HyperTwistTraining/HyperTwistTrainingTypes.h"
#include "HyperTwistTrainingPublicationLibrary.generated.h"

UCLASS()
class UNREALHYPERTWIST_API UHyperTwistTrainingPublicationLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Publication")
	static FHyperTwistTrainingPublicationBundle BuildPublicationBundle(
		const FHyperTwistTrainingLearnerProfile& LearnerProfile,
		const FHyperTwistTrainingDeckHistorySummary& DeckHistorySummary,
		const FHyperTwistTrainingPersonalBestSummary& PersonalBestSummary,
		const FHyperTwistTrainingDeck& Deck,
		const FHyperTwistTrainingKnowledgeReferenceBundle& KnowledgeBundle,
		const FHyperTwistTrainingFeatureGovernanceContract& FeatureGovernanceContract,
		const FHyperTwistTrainingEarlyAccessRolloutContract& EarlyAccessContract
	);
};
