QuartzUIBridge: declaration reference
0.57.0-dev · beta source documentation. Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See validation and limits.
Pinned source (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h) · integration recipe · practical guide
FQuartzUIEndpointResult
Advanced type. Bounded object response returned by a registered game/UI endpoint.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L11)
UQuartzUIEndpointRequest
Advanced type. One pending Blueprint/C++ completion capability; never exposed to JavaScript.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L34)
FQuartzUIEndpointHandler
Advanced delegate. Synchronous Blueprint endpoint handler. Create Event supplies this delegate to UQuartzUIWidget.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L75)
FQuartzUIAsyncEndpointHandler
Advanced delegate. Asynchronous Blueprint handler; retain and complete Request after game work finishes.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L78)
FQuartzUINativeEndpointHandler
Advanced delegate. Synchronous native endpoint handler for Slate and C++ integrations.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L84)
FQuartzUINativeAsyncEndpointHandler
Advanced delegate. Native Async Endpoint Handler: callback signature for per-document native gateway, endpoint results and async request tokens.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L85)
FQuartzUIAsyncResponseHandler
Advanced delegate. Async Response Handler: callback signature for per-document native gateway, endpoint results and async request tokens.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L86)
FQuartzUIOutboundMessageHandler
Advanced delegate. Outbound Message Handler: callback signature for per-document native gateway, endpoint results and async request tokens.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L87)
FQuartzUIBackNavigationResultHandler
Advanced delegate. Back Navigation Result Handler: callback signature for per-document native gateway, endpoint results and async request tokens.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L88)
FQuartzUIClientReadyFailureHandler
Advanced delegate. Client Ready Failure Handler: callback signature for per-document native gateway, endpoint results and async request tokens.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L89)
FQuartzUIPendingAsyncRequest
Internal type. Pending Async Request: a declared type in per-document native gateway, endpoint results and async request tokens; use its exact fields/operations below.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. This named helper is runtime-owned; inspect/use it through the owner above rather than constructing it in gameplay.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L91)
UQuartzUIBridge
Advanced type. The single per-view UObject exposed to JavaScript as window.ue.quartzui. Only Request is reflected; gameplay objects are never bound into the page.
Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIBridge recipe in the host module QuartzUIRuntime.
Minimal example / lifecycle: Game code uses typed endpoints; native adapters register on the view/widget. One bridge per browser; session changes cancel requests.
Avoid: Exposing arbitrary UObject methods or bypassing origin policy. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.
Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIBridge.h#L107)
Complete header
Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.
#pragma once
#include "CoreMinimal.h"
#include "WebJSFunction.h"
#include "QuartzUIProtocol.h"
#include "QuartzUIBridge.generated.h"
/** Bounded object response returned by a registered game/UI endpoint. */
USTRUCT(BlueprintType)
struct QUARTZUIRUNTIME_API FQuartzUIEndpointResult
{
GENERATED_BODY()
UPROPERTY(BlueprintReadWrite, Category = "QuartzUI|Bridge")
bool bSuccess = true;
/** Must be a JSON object when bSuccess is true. */
UPROPERTY(BlueprintReadWrite, Category = "QuartzUI|Bridge")
FString PayloadJson = TEXT("{}");
/** Lowercase dotted stable code when bSuccess is false. */
UPROPERTY(BlueprintReadWrite, Category = "QuartzUI|Bridge")
FString ErrorCode;
UPROPERTY(BlueprintReadWrite, Category = "QuartzUI|Bridge")
FString ErrorMessage;
};
class UQuartzUIBridge;
/** One pending Blueprint/C++ completion capability; never exposed to JavaScript. */
UCLASS(BlueprintType)
class QUARTZUIRUNTIME_API UQuartzUIEndpointRequest final : public UObject
{
GENERATED_BODY()
public:
const FString& GetCorrelationId() const { return CorrelationId; }
UFUNCTION(BlueprintPure, Category = "QuartzUI|Bridge")
const FString& GetEndpointName() const { return EndpointName; }
UFUNCTION(BlueprintPure, Category = "QuartzUI|Bridge")
bool IsPending() const { return bPending; }
/** Resolves the browser Promise once; payload must be bounded object JSON. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|Bridge")
bool CompleteSuccess(const FString& PayloadJson = TEXT("{}"));
/** Rejects the browser Promise once with a project-owned stable error. */
UFUNCTION(BlueprintCallable, Category = "QuartzUI|Bridge")
bool CompleteFailure(const FString& ErrorCode, const FString& ErrorMessage);
private:
void Initialize(UQuartzUIBridge* InBridge, const FString& InCorrelationId, const FString& InEndpointName);
void MarkCompleted();
UPROPERTY(Transient)
TWeakObjectPtr<UQuartzUIBridge> Bridge;
UPROPERTY(Transient)
FString CorrelationId;
UPROPERTY(Transient)
FString EndpointName;
UPROPERTY(Transient)
bool bPending = false;
friend class UQuartzUIBridge;
};
/** Synchronous Blueprint endpoint handler. Create Event supplies this delegate to UQuartzUIWidget. */
DECLARE_DYNAMIC_DELEGATE_RetVal_OneParam(FQuartzUIEndpointResult, FQuartzUIEndpointHandler, const FString&, PayloadJson);
/** Asynchronous Blueprint handler; retain and complete Request after game work finishes. */
DECLARE_DYNAMIC_DELEGATE_TwoParams(
FQuartzUIAsyncEndpointHandler,
const FString&, PayloadJson,
UQuartzUIEndpointRequest*, Request);
/** Synchronous native endpoint handler for Slate and C++ integrations. */
DECLARE_DELEGATE_RetVal_OneParam(FQuartzUIEndpointResult, FQuartzUINativeEndpointHandler, const FString&);
DECLARE_DELEGATE_TwoParams(FQuartzUINativeAsyncEndpointHandler, const FString&, UQuartzUIEndpointRequest*);
DECLARE_DELEGATE_TwoParams(FQuartzUIAsyncResponseHandler, bool, const FString&);
DECLARE_DELEGATE_OneParam(FQuartzUIOutboundMessageHandler, const FString&);
DECLARE_DELEGATE_TwoParams(FQuartzUIBackNavigationResultHandler, int64, bool);
DECLARE_DELEGATE_OneParam(FQuartzUIClientReadyFailureHandler, const FString&);
struct FQuartzUIPendingAsyncRequest
{
FString EndpointName;
int64 SessionId = 0;
double DeadlineSeconds = 0.0;
FQuartzUIAsyncResponseHandler ResponseHandler;
};
struct FQuartzUIAsyncTickerState;
struct FQuartzUIStateFlushTickerState;
/**
* The single per-view UObject exposed to JavaScript as window.ue.quartzui.
* Only Request is reflected; gameplay objects are never bound into the page.
*/
UCLASS(BlueprintType)
class QUARTZUIRUNTIME_API UQuartzUIBridge final : public UObject
{
GENERATED_BODY()
public:
UQuartzUIBridge(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
static constexpr int32 MaxRegisteredEndpoints = 64;
static constexpr int32 MaxStateSnapshots = FQuartzUIProtocolV1::MaxStatePatchEntries;
static constexpr int32 MaxPendingEvents = 64;
static constexpr int32 MaxPendingAsyncRequests = 32;
static constexpr float MinAsyncTimeoutSeconds = 0.05f;
static constexpr float MaxAsyncTimeoutSeconds = 30.0f;
/** Called by Unreal's JavaScript proxy. Resolves or rejects the returned JavaScript Promise exactly once. */
UFUNCTION()
void Request(const FString& EnvelopeJson, FWebJSResponse Response);
/** Starts a new security/session boundary for the target document. */
void BeginNavigation(const FString& Url);
/** Sets this view's exact generated contract before navigation/handshake. */
bool SetContractHash(const FString& InContractHash);
const FString& GetContractHash() const { return ContractHash; }
/** Replaces the default MVP origin with the exact packaged app owned by this view. */
bool SetAllowedPackagedOrigin(const FString& Origin);
/** Restricts all document frames to this view's packaged or active Editor origin. */
bool IsDocumentNavigationAllowed(const FString& Url) const;
#if WITH_EDITOR
/** Allows one validated Editor Vite origin; this method and state do not exist in packaged builds. */
bool SetAllowedDevelopmentOrigin(const FString& Origin);
#endif
/** Native, deterministic dispatch entry point used by Request and automation. */
bool TryHandleRequest(const FString& EnvelopeJson, FString& OutResponseJson);
/** Registers a Blueprint-owned handler. The web page cannot call this non-reflected method. */
bool RegisterEndpoint(const FString& EndpointName, const FQuartzUIEndpointHandler& Handler);
/** Registers a C++ handler. Names are unique across Blueprint and native handlers. */
bool RegisterNativeEndpoint(const FString& EndpointName, const FQuartzUINativeEndpointHandler& Handler);
/** Registers a bounded Blueprint async handler without exposing it to JavaScript. */
bool RegisterAsyncEndpoint(
const FString& EndpointName,
const FQuartzUIAsyncEndpointHandler& Handler,
float TimeoutSeconds = 5.0f);
/** Native async equivalent. Completion may occur on a later game-thread tick. */
bool RegisterNativeAsyncEndpoint(
const FString& EndpointName,
const FQuartzUINativeAsyncEndpointHandler& Handler,
float TimeoutSeconds = 5.0f);
bool UnregisterEndpoint(const FString& EndpointName);
void ClearEndpoints();
bool IsEndpointRegistered(const FString& EndpointName) const;
int32 GetRegisteredEndpointCount() const;
int32 GetPendingAsyncRequestCount() const { return PendingAsyncRequests.Num(); }
/** Deterministic async dispatch boundary used by Request and automation. */
bool TryHandleAsyncRequest(
const FString& EnvelopeJson,
const FQuartzUIAsyncResponseHandler& ResponseHandler,
bool& bOutWasAsyncEndpoint,
FString& OutImmediateResponseJson);
/** Coalesces the latest named object snapshot and replays it after navigation. */
bool PublishStateSnapshot(const FString& StateName, const FString& PayloadJson);
/** Validates and commits a complete named-state baseline atomically. */
bool PublishStateSnapshots(const TMap<FString, FString>& Snapshots);
/** Emits one transient object event now or queues it until the page handshakes. */
bool EmitEvent(const FString& EventName, const FString& PayloadJson);
/**
* Attempts to drain retained state and queued events immediately on the game thread.
* Returns true only when the ready, active bridge has no outbound work left.
*/
bool FlushOutboundMessagesNow();
void SetOutboundMessageHandler(const FQuartzUIOutboundMessageHandler& Handler);
void ClearOutboundMessageHandler();
/** Notifies the native presentation once when this document completes a valid ping. */
void SetClientReadyHandler(const FSimpleDelegate& Handler) { ClientReadyHandler = Handler; }
void ClearClientReadyHandler() { ClientReadyHandler.Unbind(); }
/** Notifies the presentation once when this document submits an invalid readiness ping. */
void SetClientReadyFailureHandler(const FQuartzUIClientReadyFailureHandler& Handler) { ClientReadyFailureHandler = Handler; }
void ClearClientReadyFailureHandler() { ClientReadyFailureHandler.Unbind(); }
/** Pauses JavaScript delivery while retaining bounded latest-state/event queues. */
bool SetOutboundSuspended(bool bSuspended);
bool IsOutboundSuspended() const { return bOutboundSuspended; }
bool IsOutboundClientReady() const { return bOutboundClientReady; }
int32 GetStateSnapshotCount() const { return StateSnapshots.Num(); }
int32 GetPendingEventCount() const { return PendingEvents.Num(); }
/** Installs the one reserved renderer endpoint; it is not part of the gameplay endpoint registry. */
void SetSceneBackdropHandler(const FQuartzUINativeEndpointHandler& Handler) { SceneBackdropHandler = Handler; }
void ClearSceneBackdropHandler() { SceneBackdropHandler.Unbind(); }
/** Installs the browser-owned platform announcement endpoint. */
void SetAccessibilityAnnouncementHandler(const FQuartzUINativeEndpointHandler& Handler) { AccessibilityAnnouncementHandler = Handler; }
void ClearAccessibilityAnnouncementHandler() { AccessibilityAnnouncementHandler.Unbind(); }
/** Installs the one reserved, strictly decoded named UI-action endpoint. */
void SetNamedActionHandler(const FQuartzUINativeEndpointHandler& Handler) { NamedActionHandler = Handler; }
void ClearNamedActionHandler() { NamedActionHandler.Unbind(); }
/** Installs the reserved exact-player semantic UI-sound endpoint. */
void SetSoundRequestHandler(const FQuartzUINativeEndpointHandler& Handler) { SoundRequestHandler = Handler; }
void ClearSoundRequestHandler() { SoundRequestHandler.Unbind(); }
/**
* Offers one Back request to the ready packaged page. Only one request may be
* pending per document; the caller owns the bounded native fallback timer.
*/
bool RequestBackNavigation(int64 RequestId, const FQuartzUIBackNavigationResultHandler& Handler);
void CancelBackNavigationRequest();
bool HasPendingBackNavigationRequest() const { return PendingBackRequestId > 0; }
bool IsAvailable() const { return bAvailable; }
int64 GetSessionId() const { return SessionId; }
const FString& GetDocumentUrl() const { return DocumentUrl; }
int64 GetSucceededRequestCount() const { return SucceededRequests; }
int64 GetFailedRequestCount() const { return FailedRequests; }
int64 GetPublishedStateSnapshotCount() const { return PublishedStateSnapshots; }
int64 GetDispatchedStatePatchCount() const { return DispatchedStatePatches; }
int64 GetDispatchedStateValueCount() const { return DispatchedStateValues; }
int64 GetCoalescedStateWriteCount() const { return CoalescedStateWrites; }
int64 GetEmittedEventCount() const { return EmittedEvents; }
int64 GetStateBackpressureRejectionCount() const { return StateBackpressureRejections; }
int64 GetEventBackpressureRejectionCount() const { return EventBackpressureRejections; }
int64 GetStartedAsyncRequestCount() const { return StartedAsyncRequests; }
int64 GetTimedOutAsyncRequestCount() const { return TimedOutAsyncRequests; }
int64 GetAsyncBackpressureRejectionCount() const { return AsyncBackpressureRejections; }
virtual void BeginDestroy() override;
private:
friend struct FQuartzUIProviderRuntimeTestAccess;
bool CanRegisterEndpoint(const FString& EndpointName, bool bAllowReservedCoreName = false) const;
bool RegisterCoreNativeEndpoint(
const FString& EndpointName,
const FQuartzUINativeEndpointHandler& Handler);
bool RegisterCoreNativeAsyncEndpoint(
const FString& EndpointName,
const FQuartzUINativeAsyncEndpointHandler& Handler,
float TimeoutSeconds);
bool TryDispatchEndpoint(const FQuartzUIRequestEnvelope& RequestEnvelope, FString& OutResponseJson);
bool MakeFailure(
const FString& CorrelationId,
const FString& ErrorCode,
const FString& ErrorMessage,
FString& OutResponseJson);
void RecordResult(bool bSucceeded);
int64 NextOutboundSequence();
bool TryCreateOutbound(
EQuartzUIOutboundMessageType Type,
const FString& Name,
const FString& PayloadJson,
FQuartzUIOutboundEnvelope& OutEnvelope);
bool DispatchOutbound(const FQuartzUIOutboundEnvelope& Envelope);
bool DispatchNextStatePatch();
void FlushOutbound();
bool HandleStateFlushTicker(float DeltaTime);
void EnsureStateFlushTicker();
void StopStateFlushTicker();
FQuartzUIEndpointResult HandleBackNavigationResult(const FString& PayloadJson);
bool CompleteAsyncRequest(UQuartzUIEndpointRequest* Request, const FQuartzUIEndpointResult& Result);
bool CancelAsyncRequest(
const FString& CorrelationId,
const FString& ErrorCode,
const FString& ErrorMessage);
void CancelAsyncRequestsForEndpoint(
const FString& EndpointName,
const FString& ErrorCode,
const FString& ErrorMessage);
void CancelAllAsyncRequests(const FString& ErrorCode, const FString& ErrorMessage);
bool TickAsyncRequests(double CurrentTimeSeconds);
bool HandleAsyncTicker(float DeltaTime);
void EnsureAsyncTicker();
void StopAsyncTicker();
void NotifyClientReadyFailure(const FString& ErrorCode);
FString DocumentUrl;
FString ContractHash;
FString AllowedPackagedOrigin = TEXT("https://mvp.quartzui.test");
#if WITH_EDITOR
FString AllowedDevelopmentOrigin;
#endif
int64 SessionId = 0;
int64 SucceededRequests = 0;
int64 FailedRequests = 0;
int64 PublishedStateSnapshots = 0;
int64 DispatchedStatePatches = 0;
int64 DispatchedStateValues = 0;
int64 CoalescedStateWrites = 0;
int64 EmittedEvents = 0;
int64 StateBackpressureRejections = 0;
int64 EventBackpressureRejections = 0;
int64 StartedAsyncRequests = 0;
int64 TimedOutAsyncRequests = 0;
int64 AsyncBackpressureRejections = 0;
bool bAvailable = false;
TMap<FString, FQuartzUIEndpointHandler> BlueprintEndpointHandlers;
TMap<FString, FQuartzUINativeEndpointHandler> NativeEndpointHandlers;
TMap<FString, FQuartzUIAsyncEndpointHandler> BlueprintAsyncEndpointHandlers;
TMap<FString, FQuartzUINativeAsyncEndpointHandler> NativeAsyncEndpointHandlers;
TMap<FString, float> AsyncEndpointTimeouts;
TMap<FString, FQuartzUIPendingAsyncRequest> PendingAsyncRequests;
UPROPERTY(Transient)
TMap<FString, TObjectPtr<UQuartzUIEndpointRequest>> PendingAsyncRequestObjects;
TSharedPtr<FQuartzUIAsyncTickerState> AsyncTickerState;
TSharedPtr<FQuartzUIStateFlushTickerState> StateFlushTickerState;
bool bInsideAsyncTick = false;
bool bInsideStateFlushTick = false;
FQuartzUINativeEndpointHandler SceneBackdropHandler;
FQuartzUINativeEndpointHandler AccessibilityAnnouncementHandler;
FQuartzUINativeEndpointHandler NamedActionHandler;
FQuartzUINativeEndpointHandler SoundRequestHandler;
FQuartzUIBackNavigationResultHandler BackNavigationResultHandler;
TMap<FString, FQuartzUIOutboundEnvelope> StateSnapshots;
TSet<FString> DirtyStateNames;
TArray<FQuartzUIOutboundEnvelope> PendingEvents;
FQuartzUIOutboundMessageHandler OutboundMessageHandler;
FSimpleDelegate ClientReadyHandler;
FQuartzUIClientReadyFailureHandler ClientReadyFailureHandler;
int64 OutboundSequence = 0;
bool bOutboundClientReady = false;
bool bClientReadyFailureNotified = false;
bool bOutboundSuspended = false;
int64 PendingBackRequestId = 0;
int64 PendingBackSessionId = 0;
friend class UQuartzUIEndpointRequest;
friend class UQuartzUITypedEndpoint;
friend class UQuartzUIWidget;
friend struct FQuartzUIBridgeReservedEndpointTestAccess;
friend class FQuartzUIBridgeAsyncEndpointTest;
friend class FQuartzUIBridgeOutboundStateAndEventTest;
};