---
title: "QuartzUICoreContract: declaration reference"
description: "Quartz UI 0.57.0-dev: QuartzUICoreContract: declaration reference. Source-reviewed guidance, usage and limitations."
status: approved
visibility: public
sourceRevision: fe5b709ec900e282b50e58b819a25041945005f9
reviewedAt: 2026-09-24
---

# QuartzUICoreContract: 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](https://betterbuilt.games/docs/quartz-ui/evidence).

Pinned source (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h`) · [integration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) · [practical guide](https://betterbuilt.games/docs/quartz-ui/providers-contracts)

## FQuartzUIEmptyContract

**Advanced type.** Empty JSON object used by parameterless built-in requests. Wire role: result of `quartzui.action` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.action', payload)` with the generated exact payload; this type is its result. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L13`)

## FQuartzUIInputStateContract

**Advanced type.** Exact browser-facing input snapshot published as quartzui.input. Wire role: payload of `quartzui.input` (state).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeState('quartzui.input', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L20`)

## FQuartzUIBoundActionStateContract

**Advanced type.** Exact browser-facing contextual action snapshot. Wire role: payload of `quartzui.actions` (state).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeState('quartzui.actions', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L39`)

## FQuartzUIShellStateContract

**Advanced type.** Retained-document screen and Unreal-owned input intent published as quartzui.shell. Wire role: payload of `quartzui.shell` (state).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeState('quartzui.shell', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L49`)

## FQuartzUINotificationEventContract

**Advanced type.** One bounded localized notification emitted through quartzui.notifications. Wire role: payload of `quartzui.notifications` (event).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeEvent('quartzui.notifications', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L65`)

## FQuartzUIActionRequestContract

**Advanced type.** Strict web-to-Unreal named action request accepted only by explicit registrations. Wire role: payload of `quartzui.action` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.action', payload)` with the generated exact payload; this type is its payload. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L78`)

## FQuartzUISoundRequestContract

**Advanced type.** Semantic UI-audio cue selected by the page and rendered by project code. Wire role: payload of `quartzui.sound.play` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.sound.play', payload)` with the generated exact payload; this type is its payload. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L88`)

## FQuartzUISoundResultContract

**Advanced type.** Whether the exact player's project audio listener received the cue. Wire role: result of `quartzui.sound.play` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.sound.play', payload)` with the generated exact payload; this type is its result. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L98`)

## FQuartzUILoadingStateContract

**Advanced type.** Exact browser-facing loading presentation published as quartzui.loading. Wire role: payload of `quartzui.loading` (state).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeState('quartzui.loading', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L111`)

## FQuartzUINavigationEventContract

**Advanced type.** Navigation Event Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: payload of `quartzui.navigation` (event).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeEvent('quartzui.navigation', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L132`)

## FQuartzUIBackEventContract

**Advanced type.** Back Event Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: payload of `quartzui.back` (event).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.subscribeEvent('quartzui.back', value => { /* read this DTO */ })`. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L141`)

## FQuartzUIBackResultContract

**Advanced type.** Request and echoed result for web-first Back ownership. Wire role: payload of `quartzui.back.resolve` (request), result of `quartzui.back.resolve` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.back.resolve', payload)` with the generated exact payload; this type is its payload. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L151`)

## FQuartzUIPingRequestContract

**Advanced type.** Ping Request Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: payload of `quartzui.ping` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.ping', payload)` with the generated exact payload; this type is its payload. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L163`)

## FQuartzUIPingResultContract

**Advanced type.** Ping Result Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: result of `quartzui.ping` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.ping', payload)` with the generated exact payload; this type is its result. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L172`)

## FQuartzUIAccessibilityAnnouncementRequestContract

**Advanced type.** Accessibility Announcement Request Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: payload of `quartzui.accessibility.announce` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.accessibility.announce', payload)` with the generated exact payload; this type is its payload. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L187`)

## FQuartzUIAccessibilityAnnouncementResultContract

**Advanced type.** Accessibility Announcement Result Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: result of `quartzui.accessibility.announce` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.accessibility.announce', payload)` with the generated exact payload; this type is its result. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L196`)

## FQuartzUISceneBackdropRegionContract

**Advanced type.** Scene Backdrop Region Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below.

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Generate -App=core; use wire-catalog.md for subscriptions/requests. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L208`)

## FQuartzUISceneBackdropRequestContract

**Advanced type.** Scene Backdrop Request Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: payload of `quartzui.backdrop.update` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.backdrop.update', payload)` with the generated exact payload; this type is its payload. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L235`)

## FQuartzUISceneBackdropResultContract

**Advanced type.** Scene Backdrop Result Contract: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below. Wire role: result of `quartzui.backdrop.update` (request).

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** `client.request('quartzui.backdrop.update', payload)` with the generated exact payload; this type is its result. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L256`)

## EQuartzUIContractMessageKind

**Advanced type.** Contract Message Kind: a declared type in immutable middleware wire dtos and message catalog; use its exact fields/operations below.

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Generate -App=core; use wire-catalog.md for subscriptions/requests. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L271`)

## FQuartzUIContractMessageDeclaration

**Advanced type.** One explicit wire name and its reflected DTOs; no runtime class scan occurs.

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Generate -App=core; use wire-catalog.md for subscriptions/requests. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L280`)

## FQuartzUIContractManifest

**Advanced type.** Native manifest accepted by the Editor generator and extensible by project C++ code.

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Generate -App=core; use wire-catalog.md for subscriptions/requests. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L297`)

## FQuartzUICoreContract

**Advanced type.** C++ source of truth for the middleware-owned protocol-v1 surface.

**Prerequisites / integration:** Configured app, explicit reflected value types, saved assets and freshly generated app contract. Use the [QuartzUICoreContract recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuicorecontract) in the host module `QuartzUIRuntime`.

**Minimal example / lifecycle:** Generate -App=core; use wire-catalog.md for subscriptions/requests. Core identity is process-stable; messages are value copies.

**Avoid:** Copying core fingerprint into an app with providers. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: `Source/QuartzUIRuntime/Public/QuartzUICoreContract.h#L307`)

## Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

```cpp
#pragma once

#include "CoreMinimal.h"
#include "QuartzUIActions.h"
#include "QuartzUIGASContract.h"
#include "QuartzUIInput.h"
#include "QuartzUIPresentation.h"

#include "QuartzUICoreContract.generated.h"

/** Empty JSON object used by parameterless built-in requests. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUIEmpty"))
struct QUARTZUIRUNTIME_API FQuartzUIEmptyContract
{
	GENERATED_BODY()
};

/** Exact browser-facing input snapshot published as quartzui.input. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUIInputState"))
struct QUARTZUIRUNTIME_API FQuartzUIInputStateContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "modality"))
	EQuartzUIInputModality Modality = EQuartzUIInputModality::MouseAndKeyboard;

	UPROPERTY(meta = (QuartzUIName = "inputProfile"))
	FString InputProfile;

	UPROPERTY(meta = (QuartzUIName = "gamepadConnected"))
	bool bGamepadConnected = false;

	UPROPERTY(meta = (QuartzUIName = "glyphs"))
	TMap<FString, FQuartzUIResolvedInputGlyph> Glyphs;
};

/** Exact browser-facing contextual action snapshot. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUIBoundActionState"))
struct QUARTZUIRUNTIME_API FQuartzUIBoundActionStateContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "actions"))
	TArray<FQuartzUIBoundAction> Actions;
};

/** Retained-document screen and Unreal-owned input intent published as quartzui.shell. */
USTRUCT(BlueprintType, meta = (QuartzUITypeName = "QuartzUIShellState"))
struct QUARTZUIRUNTIME_API FQuartzUIShellStateContract
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Shell", meta = (QuartzUIName = "screen"))
	FString Screen;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Shell", meta = (QuartzUIName = "inputMode"))
	EQuartzUIInputMode InputMode = EQuartzUIInputMode::GameAndUI;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Shell", meta = (QuartzUIName = "visible"))
	bool bVisible = true;
};

/** One bounded localized notification emitted through quartzui.notifications. */
USTRUCT(BlueprintType, meta = (QuartzUITypeName = "QuartzUINotificationEvent"))
struct QUARTZUIRUNTIME_API FQuartzUINotificationEventContract
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Notifications", meta = (QuartzUIName = "id"))
	FString Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Notifications", meta = (QuartzUIName = "message"))
	FString Message;
};

/** Strict web-to-Unreal named action request accepted only by explicit registrations. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUIActionRequest"))
struct QUARTZUIRUNTIME_API FQuartzUIActionRequestContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "action"))
	FString Action;
};

/** Semantic UI-audio cue selected by the page and rendered by project code. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUISoundRequest"))
struct QUARTZUIRUNTIME_API FQuartzUISoundRequestContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "sound"))
	FString Sound;
};

/** Whether the exact player's project audio listener received the cue. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUISoundResult"))
struct QUARTZUIRUNTIME_API FQuartzUISoundResultContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "routed"))
	bool bRouted = false;

	UPROPERTY(meta = (QuartzUIName = "reason", QuartzUIOptional, QuartzUIStringValues = "unhandled|rate-limited"))
	FString Reason;
};

/** Exact browser-facing loading presentation published as quartzui.loading. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUILoadingState"))
struct QUARTZUIRUNTIME_API FQuartzUILoadingStateContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "title"))
	FString Title;

	UPROPERTY(meta = (QuartzUIName = "detail"))
	FString Detail;

	UPROPERTY(meta = (QuartzUIName = "progress"))
	float Progress = 0.0f;

	UPROPERTY(meta = (QuartzUIName = "indeterminate"))
	bool bIndeterminate = true;

	UPROPERTY(meta = (QuartzUIName = "revision"))
	int32 Revision = 0;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUINavigationEvent"))
struct QUARTZUIRUNTIME_API FQuartzUINavigationEventContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "action"))
	EQuartzUINavigationAction Action = EQuartzUINavigationAction::Next;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUIBackEvent"))
struct QUARTZUIRUNTIME_API FQuartzUIBackEventContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "requestId"))
	int64 RequestId = 0;
};

/** Request and echoed result for web-first Back ownership. */
USTRUCT(meta = (QuartzUITypeName = "QuartzUIBackResult"))
struct QUARTZUIRUNTIME_API FQuartzUIBackResultContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "requestId"))
	int64 RequestId = 0;

	UPROPERTY(meta = (QuartzUIName = "handled"))
	bool bHandled = false;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUIPingRequest"))
struct QUARTZUIRUNTIME_API FQuartzUIPingRequestContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "contractHash"))
	FString ContractHash;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUIPingResult"))
struct QUARTZUIRUNTIME_API FQuartzUIPingResultContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "protocol"))
	int32 Protocol = 1;

	UPROPERTY(meta = (QuartzUIName = "session"))
	int64 Session = 0;

	UPROPERTY(meta = (QuartzUIName = "contractHash"))
	FString ContractHash;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUIAccessibilityAnnouncementRequest"))
struct QUARTZUIRUNTIME_API FQuartzUIAccessibilityAnnouncementRequestContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "message"))
	FString Message;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUIAccessibilityAnnouncementResult"))
struct QUARTZUIRUNTIME_API FQuartzUIAccessibilityAnnouncementResultContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "announced"))
	bool bAnnounced = false;

	UPROPERTY(meta = (QuartzUIName = "reason", QuartzUIOptional, QuartzUIStringValues = "inactive|unavailable|rate-limited"))
	FString Reason;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUISceneBackdropRegion"))
struct QUARTZUIRUNTIME_API FQuartzUISceneBackdropRegionContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "effect", QuartzUIStringValues = "frost"))
	FString Effect;

	UPROPERTY(meta = (QuartzUIName = "x"))
	float X = 0.0f;

	UPROPERTY(meta = (QuartzUIName = "y"))
	float Y = 0.0f;

	UPROPERTY(meta = (QuartzUIName = "width"))
	float Width = 0.0f;

	UPROPERTY(meta = (QuartzUIName = "height"))
	float Height = 0.0f;

	UPROPERTY(meta = (QuartzUIName = "blur"))
	float Blur = 0.0f;

	UPROPERTY(meta = (QuartzUIName = "radius"))
	float Radius = 0.0f;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUISceneBackdropRequest"))
struct QUARTZUIRUNTIME_API FQuartzUISceneBackdropRequestContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "revision"))
	int32 Revision = 0;

	UPROPERTY(meta = (QuartzUIName = "viewportWidth"))
	int32 ViewportWidth = 0;

	UPROPERTY(meta = (QuartzUIName = "viewportHeight"))
	int32 ViewportHeight = 0;

	UPROPERTY(meta = (QuartzUIName = "devicePixelRatio"))
	float DevicePixelRatio = 1.0f;

	UPROPERTY(meta = (QuartzUIName = "regions"))
	TArray<FQuartzUISceneBackdropRegionContract> Regions;
};

USTRUCT(meta = (QuartzUITypeName = "QuartzUISceneBackdropResult"))
struct QUARTZUIRUNTIME_API FQuartzUISceneBackdropResultContract
{
	GENERATED_BODY()

	UPROPERTY(meta = (QuartzUIName = "revision"))
	int32 Revision = 0;

	UPROPERTY(meta = (QuartzUIName = "regions"))
	int32 Regions = 0;

	UPROPERTY(meta = (QuartzUIName = "stale"))
	bool bStale = false;
};

UENUM(BlueprintType)
enum class EQuartzUIContractMessageKind : uint8
{
	State,
	Event,
	Action,
	Request
};

/** One explicit wire name and its reflected DTOs; no runtime class scan occurs. */
struct QUARTZUIRUNTIME_API FQuartzUIContractMessageDeclaration
{
	EQuartzUIContractMessageKind Kind = EQuartzUIContractMessageKind::State;
	FString Name;
	const UScriptStruct* PayloadType = nullptr;
	const UScriptStruct* ResultType = nullptr;

	static FQuartzUIContractMessageDeclaration State(const TCHAR* Name, const UScriptStruct* PayloadType);
	static FQuartzUIContractMessageDeclaration Event(const TCHAR* Name, const UScriptStruct* PayloadType);
	static FQuartzUIContractMessageDeclaration Action(const TCHAR* Name, const UScriptStruct* PayloadType);
	static FQuartzUIContractMessageDeclaration Request(
		const TCHAR* Name,
		const UScriptStruct* PayloadType,
		const UScriptStruct* ResultType);
};

/** Native manifest accepted by the Editor generator and extensible by project C++ code. */
struct QUARTZUIRUNTIME_API FQuartzUIContractManifest
{
	FString ContractName = TEXT("quartzui.core");
	int32 Version = 1;
	TArray<FQuartzUIContractMessageDeclaration> Messages;
	/** Explicit provider classes reflected by the same runtime/generator schema. */
	TArray<const UClass*> Providers;
};

/** C++ source of truth for the middleware-owned protocol-v1 surface. */
class QUARTZUIRUNTIME_API FQuartzUICoreContract final
{
public:
	static FQuartzUIContractManifest BuildManifest();
	/** Checked-in runtime identity of the canonical generated core declarations. */
	static const TCHAR* GetContractHash();
};
```

Canonical HTML: https://betterbuilt.games/docs/quartz-ui/reference-quartzuicorecontract
