#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "HyperTwistTraining/HyperTwistTrainingTypes.h"
#include "HyperTwistReplay/HyperTwistReplayReviewLibrary.h"
#include "HyperTwistRecognition/HyperTwistRecognitionReplayLibrary.h"
#include "HyperTwistTrainingCoachLibrary.generated.h"

UENUM(BlueprintType)
enum class EHyperTwistCoachPriority : uint8
{
	Informational UMETA(DisplayName = "Informational"),
	Advisory UMETA(DisplayName = "Advisory"),
	Elevated UMETA(DisplayName = "Elevated"),
	Critical UMETA(DisplayName = "Critical")
};

UENUM(BlueprintType)
enum class EHyperTwistCoachFocusLane : uint8
{
	ReviewBacklog UMETA(DisplayName = "Review Backlog"),
	Cadence UMETA(DisplayName = "Cadence"),
	Recognition UMETA(DisplayName = "Recognition"),
	Execution UMETA(DisplayName = "Execution"),
	Accuracy UMETA(DisplayName = "Accuracy"),
	Variety UMETA(DisplayName = "Variety"),
	Stability UMETA(DisplayName = "Stability")
};

USTRUCT(BlueprintType)
struct FHyperTwistCoachSignal
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SignalId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistCoachFocusLane FocusLane = EHyperTwistCoachFocusLane::Stability;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistCoachPriority Priority = EHyperTwistCoachPriority::Informational;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	float Score = 0.0f;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString Headline;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString Detail;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistTrainingDeliveryMode SuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistTrainingSelectionPolicy SuggestedSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Weighted;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SuggestedDeckId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SuggestedMethodSegmentId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	TArray<FString> SuggestedCaseIds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsImmediateAttention = false;
};

USTRUCT(BlueprintType)
struct FHyperTwistCoachBrief
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString UserId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString ReferenceUtc;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString TrainingSessionId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SourceReviewPlanId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString CarryForwardPlanId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString RootPlanId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 FollowUpDepth = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistCoachPriority Priority = EHyperTwistCoachPriority::Informational;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistCoachFocusLane FocusLane = EHyperTwistCoachFocusLane::Stability;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	float PriorityScore = 0.0f;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString Headline;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString PrimaryActionLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistTrainingDeliveryMode SuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistTrainingSelectionPolicy SuggestedSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Weighted;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusDeckId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusMethodSegmentId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	TArray<FString> FocusCaseIds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 DeferredLaunchCaseCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsDeferredLaunchRecovery = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasTightenedLaunchOverflow = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	TArray<FHyperTwistCoachSignal> Signals;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsCoachReview = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsCadenceRecovery = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsVarietyRotation = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bPreferRecognitionReplayReview = false;
};

USTRUCT(BlueprintType)
struct FHyperTwistCoachSessionQueueEntry
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString EntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SourceLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SourceBriefTrainingSessionId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString SourceReviewPlanId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString CarryForwardPlanId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString RootPlanId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 FollowUpDepth = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 SlotIndex = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistCoachPriority Priority = EHyperTwistCoachPriority::Informational;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	float PriorityScore = 0.0f;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistCoachFocusLane FocusLane = EHyperTwistCoachFocusLane::ReviewBacklog;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString Headline;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString PrimaryActionLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistTrainingDeliveryMode SuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	EHyperTwistTrainingSelectionPolicy SuggestedSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Weighted;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusDeckId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusMethodSegmentId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	TArray<FString> FocusCaseIds;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 DeferredLaunchCaseCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsDeferredLaunchRecovery = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasTightenedLaunchOverflow = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bRequiresFollowUp = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bRequiresArchiveRetentionTuning = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsCoachReview = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsCadenceRecovery = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsVarietyRotation = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bPreferRecognitionReplayReview = false;
};

USTRUCT(BlueprintType)
struct FHyperTwistCoachSessionQueueSummary
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString UserId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString ReferenceUtc;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusDeckId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusMethodSegmentId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString PrimaryQueueLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextQueueLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	TArray<FHyperTwistCoachSessionQueueEntry> Entries;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 TotalEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 FollowUpEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ArchiveRetentionEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ReviewBacklogEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasImmediateQueue = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsArchiveAwareSequencing = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bSuppressedPrimaryQueueCreation = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bSuppressedFollowUpQueueCreation = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString PrimaryQueueSuppressionReason;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FollowUpQueueSuppressionReason;

	bool IsStructurallyValid() const
	{
		return !UserId.IsEmpty() && Entries.Num() > 0;
	}
};

USTRUCT(BlueprintType)
struct FHyperTwistCoachScheduleHorizonSummary
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString UserId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString ReferenceUtc;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString QueueId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusDeckId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusMethodSegmentId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString ActiveEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextReadyEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextDeferredEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextArchiveEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextFollowUpEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString CurrentHorizonLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ImmediateEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 DeferredEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ArchiveAwareEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 FollowUpEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 PinnedEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasImmediateWindow = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasDeferredWindow = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsArchiveWindow = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasBlockedFollowUp = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasInProgressEntry = false;

	bool IsStructurallyValid() const
	{
		return !UserId.IsEmpty() && !QueueId.IsEmpty();
	}
};

USTRUCT(BlueprintType)
struct FHyperTwistCoachSchedulePolicySummary
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString UserId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString ReferenceUtc;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString QueueId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusDeckId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString FocusMethodSegmentId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextImmediateEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextPendingEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextDeferredEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString NextManualRescheduleEntryId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString EarliestDeferredUntilUtc;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString DominantDeferralReasonLabel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	FString ClosurePolicyLine;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 HistoricalFollowUpContinuationCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 HistoricalBorderlineFollowUpSuppressionCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ImmediateEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 PendingEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 DeferredEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ManualRescheduleEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 ArchiveAwareDeferredEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	int32 BlockedFollowUpDeferredEntryCount = 0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	float ReschedulePressureScore = 0.0f;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bAllowsManualReschedule = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasExpiredDeferrals = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bNeedsManualRescheduleReview = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasArchiveAwareDeferrals = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bHasBlockedFollowUpDeferrals = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bFollowUpContinuationFromRecoveryHistory = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
	bool bBorderlineFollowUpSuppressedByRecoveryHistory = false;

	bool IsStructurallyValid() const
	{
		return !UserId.IsEmpty() && !QueueId.IsEmpty();
	}
};

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

public:
	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static TArray<FHyperTwistCoachSignal> DeriveCoachSignals(
		const FHyperTwistTrainingSessionSummary& SessionSummary,
		const FHyperTwistTrainingDeckScopedStats& DeckScopedStats,
		const FHyperTwistTrainingLearnerDeckStateSummary& LearnerDeckStateSummary,
		const FHyperTwistTrainingLearnerProfile& LearnerProfile,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistTrainingReviewProgramSummary& ReviewProgramSummary,
		const FHyperTwistReplayReviewAnalytics& ReplayReviewAnalytics,
		const FHyperTwistRecognitionReplaySummary& RecognitionReplaySummary
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachBrief DeriveCoachBrief(
		const FHyperTwistTrainingSessionSummary& SessionSummary,
		const FHyperTwistTrainingDeckScopedStats& DeckScopedStats,
		const FHyperTwistTrainingLearnerDeckStateSummary& LearnerDeckStateSummary,
		const FHyperTwistTrainingLearnerProfile& LearnerProfile,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistTrainingReviewProgramSummary& ReviewProgramSummary,
		const FHyperTwistReplayReviewAnalytics& ReplayReviewAnalytics,
		const FHyperTwistRecognitionReplaySummary& RecognitionReplaySummary
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachBrief DeriveCoachFollowUpBrief(
		const FHyperTwistCoachBrief& CurrentBrief,
		const FHyperTwistTrainingCoachActionPlan& ActionPlan,
		const FHyperTwistTrainingCoachActionPlanOutcomeSummary& OutcomeSummary
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachSessionQueueSummary DeriveCoachSessionQueueSummary(
		const FHyperTwistCoachBrief& CurrentBrief,
		const FHyperTwistCoachBrief& FollowUpBrief,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistTrainingCoachArchivePolicySummary& ArchivePolicySummary,
		const FHyperTwistTrainingReviewProgramSummary& ReviewProgramSummary
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachSignal DeriveQueueSuppressionSignal(
		const FHyperTwistCoachSessionQueueSummary& QueueSummary,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistCoachBrief& CurrentBrief,
		const FHyperTwistCoachBrief& FollowUpBrief
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachBrief RefineCoachBriefWithQueueSuppressionSignal(
		const FHyperTwistCoachBrief& BaseBrief,
		const FHyperTwistCoachSignal& QueueSuppressionSignal
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachSignal DeriveSchedulePolicyFeedbackSignal(
		const FHyperTwistCoachSchedulePolicySummary& SchedulePolicySummary,
		const FHyperTwistTrainingCoachSessionQueueExecutionSummary& QueueExecutionSummary,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistCoachBrief& CurrentBrief
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachBrief RefineCoachBriefWithSchedulePolicyFeedbackSignal(
		const FHyperTwistCoachBrief& BaseBrief,
		const FHyperTwistCoachSignal& SchedulePolicyFeedbackSignal
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachSignal DeriveClosureRecoveryHistorySignal(
		const FHyperTwistTrainingCoachActionClosureSummary& ClosureSummary,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistCoachBrief& CurrentBrief
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachBrief RefineCoachBriefWithClosureRecoveryHistorySignal(
		const FHyperTwistCoachBrief& BaseBrief,
		const FHyperTwistCoachSignal& ClosureRecoveryHistorySignal
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachSignal DeriveLaunchBudgetHistorySignal(
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistCoachBrief& CurrentBrief
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachBrief RefineCoachBriefWithLaunchBudgetHistorySignal(
		const FHyperTwistCoachBrief& BaseBrief,
		const FHyperTwistCoachSignal& LaunchBudgetHistorySignal
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachScheduleHorizonSummary DeriveCoachScheduleHorizonSummary(
		const FHyperTwistTrainingCoachSessionQueueState& QueueState,
		const FHyperTwistTrainingCoachArchivePolicySummary& ArchivePolicySummary,
		const FString& ReferenceUtc
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistCoachSchedulePolicySummary DeriveCoachSchedulePolicySummary(
		const FHyperTwistTrainingCoachSessionQueueState& QueueState,
		const FHyperTwistCoachScheduleHorizonSummary& HorizonSummary,
		const FHyperTwistTrainingCoachActionClosureSummary& ClosureSummary,
		const FHyperTwistTrainingCoachMemorySnapshot& CoachMemorySnapshot,
		const FHyperTwistTrainingCoachArchivePolicySummary& ArchivePolicySummary,
		const FString& ReferenceUtc
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static EHyperTwistTrainingCoachHandoffKind ResolvePrimaryCoachActionKind(
		const FHyperTwistTrainingCoachPanelState& PanelState
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachPrimaryActionSurface DerivePrimaryCoachActionSurface(
		const FHyperTwistTrainingCoachPanelState& PanelState
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachQueueControlSurface DeriveCoachQueueControlSurface(
		const FHyperTwistTrainingCoachSessionQueueState& QueueState,
		const FHyperTwistTrainingCoachPanelState& PanelState
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachQueueRecoveryPostureSurface
	DeriveCoachQueueRecoveryPostureSurface(
		const FHyperTwistCoachSchedulePolicySummary& SchedulePolicySummary,
		const FHyperTwistTrainingCoachSessionQueueExecutionSummary& QueueExecutionSummary,
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachPrimaryActionSurface& PrimaryActionSurface,
		const FHyperTwistTrainingCoachQueueControlSurface& QueueControlSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachHandoffContinuationSurface
	DeriveCoachHandoffContinuationSurface(
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachPrimaryActionSurface& PrimaryActionSurface,
		const FHyperTwistTrainingCoachQueueControlSurface& QueueControlSurface,
		const FHyperTwistTrainingCoachQueueRecoveryPostureSurface& QueueRecoveryPostureSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachFocusProvenanceSurface
	DeriveCoachFocusProvenanceSurface(
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachPrimaryActionSurface& PrimaryActionSurface,
		const FHyperTwistTrainingCoachQueueControlSurface& QueueControlSurface,
		const FHyperTwistTrainingCoachQueueRecoveryPostureSurface& QueueRecoveryPostureSurface,
		const FHyperTwistTrainingCoachHandoffContinuationSurface& HandoffContinuationSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachWorkloadBudgetSurface
	DeriveCoachWorkloadBudgetSurface(
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachQueueRecoveryPostureSurface& QueueRecoveryPostureSurface,
		const FHyperTwistTrainingCoachHandoffContinuationSurface& HandoffContinuationSurface,
		const FHyperTwistTrainingCoachFocusProvenanceSurface& FocusProvenanceSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachReadinessEligibilitySurface
	DeriveCoachReadinessEligibilitySurface(
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachPrimaryActionSurface& PrimaryActionSurface,
		const FHyperTwistTrainingCoachQueueControlSurface& QueueControlSurface,
		const FHyperTwistTrainingCoachQueueRecoveryPostureSurface& QueueRecoveryPostureSurface,
		const FHyperTwistTrainingCoachHandoffContinuationSurface& HandoffContinuationSurface,
		const FHyperTwistTrainingCoachFocusProvenanceSurface& FocusProvenanceSurface,
		const FHyperTwistTrainingCoachWorkloadBudgetSurface& WorkloadBudgetSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachVerificationRecognitionReviewContextSurface
	DeriveCoachVerificationRecognitionReviewContextSurface(
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachFocusProvenanceSurface& FocusProvenanceSurface,
		const FHyperTwistTrainingCoachWorkloadBudgetSurface& WorkloadBudgetSurface,
		const FHyperTwistTrainingCoachReadinessEligibilitySurface& ReadinessEligibilitySurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeLaunchExecutionContextSurface
	DeriveCoachGeneratedModeLaunchExecutionContextSurface(
		const FHyperTwistTrainingCoachPanelState& PanelState,
		const FHyperTwistTrainingCoachReadinessEligibilitySurface& ReadinessEligibilitySurface,
		const FHyperTwistTrainingCoachVerificationRecognitionReviewContextSurface&
			VerificationRecognitionReviewContextSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorApplicationContextSurface
	DeriveCoachGeneratedModeSelectorApplicationContextSurface(
		const FHyperTwistTrainingDeck& ActiveDeck,
		const FHyperTwistTrainingImportedRuntimeSelectionState& ImportedRuntimeSelectionState,
		const FHyperTwistTrainingImportedGeneratedModeLaunchConfig& LaunchConfig,
		const FHyperTwistTrainingCoachGeneratedModeLaunchExecutionContextSurface&
			LaunchExecutionContextSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorRosterSurface
	DeriveCoachGeneratedModeSelectorRosterSurface(
		const FHyperTwistTrainingDeck& ActiveDeck,
		const FHyperTwistTrainingImportedRuntimeSelectionState& ImportedRuntimeSelectionState,
		const FHyperTwistTrainingCoachGeneratedModeSelectorApplicationContextSurface&
			SelectorApplicationContextSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface
	DeriveCoachGeneratedModeSelectorOptionMenuSurface(
		const FHyperTwistTrainingDeck& ActiveDeck,
		const FHyperTwistTrainingImportedRuntimeSelectionState& ImportedRuntimeSelectionState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorRosterSurface& SelectorRosterSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionActionabilitySurface
	DeriveCoachGeneratedModeSelectorOptionActionabilitySurface(
		const FHyperTwistTrainingDeck& ActiveDeck,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionDispatchSurface
	DeriveCoachGeneratedModeSelectorOptionDispatchSurface(
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionActionabilitySurface&
			OptionActionabilitySurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionExecutionImpactSurface
	DeriveCoachGeneratedModeSelectorOptionExecutionImpactSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeLaunchExecutionContextSurface&
			LaunchExecutionContextSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionDispatchSurface& OptionDispatchSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionRequestAlignmentSurface
	DeriveCoachGeneratedModeSelectorOptionRequestAlignmentSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionDispatchSurface& OptionDispatchSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionExecutionImpactSurface&
			OptionExecutionImpactSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionStoredRequestDeltaSurface
	DeriveCoachGeneratedModeSelectorOptionStoredRequestDeltaSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionDispatchSurface& OptionDispatchSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionRequestAlignmentSurface&
			OptionRequestAlignmentSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionDispatchSurface& OptionDispatchSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionRequestAlignmentSurface&
			OptionRequestAlignmentSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestMetadataPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionLaunchRequestMetadataPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestEnvelopePreviewSurface
	DeriveCoachGeneratedModeSelectorOptionLaunchRequestEnvelopePreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionCasePreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionCasePreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestEnvelopePreviewSurface&
			OptionLaunchRequestEnvelopePreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionPromptPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionPromptPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionDeliveryPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionDeliveryPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionPuzzleSubsetDifficultyPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionPuzzleSubsetDifficultyPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionProvenancePreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionProvenancePreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionDeckTitleSelectionPolicyPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionDeckTitleSelectionPolicyPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionDeckIdRuntimeSurfaceRetentionPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionDeckIdRuntimeSurfaceRetentionPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionDeliveryModeRosterAllowedModeRetentionPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionDeliveryModeRosterAllowedModeRetentionPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionRealScrambleVirtualCubeSmartCubeCapabilityRetentionPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionRealScrambleVirtualCubeSmartCubeCapabilityRetentionPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionTimingPolicyRetentionPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionTimingPolicyRetentionPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDetailRetentionPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhasePhaseIdLabelFallbackProvenancePreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseDuplicatePruningSurvivorProvenancePreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseNormalizationSummaryPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseNormalizationSummaryPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseRawRowNormalizedPhaseFusionPreviewSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseRawRowNormalizedPhaseFusionPreviewSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionCanonicalInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionCanonicalInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionSurvivorPhaseRosterInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionSurvivorPhaseRosterInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionDroppedRowAuditInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionDroppedRowAuditInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionPhaseIdFallbackRosterInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionPhaseIdFallbackRosterInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionExplicitLabelRosterInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionExplicitLabelRosterInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionSummaryInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionSummaryInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionRosterPairInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionRosterPairInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterPhaseIdLookupInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterPhaseIdLookupInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		const FString& PhaseId,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterNormalizedOrderLookupInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterNormalizedOrderLookupInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		int32 NormalizedOrder,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);

	UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
	static FHyperTwistTrainingCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterEvaluationOrderLookupInspectSurface
	DeriveCoachGeneratedModeSelectorOptionOwnedExecutionSplitPhaseCurrentSelectionLabelProvenancePartitionMergedOrderedRosterEvaluationOrderLookupInspectSurface(
		const FHyperTwistTrainingRunState& RunState,
		const FString& SelectorId,
		int32 EvaluationOrder,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionMenuSurface& OptionMenuSurface,
		const FHyperTwistTrainingCoachGeneratedModeSelectorOptionLaunchRequestPreviewSurface&
			OptionLaunchRequestPreviewSurface
	);
};
