#pragma once

#include "CoreMinimal.h"

namespace HyperTwistRuntimeDiagnostics
{
	/**
	 * Initialize the per-process diagnostics file. The optional
	 * -HyperTwistDiagnosticsLog=<absolute-path> command-line value overrides the
	 * normal Saved/Logs/HyperTwistRuntime-latest.log destination.
	 */
	UNREALHYPERTWIST_API bool InitializeSession();

	/** Return the resolved direct diagnostics path for this process. */
	UNREALHYPERTWIST_API FString GetDiagnosticsLogPath();

	/**
	 * Append a timestamped semantic event without relying on UE_LOG. This
	 * remains available in stock Shipping builds where engine logging is
	 * compiled out.
	 */
	UNREALHYPERTWIST_API bool AppendEvent(
		const FString& Stage,
		const FString& Message);

	/** True only when the packaged process explicitly requests a semantic-ready frame. */
	UNREALHYPERTWIST_API bool IsReadyFrameCaptureRequested();

	/** Capture the complete game window, including Slate, into Saved diagnostics evidence. */
	UNREALHYPERTWIST_API bool RequestReadyFrameCapture(const FString& SurfaceId);
}
